【问题标题】:Corner detection in MatlabMatlab中的角点检测
【发布时间】:2014-01-10 20:37:38
【问题描述】:

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

我试过这段代码:

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);

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

怎么了?我怎样才能让它检测到真正的角落?

【问题讨论】:

  • 不确定,但您可以尝试使用“MinimumEigenvalue”调用角
  • 我试过了,但它没有检测到所有的角落!还有其他建议吗?
  • 你可以在发送到角检测器之前尝试模糊一下图像

标签: matlab image-processing


【解决方案1】:

im2bw前加一行:

im = imdilate(im,strel('disk',2));

图片:

【讨论】:

  • 非常感谢,能解释一下这条线是做什么的吗?
  • @user114781, strel('disk',2) 创建一个圆盘形掩码。我使用这个蒙版稍微平滑边缘(imdilate,就像它的名字一样,平滑地扩大明亮区域)。由于遮罩尺寸小,4个90度角不会受到影响。谢谢
  • 我就是这么做的。谢谢阿甘。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 2016-06-26
    • 1970-01-01
    • 1970-01-01
    • 2020-06-06
    • 1970-01-01
    • 2014-01-31
    相关资源
    最近更新 更多