HoughLines中rho和theta参数的解释

Ghi*_*ADJ 8 opencv image-processing hough-transform

你能给我一个OpenCV的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 
)
Run Code Online (Sandbox Code Playgroud)

我在文档中找到的唯一一件事是:

rho:累加器的距离分辨率,以像素为单位.

theta:累加器的角度分辨率,以弧度表示.

这意味着,如果我设置,rho=2那么我的图像的1/2的像素将被忽略...一种步幅= 2?

Zan*_*tsu 9

我已经搜索了好几个小时,仍然没有找到一个整齐解释的地方.但拿起碎片,我想我明白了.

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

实际步骤?由函数参数定义,因此如果使用math.pi / 180.0theta 的常用值,算法将?仅为图像中的一个边缘像素计算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\n

x 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

  • 这怎么解释一切 (21认同)