基于hough变换和卡尔曼滤波的车道线检测算法

来源:互联网 发布:6寸windows平板 编辑:程序博客网 时间:2024/05/21 11:01


1  算法介绍

1.1霍夫变换(HoughTransform)

霍夫变换(HoughTransform)是图像处理中的一种特征提取技术,它通过一种投票算法检测具有特定形状的物体。该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍夫变换结果。霍夫变换于1962年由Paul Hough 首次提出,后于1972年由Richard DudaPeterHart推广使用,经典霍夫变换用来检测图像中的直线,后来霍夫变换扩展到任意形状物体的识别。霍夫变换运用两个坐标空间之间的变换将在一个空间中具有相同形状的曲线或直线映射到另一个坐标空间的一个点上形成峰值,从而把检测任意形状的问题转化为统计峰值问题,上一节中已经介绍了车道的直线特征,本节中介绍Hough变换检测直线的原理和检测结果。

一条直线在直角坐标系下可以用y=kx+b表示,霍夫变换的主要思想是将该方程的参数和变量交换,即用x,y作为已知量k,b作为变量坐标,所以直角坐标系下的直线y=kx+b在参数空间表示为点(k,b),而一个点(x1,y1)在直角坐标系

下表示为一条直线y1=x1·k+b,其中(k,b)是该直线上的任意点。为了计算方便,我们将参数空间的坐标表示为极坐标下的γ和θ。因为同一条直线上的点对应的(γ,θ)是相同的,因此可以先将图片进行边缘检测,然后对图像上每一个非零像素点,在参数坐标下变换为一条直线,那么在直角坐标下属于同一条直线的点便在参数空间形成多条直线并内交于一点。因此可用该原理进行直线检测。

                                          

 

                                        -1参数空间变换结果                        -2统计变换结果

如图-1.所示,对于原图内任一点(x,y)都可以在参数空间形成一条直线,以图中一条直线为例有参数(γ,θ)=(69.641,30°),所有属于同一条直线上的点会在参数空间交于一点,该点即为对应直线的参数。由该图中所有直线所得到的(γ,θ)在参数空间中得到一系列对应曲线见图-2霍夫统计变换结果。

1.2卡尔曼滤波

卡尔曼滤波建立在线性代数隐马尔可夫模型(hidden Markovmodel)上。其基本动态系统可以用一个马尔可夫链表示,该马尔可夫链建立在一个被高斯噪声(即正态分布的噪声)干扰的线性算子上的。系统的状态可以用一个元素为实数的向量表示。 随着离散时间的每一个增加,这个线性算子就会作用在当前状态上,产生一个新的状态,并也会带入一些噪声,同时系统的一些已知的控制器的控制信息也会被加入。同时,另一个受噪声干扰的线性算子产生出这些隐含状态的可见输出。

为了从一系列有噪声的观察数据中用卡尔曼滤波器估计出被观察过程的内部状态,我们必须把这个过程在卡尔曼滤波的框架下建立模型。也就是说对于每一步k,卡尔曼滤波模型假设k时刻的真实状态是从(k1)时刻的状态演化而来,符合下式:

            

2  实验

环境为pc机,Windows10.0+vs2013+opencv2.4,数据源为汽车上手动拍摄的视频,分辨率为720*480。由于拍摄的视角的垂直向前的,如图-4所示,但车道线检测只关系到路面上的部分区域,所以在识别之前现在将图片进行裁决,实际处理的图片大小为720*240,如图-5所示。Sobel边缘检测效果如图-6所示,图-7和图-8分别为中值滤波和二值化效果;图-9为最后检测效果,图中的1.1%表明向左偏移的比例。

 

-                                            

                     图-9 Hough变换和卡尔曼滤波效果

 


              


                             图-10处理时间


0 0