APP下载

基于Hough变换的车道检测改进算法研究

2012-11-30夏建刚

计算机工程与设计 2012年4期
关键词:交点车道灰度

李 明,黄 华,夏建刚

(四川大学 电气信息学院,四川 成都610065)

0 引 言

车道检测是车道侧偏检测的前提,是车辆辅助驾驶系统的重要组成部分[1]。车道检测有单道检测 (即本车所在的车道)、多道检测。本文主要讨论单道检测,设置检测出来的车道为后续的车辆检测范围,利用车道的特征进行检测。目前利用车道特征进行车道检测跟踪的方法很多,例如将原图像转化为鸟瞰视图,这样在鸟瞰图像里,车道线就会和现实中的一样平行,不会像原先的图像里那样相交,可以利用这一特征进行车道的检测。如文献 [2]就介绍了一种采用投影变换的方法,然后在变换后的俯视图中使用圆曲线车道模型及基于密度的Hough变换进行识别的方法。但是投影的方法要求每次检测或者跟踪,都要进行投影转换,增加了计算量。针对这些问题,本文提出了利用Hough变换来实现对车道检测的直道检测[3],即先通过统计较小区域的目标像素数目,设置感兴趣区域 (ROI)来判断车道的弯曲方向,然后在该方向上进行弯道像素的搜索,最后采用多段折线的方法对弯道部分进行重建,可实现运算速度更快,计算量更小,准确性更高的目的。

1 直线-曲线模型

如车道模型图所见,本文将车道分为直线-曲线两部分,它们相交的点就叫做偏离点。此类模型的车道函数为直线-抛物线函数[4],如下

式中:ym——偏离点的纵坐标,a,b——直线部分的参数,c,d,e——曲线部分的参数。其中a,b,c,d,e满足下列关系式

式 (2)表示直线与抛物线在偏离点处相交,而式 (3)则表示抛物线与直线在偏离点处的微分值相等。在此模型中,近端直线部分可快速准确的检测出来,但曲线方程的求解就比较耗时间,而偏离点选择得不好的话,可能会得到错误的曲线方程。本文提出一种用Hough变换检测出直线,然后从左右直线车道交点向下遍历,找出偏离点,然后用偏离点到直线交点间的一小块区域内的像素统计来确定车道的偏离方向,进而找出弯道的方法。

2 车道检测

在众多的车道检测方法中比较流行的是利用一次函数或者二次函数进行车道线的拟合。其中一次函数即是利用霍夫变换 (Hough)检测直线[5],得到最长的两条直线即为车道线,这种方法的优点是算法比较简单,在图像质量很好,车道线很明显的时候效果较好,但是缺点非常的明显,假如车道线有缺失,或者有遮挡的时候,就容易检测出错,并且这种方法检测不出弯道。对于用二次函数进行车道线的拟合,它的一大优点就是能够检测出弯道,特别是在弯曲比较剧烈的场景下,Hough变换往往检测不出车道,但是二次曲线却能够检测出弯道。然而二次曲线也有它的缺点,那就是计算量较大,并且检测出的弯道也很容易出错。在文献 [6]也介绍了一种分段直线模型的拟合方法,具有较好的效果。

由于高速公路上的路况基本上是以直道为多,弯道也很少会有急弯,故本文在车道检测及跟踪的时候采用先用Hough变换进行直线检测,确定车道线的大概位置,形状,再找出车道线的偏离点,然后判断车道的偏离方向,进而找出车道的曲线部分的点。这样,就能保证车道线的检测的准确性,不会出现检测出的弯道严重出错的情况。

2.1 设置感兴趣区域 (ROI)

由于车辆防追尾预警系统的应用场景是在高速公路上,车速非常的快,为了能及时的预报可能出现的追尾,就要求摄像机采集图像的速度要快,而单位时间采集的图像帧数越多,系统处理的图像数据也就越大。因此,减小数据量是减少处理时间的一个很好的方法[7]。通过对采集到得数据进行观察可以发现,在图像的上面1/3部分,基本都是天空,这对于系统来说属于没有任何作用的数据,而下面2/3部分则是系统需要的图像数据,所以可以设置图像的下面2/3部分为感兴趣区域 (ROI),对其进行计算。

2.2 直道检测

