【发布时间】:2014-03-30 16:10:16
【问题描述】:
是否有一种边缘检测方法的性能明显优于比 Canny 边缘检测器??
【问题讨论】:
标签: image-processing computer-vision edge-detection
是否有一种边缘检测方法的性能明显优于比 Canny 边缘检测器??
【问题讨论】:
标签: image-processing computer-vision edge-detection
有不同类型的“边缘”,这取决于您的任务。看看 ICCV-2013 最近的论文“Which edges matters?”,比较了几种方法:
【讨论】:
希望这对未来的读者有所帮助
Active Canny: Edge Detection and Recovery with Open Active Contour Models
实施它是一种痛苦。 我正在尝试使用 OpenCV 和 Python 来实现它
这是我找到的另一篇论文。
【讨论】:
使用深度学习的整体嵌套边缘检测 (HED) 现已集成到 OpenCV 的深度学习模块中。它在边缘检测方面比 Canny 好得多,但速度有点慢。 这是论文中的一个数字,将结果与 canny 进行了比较。 很棒的是,如果你现在想在 OpenCV 中运行这个方法,你只需要几行代码就可以做到。这篇博文有更多细节:Running Deep Learning based Edge detection in OpenCV
【讨论】:
更好这个词需要一些解释。我个人认为 Canny 边缘检测器很慢而且……不稳定,原因很简单:它使用了一组高度非线性的算法,这些算法执行了太多复杂的操作(分割、非最大抑制等),这使得它非常不稳定并且对噪音。是的,它可以拉出弱边缘,但“闪烁”和噪声太高而无法很好地用于匹配应用程序。另一方面,像 Sobel 这样简单的操作是线性且稳定的,所以为了匹配,我会使用 Sobel 而不是 Canny。例如,如果您对文本检测感兴趣,那么您可能希望使用连接组件或 MSER 来代替边缘来提取您的特征。关键是,更好的术语在很大程度上取决于您的应用程序。
最后但并非最不重要的一点 - 从算法的角度开始考虑您的项目是错误的,但它经常这样做!想想你的目标、特征、概率的操作定义,然后才是实施。 “我们写的不是解决问题的步骤,而是问题本身”——正如西蒙·普林斯雄辩地指出的那样。因此,如果您对更好的算法有疑问,但您确实想更好地了解计算机视觉,我强烈建议您购买his book(这本书可读性强,插图丰富,激励人心,是我所知道的对计算机视觉的最温和的介绍)。光谱的另一面是经典的 Heartly 和 Zisserman 的 Multiple View geometry,它是公式的重要来源,但遗憾的是非常不可读。
【讨论】:
Canny边缘检测方法是比较常用的边缘检测方法之一。正如old-ufo所说,边缘检测方法没有好坏之分。
不过,在 old-ufo 的回答之上,我想再向您介绍 2 种边缘检测方法。
Sobel - 检测图像边缘的方法可以通过定位梯度高于其邻居的像素位置来执行。
Gaussian based methods - 使用高斯的边缘检测方法。
如果你问我,我真的很喜欢 DoG(高斯差),尤其是当我试图获得对象的轮廓/形状(当对象嘈杂时)等时。非常有用。
但总而言之,它确实基于您想要实现的目标。 Canny 也是一个非常好的边缘检测方法。玩转(:
【讨论】: