如何从极坐标中找到一条线(Hough Transform Confusion)

时间:2016-08-24 05:21:25

标签: opencv geometry hough-transform polar-coordinates cartesian-coordinates

我最近开始了一个简历课程,并且正在完成旧的作业(目前尚未发布)。我已经实现了一个Hough Lines函数,我循环遍历每个点,如果它是一个边缘,那么我循环通过0-180(或-90到90)theta值,并计算rho,最后存储在一个数组中。

当我尝试从极坐标转换回来时,我可以找到一对X,Y对(使用rho * sin(theta)和rho * cos(theta)),但我不明白如何将其转换为笛卡儿空间中的一条线。要有一条线,你需要2个点或一个点和一个方向(当然假设射线)

我只是明白这一点。

我做了一些搜索,但似乎相当找不到答案,人们倾向于说,极地告诉你x,然后bam你有笛卡儿的一行,但我似乎错过了“bam”所在的那个连接。

我的意思在这里描述; Explain Hough Transformation

另外Vector/line from polar coordinates 哪里有人问我如何从极坐标中划出一条直线,其响应在这里是x和y。但对我来说,从来没有提到其他解决方案。

这条线是否与y = mx + b有关,其中m是theta而b是rho?

如果不是,我如何转换回笛卡尔空间中的一条线。

编辑: 在回顾了Sunreef的答案,并试图进行转换,因此我自己就是这样,我也发现了这个答案: How to convert coordinates back to image (x,y) from hough transformation (rho, theta)?

出现我认为我正在寻找的是

m =-cotθ

c = p *cosecθ

EDIT#2 我在网上找到了其他一些例子。基本上是的,我需要rho * sin(theta)和rho * cos(theta)

让我搞砸的另一部分是我需要转换为弧度,一旦我这样做,我就开始取得好成绩。

2 个答案:

答案 0 :(得分:2)

你是对的,你可以在这一行得到一些基点

 (X0, Y0) = (rho * cos(theta), rho * sin(theta))

你可以找到(单位)该线的方向向量垂直于法线:

(dx, dy) = ( -sin(theta), cos(theta))

答案 1 :(得分:1)

取自Wikipedia

  

在点(r0,ɣ)处垂直穿过径向线φ=ɣ的非径向线具有等式:r(φ)= r0 * sec(φ - ɣ)。

如果我认为你的线的坐标是ɣ和r0,那么你可以像这样重写这个等式:

  

r(φ)* cos(φ)* cos(ɣ)+ r(φ)* sin(φ)* sin(ɣ) - r0 = 0

我们知道,当将极坐标转换为笛卡尔坐标时,如果我们在极坐标平面上有一个点P(r,φ),那么它在笛卡尔平面中的坐标将是:

  

x = r * cos(φ)

     

y = r * sin(φ)

因此,上面的等式成为线方程如下:

  

x * cos(ɣ)+ y * sin(ɣ) - r0 = 0

这是笛卡儿坐标系中的等式。

(如果你看到一些错误,请告诉我,我很快就这样做了)