我正在尝试从 MATLAB 中图像的数组表示形式中提取特征。 这些特征具有圆形(环)和扇形的形状。如下图所示。我花了相当多的时间寻找一个可以做到这一点的内置函数。我已经设法使用一个丑陋的循环来进行环提取,但不知道从哪里开始扇区部分。任何关于如何在 MATLAB 中实现此功能甚至更好的内置函数的想法都会非常有帮助。
最佳答案
这非常简单,不需要 for 循环,例如,如果您的图像是 im
:
[x y]=meshgrid(1:size(im,1));
f =@(x0,y0,r_max,r_min,theta1,theta2) ...
(x-x0).^2+(y-y0).^2<=r_max^2 & ...
(x-x0).^2+(y-y0).^2>=r_min^2 & ...
atan2(y-y0,x-x0)>=theta1 & ...
atan2(y-y0,x-x0)<=theta2;
f
是一个单行匿名函数,它接受所有需要的参数并给出所需扇区的掩码。对于环,您可以将 theta 设置为 -pi 到 pi,或者直接删除 f
中的 atan
部分。例如
r_max=40;
r_min=10;
x0=round(size(im,1)/2); %image center
y0=round(size(im,1)/2); %image center
theta1=deg2rad(10);
theta2=deg2rad(70);
imagesc(f(x0,y0,r_max,r_min,theta1,theta2))
set(gca,'YDir','normal')
axis square
关于matlab - 从表示图像的数组中提取环/扇形区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23462086/