如何从极坐标中找到一条线(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)的主要内容,如果未能解决你的问题,请参考以下文章

java获取一条线的中间点坐标

Flutter:Google Map Plugin如何在地图内的两个坐标之间画一条线

如何在matlab中以方位角画一条线?

如何在Matlab中永久地在图像的两个坐标之间画一条线? [重复]

将一条线分成2个不同的字符串[重复]

在opencv Python中拖动鼠标绘制一条线并获取线的端点坐标