cv :: HoughCircles中的dp参数究竟是如何工作的?

时间:2016-01-10 13:42:51

标签: opencv computer-vision computer-science hough-transform

我在Stack Overflow中读到类似的question。我试过了,但我仍然无法理解它是如何工作的。

我阅读了OpenCV文档cv::HoughCircles,这里有一些关于dp参数的解释:

  

累加器分辨率与图像分辨率的反比。例如,如果dp = 1,则累加器具有与输入图像相同的分辨率。如果dp = 2,则累加器的宽度和高度都是一半。

这是我的问题。例如,如果dp = 1,累加器的大小与图像相同,则图像中的像素与累加器中的位置之间存在一致的一对一匹配,但如果dp = 2,则如何匹配?

提前致谢。

1 个答案:

答案 0 :(得分:1)

这里没有一对一的比赛。你有一个像素和一个霍夫空间的图像,用于投票圈。此参数只是相对于图像大小指定霍夫空间大小的便捷方式。

请查看此answer了解详情。

修改

您的图片有(x,y) - 坐标。你的圆圈hough空间有(a,b,r) - 坐标,而(a,b)是圆心,r是半径。假设您找到了一个边缘像素。现在你投票给每个圆圈,它可以通过这个边缘像素。我发现this很好的霍夫空间图片,其中单个投票,即单个边缘像素(连续案例)。实际上,这种投票发生在3D累加器矩阵中。您可以将其视为此连续案例的光栅化。

现在,如前所述,dp参数相对于图像大小定义了此累加器矩阵的大小。 dp参数越大,光栅化的分辨率越低。这就像拍摄不同分辨率的照片。如果您缩小照片尺寸,则多个像素将减少为单个像素。如果您减少累加器矩阵分别增加dp参数,也会发生相同的情况。现在合并了不同圆圈中心(彼此相邻)和半径(大小相近)的多个投票,即你确实获得了不太准确的圆形参数,但是更“强大”的投票。

请注意OpenCV实现有点复杂(它们使用Hough梯度方法而不是标准的Hough变换),但考虑因素仍然适用。