【问题标题】:Edge Detection method better than Canny Edge detection边缘检测方法优于 Canny 边缘检测
【发布时间】:2014-03-30 16:10:16
【问题描述】:

是否有一种边缘检测方法的性能明显优于比 Canny 边缘检测器??

【问题讨论】:

    标签: image-processing computer-vision edge-detection


    【解决方案1】:

    有不同类型的“边缘”,这取决于您的任务。看看 ICCV-2013 最近的论文“Which edges matters?”,比较了几种方法:

    • ultrametric contour map - P. Arbelaez、M. Maire、C. Fowlkes 和 J. Malik 的“轮廓检测和分层图像分割” - 上述比较中的最佳结果。
    • normalized cuts - J. Shi 和 J. Malik 的“规范化剪切和图像分割”。
    • mean shift - “均值偏移:一种稳健的方法 D. Comanicu 和 P. Meer 撰写的面向特征空间分析。
    • Felzenszwalb and Huttenlocher approach - “基于高效图 图像分割”,作者 Felzenszwalb 和 Huttenlocher。
    • BiCE - C. L. Zitnick 的“二进制相干边缘描述符”。
    • N4-Fields - “N4-Fields: Neural Network Nearest Neighbor Fields for Image Transforms” by Ganin et.al
    • RDS - Liu 和 Lew 的“学习轻松的深度监督以获得更好的边缘检测”
    • COB - Maninis 等人的“面向卷积的边界”。

    【讨论】:

    • 谢谢! OpenCV没有实现这些吗?
    • 几乎没有一个在 OpenCV 中实现。但是对于他们中的大多数人来说,他们的寻呼机上有一个作者实现,只需用谷歌搜索即可。
    【解决方案2】:

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

    Active Canny: Edge Detection and Recovery with Open Active Contour Models

    这是一张显示其性能的图片

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

    这是我找到的另一篇论文。

    Anisotropic Edge-Based Balloon Eikonal Active Contours

    【讨论】:

      【解决方案3】:

      使用深度学习的整体嵌套边缘检测 (HED) 现已集成到 OpenCV 的深度学习模块中。它在边缘检测方面比 Canny 好得多,但速度有点慢。 这是论文中的一个数字,将结果与 canny 进行了比较。 很棒的是,如果你现在想在 OpenCV 中运行这个方法,你只需要几行代码就可以做到。这篇博文有更多细节:Running Deep Learning based Edge detection in OpenCV

      【讨论】:

        【解决方案4】:

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

        最后但并非最不重要的一点 - 从算法的角度开始考虑您的项目是错误的,但它经常这样做!想想你的目标、特征、概率的操作定义,然后才是实施。 “我们写的不是解决问题的步骤,而是问题本身”——正如西蒙·普林斯雄辩地指出的那样。因此,如果您对更好的算法有疑问,但您确实想更好地了解计算机视觉,我强烈建议您购买his book(这本书可读性强,插图丰富,激励人心,是我所知道的对计算机视觉的最温和的介绍)。光谱的另一面是经典的 Heartly 和 Zisserman 的 Multiple View geometry,它是公式的重要来源,但遗憾的是非常不可读。

        【讨论】:

        • 这本书的链接失效了。可以分享这本书的名字和作者吗?提前致谢。
        【解决方案5】:

        Canny边缘检测方法是比较常用的边缘检测方法之一。正如old-ufo所说,边缘检测方法没有好坏之分。

        不过,在 old-ufo 的回答之上,我想再向您介绍 2 种边缘检测方法。

        Sobel - 检测图像边缘的方法可以通过定位梯度高于其邻居的像素位置来执行。

        Gaussian based methods - 使用高斯的边缘检测方法。

        如果你问我,我真的很喜欢 DoG(高斯差),尤其是当我试图获得对象的轮廓/形状(当对象嘈杂时)等时。非常有用。

        但总而言之,它确实基于您想要实现的目标。 Canny 也是一个非常好的边缘检测方法。玩转(:

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-04-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-01-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多