Ghi*_*ADJ 8 opencv image-processing hough-transform
你能给我一个OpenCV的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
)
Run Code Online (Sandbox Code Playgroud)
我在文档中找到的唯一一件事是:
rho:累加器的距离分辨率,以像素为单位.
theta:累加器的角度分辨率,以弧度表示.
这意味着,如果我设置,rho=2
那么我的图像的1/2的像素将被忽略...一种步幅= 2?
我已经搜索了好几个小时,仍然没有找到一个整齐解释的地方.但拿起碎片,我想我明白了.
该算法遍历每个边缘像素(例如Canny的结果)并?
使用该等式计算? = x * cos? + y * sin?
,用于许多值?
.
实际步骤?
由函数参数定义,因此如果使用math.pi / 180.0
theta 的常用值,算法将?
仅为图像中的一个边缘像素计算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
小智 0
要使用霍夫变换检测直线,最好的方法是用两个参数 rho 和 theta 的方程来表示直线,如图所示。等式如下:
\n\nx cos\xe2\x81\xa1(\xce\xb8)+y sin\xe2\x81\xa1(\xce\xb8)=\xcf\x81
\n\n其中 (x,y) 是线参数。
\n\n这种写入 (\xce\xb8,\xcf\x81) 参数允许检测比写入 y=a*x+b 更少的位置依赖性
\n\n(\xce\xb8,\xcf\x81) 在这种情况下给出这两个参数的离散化
\n\n\n 归档时间: |
|
查看次数: |
5469 次 |
最近记录: |