如何从极坐标中找到一条直线(霍夫变换混淆)



我最近开始了一门简历课程,正在复习以前的作业(目前的作业还没有发布)。我实现了一个霍夫线函数,我循环遍历每个点,如果它是一条边,那么我循环遍历0-180(或-90到90)的值,并计算rho,最后存储在一个数组中。

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

我明白你的意思了。

我已经做了一些搜索,但似乎不能相当找到答案,人们倾向于说,极坐标告诉你x,然后砰的一声,你在笛卡尔坐标系中有一条线,但我似乎错过了"砰"的联系。

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

也来自极坐标的向量/直线当有人问我如何从极坐标画一条线时,回答是,这是x和y,但对我来说,从来没有提到过这个解决方案的其他部分。

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

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

编辑:在回顾了Sunreef的答案,并试图转换成y站在它自己的一边后,我发现了这个答案:如何将坐标转换回图像(x,y)从霍夫变换(,)?

出现我想我要找的是这个

m = - cottθ

c = p*cosecθ

编辑# 2我在网上找到了一些其他的例子。基本上我需要* sin()和*cos()

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

你是对的,你可以得到一些基准点的线

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

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

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

摘自维基百科:

与径向线φ = θ垂直相交于点(r0, θ)的非径向线的方程为:r(φ) = r0 * sec(φ - θ)。

如果我假设你的直线的坐标是n和r,那么你可以这样重写这个方程:

r(ϕ)* cos(ϕ)* cos(ɣ)+ r(ϕ)* sin(ϕ)* sin(ɣ)——r0 = 0

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

x = r * cos(φ)

y = r * sin(φ)

因此上面的方程变成如下的直线方程:

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

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

(如果你看到一些错误请告诉我,我做得很快)

相关内容

  • 没有找到相关文章

最新更新