霍夫变换原理基于直线提取介绍

一、简绍

      Hough变换的基本原理在于利用点与线的对偶性,将原始图像空间的给定的直线线通过曲线表达形式变为参数空间的一个点。这样就把原始图像中给定直线的检测问题转化为寻找参数空间中的峰值问题。把检测整体特性转化为检测局部特性。比如直线、椭圆、圆、弧线等。

二、基于直线提取理解

     假设已知图像上画一条直线,要求出这条直线所在的位置。已知直线的方程可式子(1) 来表示,k和b为参数,表示直线的斜率和截距。过点P0(x0,y0)的所有直线的参数都会满足方程y0=kx0+b。即P0(x0,y0)确定了一族直线。

                                              y=k*x+b                                                 (1)

如果将x和y视为常数,而将原本的参数k和b看作变量,则式子(1)转化为式子(2)

                                             b=-k*x+y

这样就变换到了参数平面k-b。式子(1)中为图像坐标空间,式子(2)中为参数空间,这种由式子(1)到式子(2)的变换就是直角坐标中对点P0(x0,y0)点的Hough变换。由式子(2)可知,图像x-y平面上一个像素点就对应到参数平面上的一条直线,为这条直线的斜率和截距。为了更好的理解,假设图像上的直线是y=x, 取直线上的三个点:A(0,0), B(1,1), C(2,2)。可以求出,过A点的直线的参数要满足方程b=0, 过B点的直线的参数要满足方程1=k+b, 过C点的直线的参数要满足方程2=2k+b, 这三个方程就对应着参数平面上的三条直线,而这三条直线会相交于一点(k=1,b=0)。同理,原图像上直线y=x上的其它点(如(3,3),(4,4)等) 对应参数平面上的直线也会通过点(k=1,b=0)。这个性质就为我们解决问题提供了方法,就是把图像平面上的点对应到参数平面上的线,最后通过统计特性来解决问题。假如图像平面上有两条直线,那么最终在参数平面上就会看到两个峰值点,依此类推。示意图下。

简而言之,Hough变换思想为

在原始图像坐标系下的一个点对应了参数坐标系中的一条直线,同样参数坐标系的一条直线对应了原始坐标系下的一个点,然后,原始坐标系下呈现直线的所有点,它们的斜率和截距是相同的,所以它们在参数坐标系下对应于同一个点。这样在将原始坐标系下的各个点投影到参数坐标系下之后,看参数坐标系下有没有聚集点,这样的聚集点就对应了原始坐标系下的直线。

      在实际应用中,y=k*x+b形式的直线方程没有办法表示x=c形式的直线(这时候,直线的斜率为无穷大)。所以实际应用中,是采用参数方程p=x*cos(theta)+y*sin(theta)。这样,图像平面上的一个点就对应到参数p---theta平面上的一条曲线上,其它的还是一样,示意图如下。

上图(a)所示为原始的图像空间中一个点;(b)所示为直角坐标系当中为过同一四条直线;(c)所示为这四条直线在极坐标参数空间可以表示为四个点

      为了检测出直角坐标X-Y中由点所构成的直线,可以将极坐标a-p量化成许多小格。根据直角坐标中每个点的坐标(x,y),在a = 0-180°内以小格的步长计算各个p值,所得值落在某个小格内,便使该小格的累加记数器加1。当直角坐标中全部的点都变换后,对小格进行检验,计数值最大的小格,其(a,p)值对应于直角坐标中所求直线,示意图如下。

猜你喜欢

转载自blog.csdn.net/qq_36812406/article/details/121844233