我试图检测从黑色水平线到灰色污点前景的边缘 . 所需的边缘/结果略微标记为红色 .
What have I tried so far :
我的方法是使用标准Chan-Vese分割结合几种预处理方法,如高斯模糊,最大过滤器或morpholigocal操作员如侵蚀 . 但是,当我在图像的下半部分初始化水平集功能时,轮廓会在假定的边缘之前被卡住 .
由于噪音无法在不破坏图像的重要信息的情况下消除,因此像sobel或prewitt过滤这样的简单方法可能会失败 .
我的另一个用途是搜索图像的最大/最小强度,并标记每列的最暗像素 . 你可以假设,这也会失败,因为我正在寻找的边缘不是唯一具有暗像素的部分,这就是为什么这种方法非常容易出错的原因 .
Edit
蛇也没有帮助 .
标记为蓝色的活动轮廓简单地越过边缘,左右两侧的轮廓卡住 . 我试过的代码是从here获取的函数Snake2D(I,P,Options) .
如果您想帮助我,这是原始图片 .
1 回答
我认为使用行并找到最大值的方法可能是最简单的 . 你遇到的一个问题是区分两个主要的最大值 . 为此,您可以应用粗略平滑,以找到两个最大值之间的中间位置(下图中的蓝线) . 然后,您只能获取您感兴趣的低位,并找到该位的最大值 . 在最后一步中,只需将两个指数相加即可 .
Result:
Could go like this:
Note: 你当然可以像任何其他图形一样平滑最后一行,以摆脱这样的颠簸:
其中10是你的平滑窗口(越宽越宽,见here .