我在OpenCV中使用HoughLinesP函数。在阅读文档here之后,我对两个参数“threshold”和“minLineLength”的必要性感到困惑。 文档说:
threshold - 累加器阈值参数。只有那些线 返回获得足够的投票(>阈值)。
minLineLength - 最小行长度。短于此的线段将被拒绝。
其中一个不是多余的吗?一行得到的投票数是否等于它包含的像素数?鉴于“minLineLength”指定要拒绝哪些行,“阈值”的用途是什么?我在这里错过了一些东西。我们将不胜感激。
答案 0 :(得分:3)
如果累加器的单元很宽并且有许多紧密间隔的短线,则累加器的计数会很高。 min_line_length
有助于解决此类问题。
希望这能澄清手头的问题。
答案 1 :(得分:0)
好的,我阅读了文档以及Randomized Hough Transform(将其称为RHT)如何工作,我有这个想法,但它可能不正确。
在RHT中,并非所有二进制点都被考虑在内。这就是它更快的原因。因此,threshold
在累加器中意味着需要多少票才能将此(rho,theta)视为一条线,这很容易。
第二个有点令人困惑,但这是我的,minLineLength
可能是从投票的点数计算的线的长度。意思是,如果我们有5分投票给某一行并且所有这些点都非常接近,那么lineLength
将是短的可能是5像素。另一方面,如果3个点投票给另一条线并且点数远远超过其中一部分,那么lineLength
很大可能是20像素。
因此我们不能将投票门槛视为等于lineLength,因为并非所有二进制点都被计算在内。