我最近开始了一个简历课程,并且正在完成旧的作业(目前尚未发布)。我已经实现了一个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)
让我搞砸的另一部分是我需要转换为弧度,一旦我这样做,我就开始取得好成绩。
答案 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
这是笛卡儿坐标系中的等式。
(如果你看到一些错误,请告诉我,我很快就这样做了)