如何从极坐标中找到一条线(Hough Transform Confusion)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从极坐标中找到一条线(Hough Transform Confusion)相关的知识,希望对你有一定的参考价值。
我最近开始了一个简历课程,我正在经历旧的作业(目前尚未发布)。我已经实现了一个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的答案,并尝试转换所以y就在它自己的一方,我也发现了这个答案:How to convert coordinates back to image (x,y) from hough transformation (rho, theta)?
看来我认为我正在寻找的是这个
m =-cotθ
C = P *cosecθ
编辑#2我在网上找到了一些其他的例子。基本上是的我需要rho * sin(theta)和rho * cos(theta)
让我搞砸的另一部分是我需要转换为弧度,一旦我这样做,我就开始取得好成绩。
你是对的,你可以得到一些基点作为
(X0, Y0) = (rho * cos(theta), rho * sin(theta))
你可以找到(单位)该线的方向向量垂直于法线:
(dx, dy) = ( -sin(theta), cos(theta))
来自Wikipedia:
在点(r0,ɣ)处垂直与径向线φ= cros交叉的非径向线具有等式:r(φ)= r0 * sec(φ-ɣ)。
如果我假设你的线的坐标是ɣ和r0,那么你可以像这样重写这个等式:
r(φ)* cos(φ)* cos(ɣ)+ r(φ)
我们知道,当将极坐标转换为笛卡尔坐标时,如果我们在极坐标平面上有一个点P(r,φ),那么它在笛卡尔平面中的坐标将是:
x = r * cos(φ)
y = r * sin(φ)
所以上面的等式变成了一个线方程如下:
x * cos(ɣ)+ y * sin(ɣ) - r0 = 0
这是笛卡儿坐标系中的等式。
(告诉我,如果你看到一些错误,我很快就这样做了)
以上是关于如何从极坐标中找到一条线(Hough Transform Confusion)的主要内容,如果未能解决你的问题,请参考以下文章
Flutter:Google Map Plugin如何在地图内的两个坐标之间画一条线