【问题标题】:Detecting thin lines in blurry image检测模糊图像中的细线
【发布时间】:2012-11-25 21:54:03
【问题描述】:

我正在寻找一些想法来检测所附图像中的线条。线条被假定为垂直,但它们的质量很差,每条模糊线条之间只有 2-3 个像素。

我已经尝试过这些方法: 垂直腐蚀和膨胀->增强效果好 CLAHE -> 有利于增强 Hough -> 失败,因为将图像转换为黑色 & while 会有太多的断线或桥接。 我也试过垂直线掩码。 基本上基于黑白图像转换的方法不适用于此。

【问题讨论】:

标签: image matlab image-processing opencv filtering


【解决方案1】:

我会沿着线条折叠图像以获得一维轮廓。并在那里进行检测(例如,通过查看中值以上的峰值。

这是折叠的图片

那里的物体检测很明显

【讨论】:

  • 似乎是一种有趣的方法。您是如何折叠列以获得如此好的一维轮廓的?
  • +1。可以只使用ys = sum(I,1)I 是灰度图像。此外,要找到最大值,您可以使用findpeaks(),也可以结合使用smooth() 来消除噪音。
  • 在此示例上效果很好,但如果旋转恰好导致顶部和底部相对于彼此偏移恰好一行,则会失败。您可以通过只从图像中间取一条小条纹来减少问题。
  • @mmgp 我只是通过求和来折叠列,作者明确地说“线被假定为垂直”,这正是我要解决的问题。如果它们确实是垂直的,则该过程肯定会起作用。如果它们只是稍微不垂直,那么处理它的方法是将 y 轴分成几个块,为每个块制作 1d 轮廓,检测那里的峰值。但无论如何,我并没有假装解决方案是 100% 最优的。它完成了解决特定问题的工作。我很确定它可以做得不同/更好。
  • 到目前为止,折叠是一个非常好的主意,谢谢。而且我认为对于有一些旋转的情况,我们必须用另一种方法找到旋转!你们有什么过滤方法可以进一步提高质量吗?这种情况下没有照明问题,旋转也可以在另一篇文章中讨论。
【解决方案2】:

这是另一种方法,假设峰值在约 5 个像素内很明显,可以找到线条。它将容忍图像的小幅旋转。

img = imread('http://i.stack.imgur.com/w7qMT.jpg');
img = rgb2gray(img);

%# smoothen the image a little with an anisotroic Gaussian
fimg = imfilter(double(img),fspecial('gaussian',[3 1]));

%# find the lines as local maxima
msk = ones(5);
msk(:,2:4) = 0;
lines = fimg > imdilate(fimg,msk);

【讨论】:

  • 然后您可以使用例如bwareaopen 删除一些虚假信号,您可以运行骨架化以使线条宽 1 个像素。
  • 这是一个很好的过滤方法。谢谢。但是你如何检测到这样的细线呢?例如,在黑色区域底部的线条是 e.g. 的情况下。剩下的 20% 的行,如果我们只寻找峰值,这些不会被淘汰吗?
  • @Hamed 我可以看到从这里开始的一种方法就是通过多数投票。选择第一条线,如果在x 位置有一个白点,那么目前,你说有一条垂直线经过x。对每一行重复。如果在给定位置x 你得到大部分行“说”x 上有一个白点,那么你在x 上画一个垂直传递。如果你不细化线条(我相信 Jonas 拼错了,你不想在这里获得骨架),那么你可能会得到多条相邻的线,这些线可以很容易地折叠成一条。
  • @Hamed:这里输出的是分割结果。您需要从行中提取哪些信息?
  • 我实际上需要检索大约完美的线条来重建图像。回答您的问题,行数也很重要,但如果它们被很好地突出显示,计算它们不是问题。谢谢。
【解决方案3】:

关于噪声图像中微弱边缘检测的非常有前途的工作: 直线的基本版本: http://www.wisdom.weizmann.ac.il/~meirav/EdgesGalunBasriBrandt.pdf 更高级的版本: http://www.wisdom.weizmann.ac.il/~meirav/Curves_Alpert_Galun_Nadler_Basri.pdf

我不确定作者是否公开了他们的代码。直接联系作者可能是值得的。

这些作品提出了一种经过充分研究和原则性的方法来检测微弱边缘。

【讨论】:

猜你喜欢
  • 2017-12-21
  • 2013-10-26
  • 2021-04-26
  • 1970-01-01
  • 2011-07-08
  • 1970-01-01
  • 1970-01-01
  • 2018-04-04
  • 1970-01-01
相关资源
最近更新 更多