HoughlinesP 参数“threshold”和“minLineLength”

Posted

技术标签:

【中文标题】HoughlinesP 参数“threshold”和“minLineLength”【英文标题】:HoughlinesP parameters "threshold" and "minLineLength" 【发布时间】:2014-09-15 08:53:03 【问题描述】:

我在 OpenCV 中使用 HoughLinesP 函数。阅读文档here 后,我对两个参数“threshold”和“minLineLength”的必要性感到困惑。 文档说:

threshold – 累加器阈值参数。只有那些行是 返回获得足够票数( >threshold )。

minLineLength – 最小行长度。比这短的线段被拒绝。

其中一个不是多余的吗?一条线获得的票数不等于它包含的像素数吗?鉴于“minLineLength”指定要拒绝哪些行,“阈值”有什么用?我在这里错过了什么吗?澄清将不胜感激。

【问题讨论】:

也许这会有所帮助:docs.opencv.org/doc/tutorials/imgproc/imgtrans/hough_lines/… @QED - 谢谢。我已经阅读了这篇文章,但它并没有澄清我提到的两个参数。我想知道“阈值”和“minLineLength”有什么区别。在我看来,这两个参数都指定了最小行长度。对吗? 似乎对于标准方法您可能是正确的,因为它没有该参数。然而,概率。方法有两个附加参数“minLinLength”和“maxLineGap”因此我只能得出结论(猜测)在这种情况下两条线可以连接在一起,因此连接线的最终长度可能不再与投票数直接相关,因为它由两行 + 一个“差距”组成,其中差距可能没有选票。我必须检查论文以确定,但文档中没有参考。 从这里看起来不匹配可能是因为随机抽样:homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/AV1011/… 非常感谢。这说明了这一点。 【参考方案1】:

如果蓄电池的单元很宽,并且有许多紧密间隔的短线,那么蓄电池的数量会很高。 min_line_length 将有助于解决此类问题。

希望这能澄清手头的问题。

【讨论】:

【参考方案2】:

好的,我阅读了文档以及随机霍夫变换(称为 RHT)的工作原理,我有这个想法,但它可能不正确。

在 RHT 中,并不是所有的二进制点都被考虑在内,对吧。这就是为什么它更快。所以,threshold 表示在累加器中需要多少票才能将此(rho,theta)视为一条线,这很容易。

第二个有点令人困惑,但这是我的想法,minLineLength 可能是根据投票支持它的点计算的线的长度。意思是,如果我们有 5 个点来投票给某条线并且所有这些点都非常接近,那么 lineLength 将短可能是 5 个像素。另一方面,如果有 3 个点投给了另一条线,并且这些点相距甚远,那么 lineLength 的大可能是 20 像素。

因此我们不能认为投票阈值等于 lineLength,因为并非所有二进制点都被纳入计算。

【讨论】:

以上是关于HoughlinesP 参数“threshold”和“minLineLength”的主要内容,如果未能解决你的问题,请参考以下文章

使用 HoughLinesP 检测矩形对象的准确中心点

OpenCV-累计概率霍夫变换cv::HoughLinesP

OpenCV-累计概率霍夫变换cv::HoughLinesP

Python OpenCV HoughLinesP 无法检测线

图像阈值_有cv2.threshold,cv2.adaptiveThreshold 等。

OpenCV 固定阈值门限分割 cv::threshold