【问题标题】:What is the particular implementation of Probabilistic Hough Transform in OpenCV?OpenCV中概率霍夫变换的具体实现是什么?
【发布时间】:2011-05-17 15:51:44
【问题描述】:

有人知道 OpenCV 实现中概率霍夫变换的特定算法吗?我的意思是,是否有关于该算法的参考论文或文档?

为了得到这个想法,我当然可以查看源代码,但我想知道是否有任何关于它的文档。 -- 它不在源代码的 cmets (OpenCV 1.0) 中。

谢谢!

-晋

【问题讨论】:

    标签: opencv hough-transform


    【解决方案1】:

    OpenCV 文档指出该算法基于 J Matas 等人的“使用渐进概率霍夫变换对线条进行稳健检测”。这与维基百科上描述的 RHT 完全不同。

    该论文似乎无法在 Internet 上免费获得,但您可以从 Elsevier 购买

    【讨论】:

      【解决方案2】:

      OpenCV 2.4.4 中HoughLinesProbabilistic 的源代码包含解释所涉及的各个步骤的内联 cmets。

      https://github.com/Itseez/opencv/blob/master/modules/imgproc/src/hough.cpp

      【讨论】:

      • 链接到 GitHub 时请使用永久链接。自从您发布该链接以来,该文件已更改,因此行号现在无关紧要。 GitHub 并不容易。您可以在文件视图上按“y”来获取永久链接。
      【解决方案3】:

      第 6 节中的文章 Line Detection by Hough transformation 可能会有用。

      【讨论】:

      • 感谢这篇论文。我发现它非常有用。
      【解决方案4】:

      这是 Matas 等人的一篇相当简洁的论文。描述了该方法,正如其他人所提到的,它确实与随机霍夫变换有很大不同:

      http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.40.2186&rep=rep1&type=pdf

      (但不确定此链接的有效期。它来自 citeseer,不希望它明天就消失,但谁知道...)

      我快速查看了 hough.cpp 中的实现 icvHoughLinesProbabilistic(),因为我将使用它 :-) 它看起来相当简单,无论如何,我的主要兴趣是它是否在结束 - 它没有,这很好。这只是意味着,如果希望获得准确的线段,可能需要使用 OpenCV 返回的起点/终点和隐含​​的线参数来从整个点集中选择相关点。我首先会使用一个相当保守的距离阈值,然后在这些点上以较小的阈值运行 RANSAC/MSAC。最后,像往常一样将一条线拟合到内部集,例如使用 OpenCV 的 cvFitLine()。

      【讨论】:

        【解决方案5】:

        这是一篇关于随机霍夫变换的文章,我认为它与 OpenCV 中使用的“概率霍夫变换”相同 http://en.wikipedia.org/wiki/Randomized_Hough_Transform

        基本上,您不会为所有点填充累加器,而是选择具有特定标准的一组点来填充霍夫变换。

        结果是,有时,如果没有足够的起点,您可能会错过实际线路。如果你有一些线性结构,我想你会想要使用它,这样大多数点都是多余的。 参考文献 2:L. Xu、E. Oja 和 P. Kultanan,“一种新的曲线检测方法:随机霍夫变换 (RHT)”,模式识别。莱特。 11, 1990, 331-338。

        我还阅读了一些非常不同的方法,其中算法将采用两个点并计算这两个点中间的点。如果该点是边缘点,那么我们将累积该线的 bin。这显然非常快,但你会假设一个有点非稀疏矩阵,因为如果没有足够的边缘点开始,你很容易错过线条。

        【讨论】:

        • 非常有用的cmets!谢谢!我没有研究随机方法的路线,而是认为它应该是“概率霍夫变换”之类的东西。
        • 随机霍夫变换不同于渐进概率霍夫变换。前者采用随机点的元组映射到霍夫空间中的单个单元格。它迭代地执行此操作,并且一旦累加器单元越过阈值,就会检测到线/平面。后者有一个过滤机制,通过考虑投票给一个单元的总票数的百分比来消除噪音。请参阅:Borrmann 等人的“点云中平面检测的 3D Hough 变换:回顾和新的累加器设计”。 (2011)
        • 不明白为什么这是公认的答案?它与 OpenCV 实现几乎没有关系,如上所述,OpenCV 实现了渐进概率霍夫变换而不是随机霍夫变换。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-20
        • 1970-01-01
        相关资源
        最近更新 更多