采集的图像可以先采用大津阈值进行分割,这样就会将车道从背景中分离出来,特别是在图的下半部分,基本只保留了车道线。但是为了快速的检测出直线,还需要进行边缘提取,我们采用Scharr滤波器[8]进行边缘提取。

2.2.1 Hough变换

Hough变换通过将两坐标空间进行相互变换来检测平面上的有规曲线和直线,该变换具有在变换空间中我们所希望的特性,即边缘组凝聚在一起形成峰点的独有特性。

霍夫变换通过将原始图像中给定形状的曲线或者直线上所有点都集中到变换空间的中某一点上 。

如在原始图像上,直线方程为

这里u为斜率,v为截距。pi= (xi,yi)表示此直线上的某一点,它满足下面方程式

可得出如下结论,即变换空间中的某一个点 (xi,yi)和变换空间中某一直线相对应;同样地变换空间中的某一个点 (ui,vi)也与图像空间中的某一条直线相对应。例如图1所示:直线上的点P1,P2,P3,P4,…与变换空间的所有直线的交点 (u0,v0)对应。

而对任意方向或位置直线进行检测,以妨跟垂直直线的斜率产生极限无限大的问题,本来利用极坐标 (ρ,θ)来作为变换空间,方程如下

参量ρ和θ可以单独地确定一条直线。而对图像空间中所有点 (xi,yi)都可以采用极坐标 (ρ,θ)来作为变换空间,坐标方程是

这表明图像上的一点 (xi,yi)对应于极坐标空间的一条三角曲线,其角度与幅值都随 (xi,yi)而改变。

如果把 (x,y)空间一直线上的某一个点序列变换到(ρ,θ)空间,也即所有的三角曲线都要经过一点 (ρ0,θ0),其中ρ0代表该直线至原点的距离,θ0代表法线跟x轴的夹角。

Hough变换将图像中的每一个点都变换到 (ρ,θ)空间,然后在 (ρ,θ)空间中找出所有曲线重合得最多的那一个点,而那一个点的 (ρ,θ)坐标就是图像最长直线的极坐标了。

Hough变换有强抗干扰能力,假设待检测的直线有较细小的虚线或扰动,甚至是断裂,作Hough变换后,都能找到对应的直线。

通过对采集的道路图像进行分析,车道线的角度都比较固定在一个范围内,车道直线的模型如图1所示。

图1 车道直线的极坐标模型

从图1可以看出,由于图像是采用的顶-左结构,那么原点在左上角,Y轴向下,由于左右车道线的位置基本固定在一定的范围内,那么θ1的取值范围为:30°-70°,对于模型a,θ2的取值为:-20°…-70°,对于模型b,θ2的取值为:110°-160°。可统一为:110°-160°。这样 Hough变换的计算量仅为之前的一半[9]。

Hough变换检测车道直线的效果很好,但是对于弯道部分的检测,虽然Hough也可以用来检测曲线,但是对于弯道部分,由于其像素较少,在变换空间不会像直道那样出现明显的峰值,要找出准确的曲线参数相当困难。本文采用先确定偏离点,再向上查找弯道中的像素的方法来实现弯道的检测。

2.2.2 偏离点

偏离点即为车道的直道与弯道部分的交点,从这点开始,车道会偏离直道的方向,向左或者右弯曲,因此准确地检测出偏离点是检测弯道的前提。这里假设 (xm,ym)为偏离点,则其应满足关系式

即偏离点应为车道直线部分的最后一个像素点。可以通过在上文通过Hough变换检测出的直线上搜索出这个偏离点[10]。它的主要特征就是,直线上在它之后的点为黑色背景,于是可以通过判断当前点的下一个点的灰度值是否是0来决定当前点是否要找的偏离点。然而,由于道路状况的复杂性,以及噪声的干扰,使得Hough变换检测出的车道直线上并不是所有灰度值为255的点都是车道线的,而且,对于分段车道线这种特殊情况,即使是遇到灰度值为0的点,也不能简单的判定为偏离点。本文采用从上向下的搜索方式,这样,既可以避免将本应属于直道的部分丢掉。为了提高搜索的效率,同时减少噪声的影响,需要设置搜索的起始点位置。

如图2所示,本文选择ROI分界线与车道直线的交点P1,P2和左右车道直线的交点P0作为候选搜索起始点。当P0在P1,P2的下面时,就选P0作为起始点,当P0在P1,P2上面时,就选择P1,P2分别作为左右车道的搜索起始点。

图2 确定搜索点起始位置

