3

我最近开始了 CV 课程,并且正在阅读旧作业(当前未发布)。我已经实现了一个霍夫线函数,我循环遍历每个点,如果它是一个边,然后我循环遍历 0-180(或-90 到 90)theta 值,并计算 rho,最后存储在一个数组中。

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

我才明白重点在哪里。

我已经进行了一些搜索,但似乎无法找到答案,人们倾向于说,polar 告诉你 x,然后 bam 你在笛卡尔有一条线,但我似乎错过了“bam”所在的那个连接.

我的意思是在这里描述; 解释霍夫变换

还有来自极坐标的矢量/线 在哪里被问到如何从极坐标中画一条线,这里的响应很好是 x 和 y。但对我来说,从未提及该解决方案的其余部分。

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

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

编辑:在查看了 Sunreef 的答案并尝试将 y 转换为它自己之后,我也发现了这个答案: 如何将坐标从霍夫变换(rho,theta)转换回图像(x,y)?

看来我想我正在寻找的是这个

m = -cotθ

c = p*cosecθ

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

让我感到困惑的另一部分是我需要转换为弧度,一旦我这样做了,我就开始得到很好的结果。

4

2 回答 2

3

你是对的,你可以在这条线上得到一些基点

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

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

(dx, dy) = ( -sin(theta), cos(theta))
于 2016-08-24T16:08:16.953 回答
1

取自维基百科

在点 (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

这是您的直线在笛卡尔坐标中的方程。

(如果您发现一些错误,请告诉我,我很快就做到了)

于 2016-08-24T09:35:09.470 回答