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%肯定有更好的方法来计算这个,但是,我似乎无法弄明白.任何帮助将不胜感激!
您可以求解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)