在搜索起始点到偏离点之间也可能会有噪声,为了准确地检测出偏离点,提高抗干扰能力,在遇到第一个白点时,并不马上就判断它是偏离点,而是将该点保存,继续向下搜索,同时记录此后遇到的黑点与白点的数目,当白点的数目先大于5时,就可以认定之前保存的点位偏离点,如果黑点的数目先大于5,则认为之前的点为噪声,将其删除,继续下面的搜索。

通过上面的方法对左右车道分别进行搜索,得到两个偏离点,它们的Y值可能会不一致。此时需要结合左右偏离点进行校正。这里先找出左右偏离点中Y值较低的点(即位置较高的点),得到它的Y值,然后在另一车道上从此Y值开始向下搜索,到原先检测出的偏离点结束,中间若有白点,则它就是新的偏离点。这样就避免把原本属于车道的点误判为噪声。

2.3 弯道检测

目前常用的弯道检测方法都是通过曲线拟合的方式,将弯道拟合成二次或者高次曲线,常用的算法有最小二乘曲线拟合,LMedSquare曲线拟合,也有采用分段折线的方法,比如递归二分折线的拟合方法来进行弯道的拟合,效果不错,再比如在文献 [11]中提到的用LMS算法来进行分段折线拟合的车道线的方法。

本文采用多段折线的方法来实现,多段折线的方法来模拟弯道即先找出图像上属于弯道的点,再将这些点相连,形成弯道。这样就不需要计算复杂的曲线参数,节省了不少的时间。但是此方法的难点在于如何判断一个点是属于弯道上的,仅仅通过它的像素值是255来判断是远远不够的。本文在这里采用在固定区域搜索的方法来找到弯道上的点,再对它们进行多段折线的拟合来模拟弯道。首先,可以确定弯道部分在偏离点以上,同时通过对采集的大量的图像进行观察,发现弯道部分几乎都是在直道交点以下的位置,又由于之前设置了ROI。如果直道的交点在图像的上面1/3处,那么这里将弯道部分固定在偏离点以上,图像1/3分界线以下。如果直道的交点在图像的1/3分界线以下,则将弯道部分的搜索区域固定在偏离点以上,直道交点以下。如图3所示。

图3 搜索区域的划分

图3 表明了本文选择的搜索区域,上下以偏离点所在平行于x轴的直线与ROI分界线 (或者交点所在的水平线)为界,左右不作限定;由于左右车道线具有同向偏离的特点,故可以利用这一特性先进行偏离方向的判定,这时判定偏离方向的统计区域的左右以偏离点所在平行于Y轴的直线和ROI分界线与左右直道线的交点 (也可能是左右车道的交点)所在垂直线为界。判定出偏离方向后就可以在直线的左边或者右边进行弯道检测了。

2.3.1 偏离方向的判定

在图3中,搜索的区域分为4个区域,其中的区域1与区域3对应于车道的左偏,区域2与区域4对应于车道的右偏。通常情况下,当车道线向左偏离的时候,区域1与区域3的灰度值和就要高于区域2与区域4,反之亦然。然而由于图像噪声的存在,以及车道线缺失等影响,仅仅凭借比较灰度值的高低难以准确的检测出车道的偏离方向[12]。常见的区域灰度值分布图像如图4所示。

图4 常见的弯道部分灰度分布

观察图5的右边弯道搜索部分,可以看出是向左偏离,但是在区域4中的白点数目却多于区域3,如果仅仅通过比较区域4与区域3的灰度统计和,就会得出错误的偏离方向。由此可见,需要更加稳定的判别准则来进行偏离方向的判断。

图5 弯道部分的干扰模型

通过观察,可以发现,大部分的干扰时由于在车道线的附近出现了车辆,或者其他道路标志而造成的。因此必须要排除这一类影响,才能得到满意的效果。而车辆或者其他道路标志具有非常明显的方向性,特别是在水平和垂直两个方向。比如在图4,水平方向上的干扰非常多。

图5是一个具有水平和垂直干扰的模型图,图中车道为向左弯曲,区域一的灰度统计和即为弯道上点的灰度和,而区域二有水平线与垂直线,且区域二的灰度统计和大于区域一的。通过对弯曲线与水平线和垂直线的观察可以发现,水平线的Y值是固定的,也有可能在一个很小的范围内波动,而垂直线的X值是固定,当然也可能在一个小范围内波动,而弯曲线的x,y值就具有明显的方向性变化。利用这一特点,可以采用将每一行,每一列的白点只记录一次的方法,这样,水平与垂直方向的干扰就会变得微乎其微了。

