您能否在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:累加器的距离分辨率,以像素为单位。
theta:累加器的角度分辨率,以弧度表示。
这是否意味着如果我设置rho=2
,那么我的图像像素的1/2将被忽略...一种步幅= 2?
答案 0 :(得分:6)
我已经搜索了好几个小时,仍然没有找到一个整齐解释的地方。但拿起碎片,我想我明白了。
算法遍历每个 edge 像素(例如Canny的结果)并使用等式ρ
计算ρ = x * cosθ + y * sinθ
,用于θ
的许多值。
θ
的实际步骤由函数参数定义,因此如果您使用theta的常用math.pi / 180.0
值,算法将只计算一次ρ
180次图像中的边缘像素。如果你使用一个更大的theta,那么计算量就会减少,累加器列数/桶数就会减少,因此找到的行数就会减少。
另一个参数ρ
定义" fat"累加器的一行是。如果值为1,则表示您希望累加器行数等于可能的最大ρ
,这是您正在处理的图像的对角线。因此,如果对于θ
的某些两个值,您获得ρ
的接近值,它们仍会进入单独的累加器桶,因为您需要精确度。对于参数rho的较大值,这两个值可能最终会在同一个存储桶中,最终会为您提供更多行,因为更多存储桶的投票数会更多,因此会超过阈值。
一些有用的资源:
http://docs.opencv.org/3.1.0/d6/d10/tutorial_py_houghlines.html
https://www.mathworks.com/help/vision/ref/houghtransform.html
答案 1 :(得分:0)