【问题标题】:Edge linking in MatlabMatlab中的边缘链接
【发布时间】:2021-08-01 21:07:25
【问题描述】:

我正在尝试链接图像中的边缘,如下图所示:

我尝试过使用膨胀/腐蚀操作,但结果并不好。有没有其他方法可以连接边缘?

这是原图:

【问题讨论】:

  • 这是边缘检测的输出吗?原始图像是什么样的?也许那里的一些转变会让事情变得更容易。
  • @CrisLuengo 是的,这是使用 U-Net 进行线检测的输出
  • 你能把edit的图片放到问题里吗?
  • @CrisLuengo 当然,我已经添加了它
  • 收到答案后请不要删除问题,对以后的读者有用。请接受答案。

标签: matlab image-processing edge-detection hough-transform


【解决方案1】:

您得到的结果很可能足以应用 Hough 变换,这将识别出图像中最重要的 8 条线。

我不知道您的所有图像是否都相似,但在您展示的示例中,很容易将灰色线条与绿色背景分开。例如,下面的代码(使用DIPimage,但也很容易用其他工具实现)将相对明亮的灰色与任何深色或彩色的东西区分开来:

img = readim('https://i.stack.imgur.com/vmBiF.jpg');
img = colorspace(img,'hsv');
img = (0.5-img{2})*img{3}; % img{2} is the saturation channel, img{3} is the value (intensity) channel
img = clip(img);           % set negative values to 0

接下来,一个拉普拉斯高斯滤波器(它是一个线检测器),一些阈值刚好高于零,并且仅选择较大的对象会导致检测到的线:

img = -laplace(img,5);       % LoG with sigma=5
img = img > 0.05;            % 0.05 is just above 0
img = areaopening(img,1000); % remove objects smaller than 1000 pixels

不用说,这在计算上比运行 U-Net 便宜很多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-25
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    • 1970-01-01
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多