【发布时间】:2016-02-07 14:48:31
【问题描述】:
我正在尝试检测从黑色水平线到灰色涂抹前景的边缘。 所需的边缘/结果略微标记为红色。
到目前为止我做了什么:
我的方法是使用标准的 Chan-Vese 分割和几种预处理方法,如高斯模糊、最大滤波器或腐蚀等形态运算符。但是,当我在图像的下部初始化水平集函数时,轮廓会卡在所需边缘之前。
由于噪声在不破坏图像的重要信息的情况下无法消除,因此简单的方法(如 sobel 或 prewitt 过滤)可能会失败。
我的另一种方法是按列搜索图像的最大/最小强度,并标记每列最暗的像素。 正如您可以假设的那样,这也会失败,因为我正在寻找的边缘不是唯一具有暗像素的部分,这就是为什么这种方法非常容易出错的原因。
编辑
蛇也无济于事。
标记为蓝色的活动轮廓只是越过边缘,在左右轮廓卡住了。我尝试的代码是取自here的函数Snake2D(I,P,Options)。
如果你想帮助我,这是原始图像。
【问题讨论】:
-
嗨!许多 OCR 程序使用Gabor filtering 进行边缘检测。也许你应该寻找这种方法。
-
你试过主动轮廓(又名蛇)吗?
-
我还没试过蛇。其中包含的梯度信息可能有助于获得所需的边缘。如果有帮助,我会编辑或回答我的问题。
-
不幸的蛇也无济于事。正如人们担心的那样,snakes 算法很容易陷入局部极值。
标签: matlab image-processing edge-detection