我在堆栈溢出中阅读了类似的question。我尝试过,但是我仍然不明白它是如何工作的。

我阅读了OpenCV文档cv::HoughCircles,这是有关dp参数的一些说明:



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

提前致谢。

最佳答案

这里没有一对一的比赛。您的图像确实具有像素和hough空间,用于对圈子进行投票。此参数只是指定相对于图像大小的hough空间大小的便捷方法。

请查看此answer了解更多详细信息。

编辑:

您的图片具有(x,y) -coordinates。您的圆圈hough空间具有(a,b,r)-坐标,而(a,b)是圆圈中心,而r是半径。假设您找到一个边缘像素。现在,您为每个圆圈投票,该圆圈可能会通过该边缘像素。我发现ojit_是一个具有单个投票的霍夫空间的漂亮图片,即单个边缘像素(连续的情况)。实际上,这种投票发生在3D累加器矩阵内。您可以将其视为此连续案例的栅格化。

现在,如上所述,dp参数定义了相对于您的图像大小的此累加器矩阵的大小。 dp参数越大,栅格化的分辨率越低。这就像以不同的分辨率拍照。如果您缩小照片的尺寸,则多个像素将减少为一个像素。如果减少累加器矩阵或分别增加dp参数,也会发生相同的情况。现在合并了不同圆心(彼此相邻)和半径(大小相似)的多个选票,即您确实获得了较不准确的圆参数,但投票更加“稳健”。

请注意,OpenCV的实现稍微复杂一些(它们使用Hough梯度方法而不是标准的Hough变换),但注意事项仍然适用。

07-26 09:36