Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 霍夫变换方程_Image Processing - Fatal编程技术网

Image processing 霍夫变换方程

Image processing 霍夫变换方程,image-processing,Image Processing,我想知道为什么Hough变换使用rho=xcos(θ)+ysin(θ)表示直线(y=mx+b)。我试图解决这个问题(并就这个问题进行了讨论),但找不到一种方法从另一个中推导出一个 有人知道如何从另一个派生出一个吗 提前谢谢。每对rho,theta与给定直线的x,y对相关,因为从原点角度theta处的距离rho将您置于直线上的x,y坐标处 使用rho,θ方程代替y=mx+b,这样可以将rho,θ值序列放入方程中,而不会出现斜率未定义(即直线垂直)的y=mx+b方法产生的计算问题这只是从线性坐标系到

我想知道为什么Hough变换使用
rho=xcos(θ)+ysin(θ)
表示直线
(y=mx+b)
。我试图解决这个问题(并就这个问题进行了讨论),但找不到一种方法从另一个中推导出一个

有人知道如何从另一个派生出一个吗


提前谢谢。

每对
rho,theta
与给定直线的
x,y
对相关,因为从原点角度
theta
处的距离
rho
将您置于直线上的
x,y
坐标处


使用
rho,θ
方程代替
y=mx+b
,这样可以将
rho,θ
值序列放入方程中,而不会出现斜率未定义(即直线垂直)的
y=mx+b
方法产生的计算问题这只是从线性坐标系到旋转坐标系的变换。维基百科的文章中概述了原因:

在Hough变换中,一个主要的想法是考虑直线的特性,而不是像点(x1,y1),(x2,y2)等,而是在其参数方面,即斜率参数m和截距参数b。基于这一事实,直线y=mx+b可以表示为参数空间中的点(b,m)。然而,人们面临的问题是,垂直线引起参数m和b的无界值。因此,出于计算原因,对于Hough变换中的直线,最好使用一对不同的参数,表示为r和θ(θ)

要在两者之间进行转换,请使用方程
y=-(cos(θ)/sin(θ))x+r/sin(θ)
。因此
m=-(cos(θ)/sin(θ))
b=r/sin(θ)
。当
sin(θ)=0
theta=0
时,这些明显会发生故障,这就是为什么首选旋转坐标系(具有无限斜率的直线没有任何问题)。

推导:

方程式
x/a+y/b=1

  • 定义一条线
  • 具有x截距=a
  • 具有y截距=b
从三角学中,回想一下按角度
t旋转的光线如何根据
(角度=t,半径=1)->(x=cos(t),y=sin(t))投射到x轴和y轴上。
*

在标记点处绘制切线。三角学(甚至是具有类似三角形的几何)告诉我们切线在
x=1/cos(t)
y=1/sin(t)
处相交。因此,距离1远的线a将具有
a=1/cos(t)
b=1/sin(t)
,因此由
x/(1/cos(t))+y/(1/sin(t))=1
来描述

。。。它就是cos(t)x+sin(t)y=rho
其中
rho=1

您可以看到,
rho
对应于直线距离原点的距离(或者通过玩弄等式,或者注意到这里的乘法只是按相同的量缩放所有值,从而有效地重新缩放网格)



*请参见,以获取参考

极坐标系是二维坐标系,它有一个称为极的参考点(如原点)和一条从极到极的线称为极轴。极坐标系中的每个点表示为(rho,θ),其中“rho”是极点(原点)与点之间的距离,“θ”是极轴与连接极点与点的线之间的角度。看

极坐标(rho,θ)可以使用以下三角方程转换为笛卡尔坐标(x,y)

x = rho cos theta       ----(1) 
y = rho sin theta       ----(2)
有关更多信息,请参阅

我们如何得到上述方程

方程式使用直角的概念(三角学)

请看图片

现在让我们推导笛卡尔坐标(x,y)和极坐标(rho,θ)之间的关系


我得到了其余的,但我不知道m=-(cos(θ)/sin(θ))和b=r/sin(θ)。。。(很难为情地说),其他一切都是有意义的,不是吗?
sin(θ)/cos(θ)
,因为斜率是从原点到
y=mx+b
直线的斜率。但是,您不是,并且
y=mx+b
线的斜率等于从该线到原点的切线的负倒数。如果你看ninjagecko的答案,你会发现这意味着
m=-(cos(θ)/sin(θ))
。感谢你的解释。即使代码可以解决这个问题,也请提供一些额外的解释。对于评论中的人:这不是代码,而是问题中所问方程的推导。给答案的作者:如果你在答案的开头加上一点文字,你将避免人们误解你的答案,并可能使答案更加有用。谢谢你的建议。添加文本。每个(ρ,θ)对与一系列(x,y)对相关,因为它描述一条线。就像(m,b)对描述一系列(x,y)对一样。它不是一对(x,y)的。我真的不记得回答过这个问题
cos theta = adjacent-side/hypotenuse = x/rho,  thus we get (1)     
sin theta = opposite-side/hypotenuse = y/rho,  thus we get (2)
and Pythagorean theorem says,
hypotenuse^2 = adjacent side ^2 + opposite side^2, so
rho^2 = x^2 + y^2       ----(3)
rho^2 = x^2 + y^2       ---- from (3)
rho^2 = x*x  +  y*y
rho^2 = x(rho cos theta) + y (rho sin theta)   ---- from (1) and (2)  
rho^2 = rho(x cos theta + y sin theta)
rho = x cos theta + y sin theta