在之前已经使用过正规方程法、梯度下降法拟合直线
1、回顾过去
现在使用一种新的直线检测方法,霍夫变换,它也可以拟合直线,接下里将说明他的原理。
2、霍夫变换
霍夫变换(Hough Transform)是一种在图像处理和计算机视觉中广泛使用的技术,主要用于检测图像中的几何形状,如直线、圆等。该技术由Paul Hough于1962年首次提出,其基本思想是将图像空间中的点变换到参数空间中,通过寻找参数空间中的峰值来检测图像中的特定形状。
霍夫变换一般是用来检测图像中的直线的,而图像是由一个个像素点组成的,这个过程相当于拟合一条直线了。
2.1直线拟合任务介绍
假设我们有这样一个分布的数据:
我们想用一条直线拟合数据,它的表达式为Y=kX+B
关于最小二乘和梯度下降还不知道的可以去看以往的文章,这里就直接介绍霍夫变换了。
2.2霍夫变换参数平面
原来不是Y=kX+B吗,霍夫变换将其形式改变,转换为B=Xk+Y
思想:将数据的X作为斜率,Y作为截距,如果有N个点,在k,B这个坐标系下就会有N条直线,这些直线会有交点,选择经过直线最多的交点,比如上图中标记的交点,经过的直线最多,有4条。
将这个交点(k,B)选出,形成新的Y=kX+B
因为在原来的B=Xk+Y中大部分点都过这条直线,所以转换过来后也满足绝大多数点都经过Y=kX+B。
2.3 极坐标下的霍夫变换
2.3.1使用直角坐标系存在的问题
看下图的情况:
如上图所示,如果出现直线的斜率接近于无穷,就接近于一条竖线,图左中过原点的B=0,K就是接近无穷,图右则B和k都解靖宇无穷了。在参数平面里面,这个无穷就是个很大的数,计算机基本上无法表示,如果是一条标准的直线,那么参数K就是不存在,更谈不上什么参数平面了。
2.3.2解决方法-极坐标系表示
比如这种接近竖直线的利用极坐标系(r,θ)是可以表示的,r是原点到直线的垂直距离,θ指这原点到垂点连接形成的直线与x轴形成的夹角。
对于那些斜率不存在的:
θ=0直接就可以表示了
对于水平直线,θ=π/2即可表示。
2.3.3 极坐标系下的参数平面
将y=kx+b,转换为xcosθ+ysinθ=r的极坐标表示方式
将没个点的x,y带入,N个点就有个N条曲线,为什么是曲线呢?
假如点(1,1)点,带入极坐标表达式,r=cosθ+sinθ,表达式有cos和sin,肯定是条曲线了。
不妨多带几个例子进去,(1,3),(100,1)等,它们带进去后都会生成一条关于f(r,θ)的曲线
这个时候,我们和极坐标系下一样,将曲线中的交点进行排序,经过直线最多的那个点r,θ即为我们所需要的。原理和直角坐标系一样。
注:后期时间充裕的话可能要加上MATLAB仿真。