线段检测器与概率霍夫变换

Line Segment Detector vs Probabalistic Hough Transform

在 OpenCV 中,有两种检测直线的方法以端点向量的形式给出相似的结果 - Line Segments Detector (LSD) and the Probabilistic Hough Transform。 (考虑到标准霍夫变换,因为给出的输出是方程式,而不是线端点。)

我没能找到这两种线检测方法及其pros/cons的比较和对比。因此-这两个功能有什么区别?使用一种方法相对于另一种方法有什么特别的好处吗?

此外,是否还有其他鲜为人知的线路检测方法(如 LSD)在某些用例中可能具有优势?

线段检测器 (LSD)

(渐进式)概率霍夫变换

  • 将二值图像作为输入
  • 有几个调整参数;距离分辨率 (rho),角度分辨率 (theta),一个累加器阈值参数(只有那些有足够票数的是 returned),最小线长度和最大线间隙
  • 时间性能取决于参数(但比标准霍夫变换有所改进)
  • 由于随机性,多次运行可能会产生不同的结果
  • 对于更具体的线路查找很有用;参数允许调整,并且可以选择将线段(通过最大线间隙参数)组合成 return 单个较长的线
  • OpenCV 实现是 Progressive Probabilistic Hough Transform (with thanks to Dr. D.'s answer on this question)

其他算法

  • EDLines:利用边缘检测器的线性时间线段检测器。据我所知,没有 OpenCV 实现。

(感谢 Micka 的评论指出输入和潜在用途的差异)