边缘检测方法优于Canny边缘检测

obe*_*lix 4 image-processing computer-vision edge-detection

是否有一种边缘检测方法比Canny边缘检测器的性能要好得多

old*_*ufo 15

有不同类型的"边缘",这取决于你的任务.请看ICCV-2013 最近的论文" 哪条边缘重要? ",并对几种方法进行了比较:

  • 超参数等值线图 - P. Arbelaez,M.Maire,C.Fowlkes和J. Malik的"轮廓检测和分层图像分割" - 上面比较的最佳结果.
  • 标准化切割 - J. Shi和J. Malik的"标准化切割和图像分割".
  • 均值漂移 - "均值漂移:一种强大的特征空间分析方法",作者是D. Comanicu和P. Meer.
  • Felzenszwalb和Huttenlocher方法 - Felzenszwalb和Huttenlocher的 "高效的基于图形的图像分割".
  • BiCE - CL Zitnick的"二进制相干边描述符".
  • N4-Fields - Ganin et.al的"N4-Fields:图像变换的神经网络最近邻域"
  • RDS - "学习放松深度监督以更好地检测边缘",Liu和Lew
  • COB - Maninis等人的"卷积导向边界".

  • 它们几乎没有在OpenCV中实现。但是对于大多数人来说,在他们的寻呼机上都有一个作者实现,只需用谷歌搜索即可。 (2认同)

San*_*osh 5

希望这对将来的读者有所帮助

主动Canny:使用开放主动轮廓模型进行边缘检测和恢复

这是显示其性能的图像 图片

实施它是一个痛苦。我正在尝试使用OpenCV和Python实现它

这是我发现的另一篇论文。

基于各向异性边缘的球囊主动轮廓

在此处输入图片说明

在此处输入图片说明


Vla*_*lad 1

“更好”这个词需要一些解释。我个人认为 Canny 边缘检测器速度慢且 \xe2\x80\xa6 不稳定,原因很简单:它使用一组高度非线性的算法,执行太多复杂的操作(分割、非最大值抑制等),这使得它极不稳定且对噪声敏感。是的,它可以拉出弱边缘,但\xe2\x80\x98blinking\'和噪声太高,无法很好地用于匹配应用程序。另一方面,像 Sobel 这样简单的操作是线性且稳定的,因此为了匹配,我会使用 Sobel 而不是 Canny。例如,如果您对文本检测感兴趣,那么您可能需要使用连接组件或 MSER 来提取特征,而不是边缘。关键是,这个术语“更好”很大程度上取决于您的应用程序。

\n\n

最后但并非最不重要的一点 - 从算法的角度开始思考你的项目是错误的,但这种做法却经常发生!考虑一下你的目标、特征、概率的操作定义,然后才是实施。“我们写下的不是解决问题的步骤,而是问题本身”——正如西蒙·普林斯雄辩地说的那样。因此,如果你对更好的算法有疑问,但你真的想更好地理解计算机视觉,我强烈建议你购买他的书(这本书非常可读,插图丰富,激励人心,是我所知道的关于计算机视觉的最好的温和介绍) 。与此相反的是经典的 Heartly 和 Zisserman 的多视图几何,它是公式的重要来源,但遗憾的是非常不可读。

\n