Matlab中的角点检测

3

我正在尝试找到以下图像的角落:

enter image description here

我尝试了这段代码:

im = imread('layer2.png');
BW=im2bw(im, 100/256);
BW=~BW;
figure,imshow(BW);title('Original Image');
C = corner(BW,4);
hold on
plot(C(:,1), C(:,2), 'r.', 'MarkerSize',30);

但它检测到错误的角落,如下图所示:

enter image description here

出了什么问题?我该如何使其检测到真实的角落?


不确定,但你可以尝试使用“MinimumEigenvalue”调用corner函数。 - Rosa Gronchi
我尝试过了,但它没有检测到所有的角落!还有其他建议吗? - NESHOM
你可以在将图像发送到角点检测器之前尝试稍微模糊图像。 - Rosa Gronchi
2个回答

6
只需要在im2bw之前添加一行即可:
im = imdilate(im,strel('disk',2));

图片:

在此输入图片描述


(注意:本翻译为简体中文)

3
非常感谢,您能否请解释一下这行代码的作用? - NESHOM
1
@user114781,strel('disk',2)创建了一个圆盘形状的掩模。我使用这个掩模稍微平滑了一下边缘(imdilate,顾名思义,平滑了亮区域)。由于掩模的尺寸很小,所以四个90度角不会受到影响。谢谢。 - lennon310
我已经做了那件事。再次感谢。 - NESHOM

0
此外,还可以在MATLAB中查看cornermetric函数,该函数可以让您更好地控制在选择最终角点之前要应用的角度度量值的阈值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接