matlab中选取圆形区域[Im1,PathName1] = uigetfile('*.jpg;*.tif;*.bmp','请输入条纹图像');Im=imread(Im1);Im=double(Im);Im=Im(:,:,1);[m,n]=size(Im);%imshow(A,[]);k1=150;k2=150;%设定k1、k2方便取一级频谱%figure;imshow(A(k1:m-k1,k2:n-
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/02 12:57:27
![matlab中选取圆形区域[Im1,PathName1] = uigetfile('*.jpg;*.tif;*.bmp','请输入条纹图像');Im=imread(Im1);Im=double(Im);Im=Im(:,:,1);[m,n]=size(Im);%imshow(A,[]);k1=150;k2=150;%设定k1、k2方便取一级频谱%figure;imshow(A(k1:m-k1,k2:n-](/uploads/image/z/6925950-54-0.jpg?t=matlab%E4%B8%AD%E9%80%89%E5%8F%96%E5%9C%86%E5%BD%A2%E5%8C%BA%E5%9F%9F%5BIm1%2CPathName1%5D+%3D+uigetfile%28%27%2A.jpg%3B%2A.tif%3B%2A.bmp%27%2C%27%E8%AF%B7%E8%BE%93%E5%85%A5%E6%9D%A1%E7%BA%B9%E5%9B%BE%E5%83%8F%27%29%3BIm%3Dimread%28Im1%29%3BIm%3Ddouble%28Im%29%3BIm%3DIm%28%3A%2C%3A%2C1%29%3B%5Bm%2Cn%5D%3Dsize%28Im%29%3B%25imshow%28A%2C%5B%5D%29%3Bk1%3D150%3Bk2%3D150%3B%25%E8%AE%BE%E5%AE%9Ak1%E3%80%81k2%E6%96%B9%E4%BE%BF%E5%8F%96%E4%B8%80%E7%BA%A7%E9%A2%91%E8%B0%B1%25figure%3Bimshow%28A%28k1%3Am-k1%2Ck2%3An-)
matlab中选取圆形区域[Im1,PathName1] = uigetfile('*.jpg;*.tif;*.bmp','请输入条纹图像');Im=imread(Im1);Im=double(Im);Im=Im(:,:,1);[m,n]=size(Im);%imshow(A,[]);k1=150;k2=150;%设定k1、k2方便取一级频谱%figure;imshow(A(k1:m-k1,k2:n-
matlab中选取圆形区域
[Im1,PathName1] = uigetfile('*.jpg;*.tif;*.bmp','请输入条纹图像');
Im=imread(Im1);Im=double(Im);Im=Im(:,:,1);[m,n]=size(Im);
%imshow(A,[]);
k1=150;k2=150;%设定k1、k2方便取一级频谱
%figure;imshow(A(k1:m-k1,k2:n-k2),[]);
%手动选取滤波区域,双击结束选取
%BW=imcrop(A);
%BW=jianqie(A,k1,k2);%矩形选取滤波区域
BW=roipoly(A(k1:m-k1,k2:n-k2));%多边形选取滤波区域
BW2=zeros(m,n);
BW2(k1:m-k1,k2:n-k2)=BW;
figure;imshow(BW2,[]);
这个是我师哥以前写的程序,其中imcrop可以提取矩形区域,jianqie就是一个简单的提取矩形的程序,roiploy可以提取多边形,我想问问,可不可以直接提取圆形啊?我知道多边形多画几条边就可以无限接近于圆,但是效果并不好,有没有一笔直接画出圆形的?
matlab中选取圆形区域[Im1,PathName1] = uigetfile('*.jpg;*.tif;*.bmp','请输入条纹图像');Im=imread(Im1);Im=double(Im);Im=Im(:,:,1);[m,n]=size(Im);%imshow(A,[]);k1=150;k2=150;%设定k1、k2方便取一级频谱%figure;imshow(A(k1:m-k1,k2:n-
哎,看来我上次没给你的问题解决彻底啊...
这个肯定是你想要的了,把这个function保存成.m文件.
它会让你选两个点,第一个点是圆心,第二个是圆上任意一点.
function roi = roicircle(img);
figure;imshow(img);
[y,x] = meshgrid(1:size(img,1),1:size(img,2));
p = ginput(1);
hold on; plot(p(1),p(2),'b*');
hold off;
p = [p; ginput(1)];
t_r = norm(p(2,:)-p(1,:));
[t,r] = cart2pol(y-p(1,1),x-p(1,2));
t(r>t_r) = nan;
r(r>t_r) = nan;
[yn,xn] = cart2pol(t,r);
roi = ~isnan(xn);
使用:
[Im1,PathName1] = uigetfile('*.jpg;*.tif;*.bmp','请输入条纹图像');
Im=imread(Im1);Im=double(Im);Im=Im(:,:,1);[m,n]=size(Im);
%imshow(A,[]);
k1=150;k2=150;%设定k1、k2方便取一级频谱
%figure;imshow(A(k1:m-k1,k2:n-k2),[]);
%手动选取滤波区域,双击结束选取
%BW=imcrop(A);
%BW=jianqie(A,k1,k2);%矩形选取滤波区域
BW=roicircle(A);%%%%%%圆形选取滤波区域%%%%%%%
figure; imshow(BW,[]);