另外一个需要考虑的就是车道线缺失的问题[13]。假设车道是向右弯曲的,左边车道的弯道有缺失,加上有部分噪声的影响,这种情况导致判断左偏的错误。而右边部分的车道偏离方向则不会出现错。为了避免这种情况,可以采用将左,右车道结合起来考虑的方法[14]。同时对4个区域进行灰度值的统计,分别为mg,mr,mp,mb。然后按照以下步骤进行处理:

(1)分别对mg,mr和mp,mb进行大小判断,当mg>mr时,若mp>mb则说明车道左偏,否则转入步骤 (2),当mg<mr时,如果mp<mb,则说明车道右偏,否则转入步骤 (3)。当mg=mr时,如果mp=mb,则判定车道为直线,没有偏离,否则转入步骤 (4)。

(2)若 mg-mr>mb-mp,则判定车道左偏,否则判定车道右偏。

(3)若 mr-mg>mp-mb,则判定车道右偏,否则判定车道左偏。

(4)如果 mp>mb,则判定车道左偏,否则判定车道右偏。

2.3.2 搜索弯道上的点

在判定了车道的偏离方向后,就可以在指定区域内搜索弯道上的点了,如果判定车道左偏,那么就在车道线的左边以及搜索上限之间的区域,如果判定车道右偏,则在车道线的右边与搜索上限之间的区域内搜索。然而在搜索区域内的白点并不都是弯道上的点,只有满足某些条件的白点才能判定在弯道上。一个最为明显的特征是弯道上的白点所在的切线的斜率是渐变的,即弯道上相邻点所连直线的倾斜角度是近似相等。然而,对每两个相邻点都计算倾斜角度或者斜率的花费较大,为了节约时间花费,本文采用一种动态改变搜索区域的方法[15]。这种方法主要是利用弯道的弯曲方向,来估计弯道上像素的分布趋势,通过预测的趋势来减小搜索范围,这样既减少了搜索时间,又排除了噪声的影响。

在图5里曲线与直线之间作水平线,离偏离点越远,线段越长。利用这一特性,可以进一步缩小扫描范围。下面以左偏为例,处理步骤如下:

(1)从偏离点上一行直线上的点P0开始,向左边搜索,当遇到白点则保存该点,并保存该点与P0的距离m,并跳到步骤 (2)继续执行;如果已经搜索5个点,仍然没有,则令m=0,同样跳到步骤 (2)执行。

(2)转到当前行的上一行,找到直线在此行上的点Pi,此时并不从此点开始,而是,根据上次搜索的距离m,从Pi左移m处的点开始搜索,同样以5个像素为限定。如果找到,则保存找到的点,并继续转到上面一行执行,如果没有找到,则向右搜索5个像素范围,如果找到,则将前次所保存的点删除,重新保存此点,并转到上面一行执行,如果仍旧没有找到,则不保存任何点,转到上面一行进行搜索。

通过上面的处理,将弯道上的点找了出来,然后再用直线将相邻的点相连,就形成了多段折线。图6为弯道检测的效果。

图6 弯道检测效果

3 结束语

本文首先介绍了车道检测中常用的一些方法和车道模型,并确定了采用直道-弯道的模型;然后采用大津阈值与边缘检测向结合的方法来完成车道线的提取;在直道检测部分采用Hough变换,然后确定偏离点,最后根据区域的像素灰度统计确定偏离方向,最终用多段折线拟合弯道。该算法,能够比较准确稳定地检测出车道,并且计算量较小,能够较好的满足实时性的要求。

[1]ZHANG Wenpu.Video vehicle detection technology and development trend[J].Journal of Chinese People’s Public Security University(Natural Science),2010,15 (1):91-94 (in Chinese).[张文溥.视频车辆检测技术及发展趋势 [J].中国人民公安大学学报 (自然科学版),2010,15 (1):91-94.]

[2]MA Ying,LI Keqiang,XU Youchun,et al.Lane detection method based on improved transform mapping formulas [J].Journal of Tsinghua University (Natural Science),2005,45(11):1530-1533) (in Chinese). [马莹,李克强,徐友春,等.基于改进的投影变换公式的车道识别方法 [J].清华大学学报 (自然科学版),2005,45 (11):1530-1533.]

