matlab - 从表示图像的数组中提取环/扇形区域

标签 matlab

我正在尝试从 MATLAB 中图像的数组表示形式中提取特征。 这些特征具有圆形(环)和扇形的形状。如下图所示。我花了相当多的时间寻找一个可以做到这一点的内置函数。我已经设法使用一个丑陋的循环来进行环提取,但不知道从哪里开始扇区部分。任何关于如何在 MATLAB 中实现此功能甚至更好的内置函数的想法都会非常有帮助。

enter image description here

最佳答案

这非常简单,不需要 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

enter image description here

关于matlab - 从表示图像的数组中提取环/扇形区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23462086/

相关文章:

matlab - 神经网络训练matlab parfor问题

matlab - 将一个向量的每个元素乘以另一个向量的每个元素

C# 使用语法糖将数组拆分为单个变量

matlab - FOR 循环最快的语言

python - 将Matlab代码转换为Python时的"data type not understood"

MATLAB:.mat 版本之间的差异

matlab - 找到一个向量的移位,使与另一个向量的差异最小化

matlab - 录制语音时在 Matlab 中播放 wav

matlab - 如何在 Matlab 中使用 plot3 限制到某个区域?

matlab - 用于创建重复元素向量的 for/while/if 程序