Opencv HoughLines中rho和theta参数的解释

Opencv HoughLines中rho和theta参数的解释,opencv,image-processing,hough-transform,Opencv,Image Processing,Hough Transform,你能给我一个函数中rho和theta参数的快速定义吗 我在文件中找到的唯一东西是: rho:累加器的距离分辨率(以像素为单位) θ:累加器的角度分辨率(弧度) 这是否意味着如果我设置了rho=2,那么我的图像的1/2像素将被忽略。。。一种步幅=2?要使用Hough变换检测线,最好的方法是使用两个参数rho和θ的方程表示线,如图所示。方程式如下: x cos⁡(θ) +y sin⁡(θ) =ρ 其中(x,y)是线参数 这种写入(θ,ρ)参数允许检测比y=a*x+b时的写入更少的位置依赖性 (θ,ρ

你能给我一个函数中
rho
theta
参数的快速定义吗

我在文件中找到的唯一东西是:

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

θ:累加器的角度分辨率(弧度)


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

要使用Hough变换检测线,最好的方法是使用两个参数rho和θ的方程表示线,如图所示。方程式如下:

x cos⁡(θ) +y sin⁡(θ) =ρ

其中(x,y)是线参数

这种写入(θ,ρ)参数允许检测比y=a*x+b时的写入更少的位置依赖性

(θ,ρ)在本文中给出这两个参数的离散化


我已经搜索了好几个小时,仍然没有找到一个地方可以清楚地解释它。但是收拾残局,我想我明白了

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

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

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

一些有用的资源:


这是累加器空间的一种跨越,而不是图像空间。这是一个二维直方图。如果它是一个1D柱状图,它与设置每个箱子的大小是一样的。这是如何解释的呢
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 
)