[3]LIU Yanbing.Tunable filter based on the direction of lane recognition party method[D].Chengdu:UESTC Master Thesis,2009(in Chinese).[刘燕兵.基于方向可调滤波器的车道线识别方法研究 [D].成都:电子科大硕士学位论文,2009.]

[4]LIU Jianwei,WANG Jiarui,CAO Quan,et al.Accurate segmentation algorithm of vehicles based on shadow of chassis[J].Modern Electronic Technology,2010,32 (5):154-160(in Chinese).[刘建伟,王佳锐,曹泉,等.基于车辆底盘阴影的车辆精确分割算法研究 [J].现代电子技术,2010,32(5):154-160.]

[5]WU Changqi,ZHU Hong.Drive recognition [J].Electronic Measurement Technology,2005,27 (4):43-45 (in Chinese).[吴长奇,朱红.车道识别技术 [J].电子测量技术,2005,27 (4):43-45.]

[6]Claudio Rosito Jung,Christian Roberto Kelber.An improved linear-parabolic model for lane following and curve detection[C].Proceedings of the XVIII Brazilian Symposium on Computer Graphics and Image Processing,2005:131-138.

[7]Abdulhakam AM Assidiq,Othman O Khalifa,Md Rafiqul Islam,et al.Real-time lane detection for autonomous vehicles [C].Kuala Lumpur,Malaysia:Proc of the International Conference on Computer and Communication Engineering,2008:82-88.

[8]SUN Zhanquan,GUO Mu,LIU Wei,et al.Multisource traffic data fusion with entropy based method [C].International Conference on Artificial Intelligence and Computational Intelligence,2009:506-509.

[9]JIA Xin.Study on lane recognition method of intelligent vehicle visual detection[D].Changchun:Jilin University PhD Thesis,2008(in Chinese).[贾鑫.智能车辆视觉感知中的车道标线识别方法的研究 [D].长春:吉林大学博士学位论文,2008.]

[10]DONG Chunli,DONG Yuning.Survey on video based vehicle detection and tracking algorithms [J].Journal of Nanjing University of Posts and Telecommunications (Natural Science),2009:88-94(in Chinese).[董春利,董育宁.基于视频的车辆检测与跟踪算法综述 [J].南京邮电大学学报 (自然科学版),2009:88-94.]

[11]LEE Jinwook,CHO Jaesoo.Effective lane detection and tracking method using statistical modeling of color and lane edge-orientation[C].Fourth International Conference on Computer Sciences and Convergence Information Technology,2009:1586-1591.

[12]Bram Alefs,David Schreiber.Accurate speed measurement from vehicle trajectories using AdaBoost detection and robust template tracking [C].Seattle,WA,USA:Proceedings of the IEEE Intelligent Transportation Systems Conference,2007:405-412.

[13]HUA Bin.Intelligent vehicle in road detection and target detection technology[D].Chongqing:Chongqing University Master Thesis,2008(in Chinese).[华冰.智能车辆中的道路检测与目标检测技术研究 [D].重庆:重庆大学硕士学位论文,2008.]

[14]HU Bin,HE Kezhong.Lane detection method based on segmentline model and ATN [J].Journal of Tsinghua University(Natural Science),2006,46 (10):1762-1766 (in Chinese).[胡斌,何克忠.基于分段直线模型和ATN 的车道识别方法 [J].清华大学学报 (自然科学版),2006,46 (10):1762-1766.]

[15]WANG Wenjie.Regional and vision based road lane recognition technology in intelligent vehicle navigation system [D].Jinan:Shandong University master thesis,2009 (in Chinese).[王文杰.基于视觉的道路区域和车道线识别技术在智能车辆导航中的应用研究 [D].济南:山东大学硕士学位论文,2009.]

猜你喜欢

交点车道灰度
采用改进导重法的拓扑结构灰度单元过滤技术
北斗+手机实现车道级导航应用
避免跟车闯红灯的地面车道线
基于灰度拉伸的图像水位识别方法研究
浅谈MTC车道改造
阅读理解
借助函数图像讨论含参数方程解的情况
基于最大加权投影求解的彩色图像灰度化对比度保留算法
试析高中数学中椭圆与双曲线交点的问题
基于灰度线性建模的亚像素图像抖动量计算