来自霍夫变换坐标的有效线

ct_*_*ct_ 1 computer-vision hough-transform

我正在使用霍夫变换(极坐标).我想从霍夫变换的坐标计算一条线的矢量表示.

我当前的实现循环遍历图像中从(0,0)到(M,N)的所有像素坐标,其中M和N是图像的大小.当循环遍历空间时,计算此值:

//角度和rho是霍夫空间的极坐标.

tmp =(int)((i*cos(angle))+(j*sin(angle)));

其中tmp -rho == 0,是该行的一部分,所以我跟踪该位置.当循环到达图像的末尾(i,j)==(M,N)时,循环再次从相反方向(M,N)到(0,0)完成.

第一个(tmp-rho == 0)从左到右,第二个(tmp-rho == 0)从右到左是该线的坐标.然后我减去那些像素坐标以得到霍夫空间中的线的矢量.

这是非常低效(慢),我100%肯定有更好的方法来计算这个,但是,我似乎无法弄明白.任何帮助将不胜感激!

650*_*502 5

您可以求解i = 0,i = M,j = 0,j = N而不是循环的等式

rho = i * cos(angle) + j * sin(angle)

i = 0 --> j1 = rho / sin(angle)
i = M --> j2 = (rho - M*cos(angle)) / sin(angle)
j = 0 --> i1 = rho / cos(angle)
j = N --> i2 = (rho - N*sin(angle)) / cos(angle)
Run Code Online (Sandbox Code Playgroud)