你能给我一个关于OpenCV's HoughLines 中的rho
和theta
参数的快速定义吗?功能
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
关于opencv - HoughLines中rho和theta参数的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40531468/