opencv - HoughLines中rho和theta参数的解释

标签 opencv image-processing hough-transform

你能给我一个关于OpenCV's HoughLines 中的rhotheta 参数的快速定义吗?功能

void cv::HoughLines (   InputArray  image,
    OutputArray     lines,
    double  rho,
    double  theta,
    int     threshold,
    double  srn = 0,
    double  stn = 0,
    double  min_theta = 0,
    double  max_theta = CV_PI 
)

我在文档中发现的唯一内容是:

rho: Distance resolution of the accumulator in pixels.

theta: Angle resolution of the accumulator in radians.

这是否意味着如果我设置 rho=2 然后我的图像像素的 1/2 将被忽略......一种 stride=2 ?

最佳答案

我已经搜索了好几个小时,但仍然没有找到对它有清晰解释的地方。但是捡起碎片,我想我明白了。

该算法遍历每个边缘像素(例如,Canny 的结果)并使用等式ρ = x * cosθ + y * sinθ 计算ρ ,对于 θ 的许多值。

θ 的实际步长由函数参数定义,因此如果您使用通常的 math.pi/180.0 θ 值,算法将计算 ρ 总共 180 次,仅针对图像中的一个边缘像素。如果您使用更大的 theta,则计算量会更少,累加器列/桶也会更少,因此找到的行数也会更少。

另一个参数 ρ 定义累加器的一行有多“胖”。如果值为 1,则表示您希望累加器行数等于可能的最大 ρ,即您正在处理的图像的对角线。因此,如果对于 θ 的某些两个值,您得到 ρ 的接近值,它们仍将进入单独的累加器桶,因为您要追求精度。对于较大的参数 rho 值,这两个值可能最终会出现在同一个桶中,这最终会给您带来更多的行,因为更多的桶将具有较大的投票计数,因此会超过阈值。

一些有用的资源:

http://docs.opencv.org/3.1.0/d6/d10/tutorial_py_houghlines.html

https://www.mathworks.com/help/vision/ref/houghtransform.html

https://www.youtube.com/watch?v=2oGYGXJfjzw

关于opencv - HoughLines中rho和theta参数的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40531468/

相关文章:

image-processing - 在这种情况下,熵是什么意思?

java - 无法从 url 错误 java 获取输入流

image - 了解霍夫变换

python - 测量金属零件孔径的图片,远心拍摄,单色相机用opencv

c++ - OPENCV:查找线的方向/角度

opencv - 如何在 Windows 上安装 NAWK?

iphone - 将图像保存到 iPhone 时出错

python - 如何使用 OpenCV 绘制多色分段圆?

c++ - 从这张图片中识别绿色圆圈

image-processing - 查找图像每条线的斜率(角度)