基于自适应透视变换与特征融合的车道线检测方法
2022-12-19黄艳国钟勇夏金龙
黄艳国,钟勇,夏金龙
(江西理工大学电气工程与自动化学院,赣州 341000)
随着国民经济的发展,私家车的保有量不断增加,在给人们出行带来便利的同时也导致交通事故频发。根据公安部关于交通事故的统计数据,有超过五成的交通事故是与车辆偏离行驶轨道有关。车道偏离预警[1](lane departure warning system,LDWS)通过车道线识别来确定车辆与车道线的关系,以确定车辆与轨道的位置,当车辆偏离车道时,系统就可以获知并通过声音、震动等方式来提醒驾驶员,避免在车辆越过车道线后发生碰撞,因此准确高效地车道线检测对实现车辆的辅助驾驶[2]至关重要。
传统的车道线检测方法多是使用边缘检测加滤波等方式切分出感兴趣区域,再结合霍夫变换、最小二乘法等算法来实现车道线检测。霍夫变换在直线检测上有着很高的准确率,但弯道检测效率不佳;最小二乘法可于检测弯道,但无法用于拟合间断型的曲线[3-4]。近年来深度学习也运用到车道线检测当中[5-6],但由于其需要较高的硬件支撑,所以在实际的应用中还有待探索。一些专家、学者在传统方法的基础上进行改进研究,取得了一些成果。钱基德等[7]在感兴趣区域模型基础上,使用改进Hough变换检测车道再通过逆透视变换消除伪车道来完成车道检测。该方法在直道检测中效果较好,但由于Hough变换的局限性,导致弯道处的车道线检测较为困难。姜泽等[8]通过霍夫变换确定近端区域直线,在确定样条曲线控制点后使用Catmull-Rom样条曲线确定远端区域曲线。该方法提升了弯道检测性能,但控制点的寻求方法较为复杂,导致计算量较大。贾会群等[9]使用具有方向性的检测器对道路进行边缘检测,再通过BP(back propagation)神经网络确定模型参数并完成左右车道的检测,最后使用最小二乘法实现车道线的重构。此方法具有较好的鲁棒性,但由于最小二乘法只适用于识别连续的车道线,当车道线是虚线或路面破损时,将很难寻找到合适的拟合函数进行拟合。
为了解决上述方法中由于弯道检测效果不佳导致整体准确性不高的问题,使用自适应透视变换对畸变图像进行矫正,再通过自适应滑动窗口法拟合出车道并确保算法的实时性,以达到提升弯道识别率的目的。
1 自适应透视变换模型建立
1.1 透视变换
车载摄像头所采集的车道线图像是世界坐标系下的物体在二维平面的投影。图像中的车道线在远处汇聚成一个点,直接在原始图像中对车道线进行提取和拟合的难度较大。采用透视变换将车道线转换成鸟瞰图形式,再对世界坐标系下的鸟瞰图进行车道拟合是有效的解决方法之一[10-11]。
图1 世界坐标系、相机坐标系及图像坐标系的关系
(1)
(2)
式中:u为像素空间中某一像素点的x轴坐标;v为像素空间中某一像素点的y轴坐标;c为该像素点在现实图像中的x轴大小;r为该像素点在现实图像中的y轴大小;k为像素和距离单位之间的比例关系,即每米占多少个像素点。
通过求得透视变换矩阵就能够实现像素(图像)空间目标到世界坐标系下对应目标的变换,实现对畸变部分的矫正。
1.2 自适应透视变换模型
车辆在行驶中由于路面颠簸会使得摄像头的倾斜角度发生改变,导致车辆所拍摄的行车视频存在图像畸变。而在普通透视变换中一般采用固定参数,这使得变换矩阵也是固定的,这将无法矫正由于摄像头倾角变化所导致的图像畸变。使用的自适应透视变换模型,透过添加摄像机俯仰角,能够实现图像畸变的自适应矫正。
为了建立自适应透视变换模型,使用图1模型的侧视图和俯视图中所描述的参数来计算摄像机所得图像在世界坐标系中的位置。图2、图3分别为模型侧视图和模型俯视图。
θ0为摄像机倾斜角;α为摄像机垂直视角的1/2;β为摄像头水平视角的1/2;θc为相机的俯仰角;fr与fc分别为垂直焦距和水平焦距;X为相机到前方拍摄物体的现实距离;为沿摄像机视角方向取垂直焦距长度作x轴原点在作垂线的一个交点,为了突出水平焦距的位置;Y为世界坐标系下的Y轴
先从侧视图入手在世界坐标系下,通过像素点v、相机倾斜角和垂直角可以用来表示X轴方向上的任意点,于是可以得到X(v)的表达式[式(3)];再由俯视图得到Y(u,v)与X(v)之间的比例关系进而推导出Y(u,v)表达式[式(4)]。
(3)
(4)
综上已经求得Y(u,v)与X(v)的模型表达式,同时观察模型俯视图(图3)可知,P点与Z轴相重合,为简便计算可假设该模型中Z=0。传统透视变换模型中将摄像头的倾斜角视为固定值,但是在车辆实际运行时,由于路面的颠簸,倾斜角会发生细微的变化,导致在图像转换时出现偏差。为了解决这个问题,在上述模型中添加俯仰角θc,即将Y(u,v)与X(v)中的θ0替换成(θc+θ0),使得模型可以实时更新像素点在世界坐标系下的变化情况。截取测试视频中的一帧图像进行畸变矫正,矫正结果如图4所示。
y为拍摄物体的现实宽度
图4 原始图形畸变矫正前后对比
通过对比图4中矫正前后的图像,可以观察到图像下边缘处的畸变得到了矫正,这将有利于提升后续鸟瞰图转换的精确度。
2 图像预处理
2.1 灰度化处理
彩色图像中蕴含大量的信息,直接在原图像的基础上处理会导致计算量巨大。而车道线一般都是白色或黄色的醒目标线,灰度化后易于识别,并且能够简化计算矩阵和提高运行速度。将校正后的图像转换成HLS格式并绘制其各个通道的图像,然后对比RGB、HLS格式下各个通道的图像,找出灰度化效果最好的通道。截取测试视频中的一帧图像进行测试,各通道灰度化处理效果如图5所示。
图5 HLS、RGB格式下各通道灰度化效果对比
对比图5中的各通道灰度化效果图可以发现,HLS图像格式下的S通道的灰度化效果最好,车道线与道路背景的梯度差最大,有助于提升后期检测的准确率。在图像亮度较暗的情况下HLS图像格式下的灰度化效果较差,RGB图像格式下的R通道效果较好,所以在实际的处理中需要根据图像的亮度来调节灰度化的通道选择,当亮度值L小于35时选择使用R通道下的灰度化图像。
2.2 基于特征融合的二值化处理
2.2.1 边缘检测
灰度化后的图像还存在部分噪点以及一些后续处理所不需要的颜色或者特征,为了简便计算,提升运行速度,需要进行图像滤波和二值化处理。
车道线边缘检测常用Sobel算子计算,该算子利用局部差分寻找边缘,得到近似的梯度值[12]。为了找到最适合车道线检测的边缘检测算子,通过对比Canny算子、LOG算子、Scharr算子以及Laplacian算子和Sobel算子在RGB、HLS图像格式下的检测效果,从中选择检测效果最好的检测算子,处理效果对照如图6所示。
图6 不同边缘检测算子检测效果对比
通过观察效果对比图(图6)可以发现,Sobel算子在HLS格式下的X方向上的边缘检测效果最好,并最终采用该算子作为最终的边缘检测方法。由于Laplacian算子、Canny算子和LOG算子都采用了高斯滤波,虽然在抑制噪声方面效果较好,但却使得图像中的局部低强度边缘无法识别,导致在环境因素和光影变化的强干扰下以上3种算子的检测效果都不太理想。Scharr算子具有和Sobel算子一样的计算速度,并具有更高的精度,使得其对图像中的低强度边缘具有更强的敏感性,导致道路背景中出现大量的噪点。
2.2.2 颜色特征提取
由于单纯依靠Sobel算子得到的车道边缘特征还不够清晰明亮,无法直接用于车道线识别。因此采取颜色特征与边缘特征叠加的方式来提升二值化的精确度,并通过设置颜色阈值范围,在原始图像中提取出车道线的颜色特征。选取明亮和昏暗两种光线条件下的图像进行颜色特征提取测试,颜色特征提取结果如图7所示。
图7 光线昏暗与光线明亮时弯道颜色特征图
2.2.3 特征融合
最终采用车道线颜色特征与Sobel 算子在HLS格式中提取的梯度特征进行特征融合,来完成最终的二值化。若直接对颜色信息及梯度信息进行叠加,会导致结果漂移的现象。解决方法是,在特征融合时对颜色信息与梯度信息进行加权平均处理。通过不断比对使用不同权重进行特征融合后的车道识别效果,最终发现在梯度信息权重为0.25、颜色信息权重为0.75时能获得较好的拟合结果,图8为特征直接叠加与采用该权重加权平均后的车道拟合对比图。
观察图8可知,图8(a)中直接对两种特征信息进行叠加,会导致检测结果偏离车道真实位置甚至检测失败,这是由于光影干扰和地面破损使得梯度信息存在裂缝所导致。而在采用上述权重进行加权平均融合的图8(b)中,能够准确拟合出真实车道线,且拟合曲线清晰、光滑。采用该权重进行特征融合,得到的最终二值化效果图如图9所示。
图8 特征直接叠加与加权平均后的车道拟合效果图
图9 光线昏暗与光线明亮时弯道二值化效果图
2.3 感兴趣区域提取
图像处理过程中,通过方框、圆、不规则多边形等方式在图像中截取出待处理区域,该区域被称作感兴趣区域(region of interest,ROI)。检测时主要对图像中的车道线进行处理,通过在二值化图像中确定感兴趣区域的4个顶点坐标来截取出车道线区域,使得车道线之外的道路背景得以剔除。同时利用自适应透视变换模型所得变换矩阵将感兴趣区域转换成鸟瞰图的形式,以便后续对车道线进行拟合,图10为感兴趣区域处理与鸟瞰图示例。
图10 ROI处理与鸟瞰图
从鸟瞰图转换效果图[图10(b)]中可以看出,感兴趣区域提取后的车道线不再有背景环境的干扰,车道线清晰可见,有利于后期进行车道线检测处理。
3 基于自适应滑动窗口法的车道检测算法
3.1 车道线定位
在进行车道线拟合前需要对左右车道进行定位,以便于设置滑动窗口的起始位置。二值化后的鸟瞰图只包含黑白两种色值(白色为1、黑色为0),将图像转换为数据矩阵的形式,如(720×1 280×1),再对横轴进行统计,可以得到(1×1 280)个向量,将得到的统计峰值作为车道线搜寻的起点。
3.2 车道线搜寻过程
获得两条车道线的起始位置之后,使用自适应滑动窗口法对车道线进行搜寻。首先设置搜寻窗口,利用车道线定位中所得的车道起始点作为搜寻的起点,并以当前的起点为中心进行网格化搜寻。选择参数初始化,参数更新以及平滑优化3个步骤对算法中心思想进行阐述。
(1)参数初始化。设定搜寻窗口的参数,包括外接矩形宽度width、矩形高度height及鸟瞰图中点Mk=(uk,vk),其中(uk,vk)为鸟瞰图中点像素点的坐标值。窗口宽度和窗口高度可以通过式(5)、式(6)计算。
w=4W-1
(5)
h=Q/n
(6)
式中:W为车道宽度像素值;Q为鸟瞰图的高度;n为滑动窗口数目;w、h分别为滑动窗口的宽度和高度。
(2)参数更新。每个窗口分别进行垂直和水平方向的直方图统计,得到窗口中非零像素点的个数,并根据以下不同情况进行参数更新。
当第k次窗口中非零像素点的数目小于60时,取第k-1个窗口的上边缘中点与第k个窗口的下边缘中点进行拟合,将其作为当前窗口内车道线延长方向的参考线,通过求得该延长线与直线lk=(vk+h)的交点后,再进行取整来得到第k+1个窗口中点Mk+1=(uk+1,vk+1)。
当第k次窗口中非零像素点的数目大于或等于60时,对窗口中的非零像素点进行二阶多项式拟合,得到曲线方程x=ay2+by+c,再通过令y=imgh,计算得第k+1次窗口的搜寻基点,其中imgh表示当前搜索窗口的位置高度。
当第k次窗口中未检测出任何非零像素点时,则延续使用第k-1次更新的信息。
(3)平滑优化;结束车道搜寻后将得到k个搜寻窗口,每个窗口中均存在曲线。利用每个窗口得到的参数方程做一个平滑优化处理,来获得平滑的车道线。具体过程如下。
首先将k个曲线方程分成k/3组,每组中有3个曲线方程,任选其中的两个方程组成新分组数据。然后将新分组的曲线方程进行离散化处理,假设已知其中一条曲线方程l为x=ey2+fy+g,其中e、f、g为二阶多项式的待定参数,在进行像素点拟合时会进行更新,随机选取一组x值为[x1,x2,…,xn],对应y值为[y1,y2,…,yn],从而可以利用采样点集合{(x1,y1),(x2,y2),…,(xn,yn)}来近似表示曲线方程l,以此达到曲线方程离散化的目的。离散化后的特征对异常值具有很强的鲁棒性,使得模型更加稳定。最后对离散化后的坐标点取均值再进行二阶多项式拟合处理,算法具体流程图如图11所示。
图11 算法检测流程图
选取光线明亮与光线昏暗场景下的道路原始图像,进行对比测试来检验所提算法的有效性,原始图像与车道搜寻效果对比如图12、图13所示。
图12 光线明亮条件下的车道搜寻结果
图13 光线昏暗条件下的车道搜寻结果
通过对比图12、图13可知,所提算法在光线明亮和光线昏暗条件下的车道搜寻结果良好。所提算法的搜寻窗口能够根据摄像机和车道像素信息进行窗口的自适应调整,通过切分车道线并沿车道线的曲率方向进行搜寻。实验显示,经过平滑优化后的曲线光滑清晰,拟合效果良好、泛化能力较强。
4 实验与分析
4.1 算法识别率的对比与分析
为了验证本文算法在复杂路况下的检测能力,使用的实验视频采集了不同光照,不同道路环境下的车道线视频。该实验视频由车载相机拍摄,车辆速度为65~90 km/h,视频帧率为29帧/s,图像分辨率为1 280×720。为测试自适应滑动窗口法在弯道处的拟合能力与其他传统算法的性能差异,选取3组弯道数据对本文算法的弯道检测性能进行测试。测试数据1中包含较多断续型弯道图像,测试数据2中包含部分的道路破损类型弯道,测试数据3中大部分为城市弯道。选取本文算法与传Hough算法,OTSU算法以及Catmull-Rom算法进行弯道检测性能测试,采用车道识别率作为对比指标,测试结果如表1所示。
表1 不同算法的弯道识别率对比
由于霍夫变换在弯道处的检测缺陷导致整体的准确率不高。OTSU算法针对单一的车道的检测效果较好,但由于测试图像中包含大量的环境影响因素,使得该算法出现误分割[13]。Catmull-Rom样条曲线算法整体的检测效果较好,但是由于控制点的选取方法不够成熟,导致远端曲线的拟合出现误差。综合测试结果来看,本文算法在复杂环境中的平均弯道识别率达到了91.17%,综合弯道拟合效果较好。
为了对比本文算法在综合路况下的识别能力,再对以上4种算法进行整体的识别率检测。采用3段复杂路况下的行车视频进行测试,测试视频中包含各种复杂路况,覆盖了日常生活中绝大部分的车辆使用场景,表2为4种算法的整体识别效率对比。
表2 不同车道线算法的整体识别率
通过对比表2中数据可知,传统Hough算法的整体识别率最低,平均识别率仅有81.81%。本文算法平均识别率达到95.59%,相较于传统Hough算法提升13.78%,成功达到通过提升弯道识别率来提升整体识别率的目的。
4.2 算法检测效率对比与分析
检测效率是衡量算法性能的重要指标之一,选择4.1节中用于测试整体路况识别率的数据来检测算法的处理速度,依旧采用4种算法进行对比分析。图14为4种算法在同一测试条件下的检测效率对比。
图14 不同算法检测效率对比
通过对比图14中的算法效率可知,传统Hough变换的检测效率最低,这是由于传统Hough算法需要检测图像中的所有的车道边缘,再从中筛选出车道从而导致检测效率不高。其次OTSU算法容易受到复杂光影的影响,导致算法的处理速度下降。本文算法的检测速度相对略高于Catmull-Rom算法,平均车道检测耗时36 ms/帧,提升了算法整体识别率,也保证了算法较好的实时性。
4.3 不同场景下的车道线检测
本实验选取城市道路、山路、隧道、高架桥4种常见的道路环境来验证算法的检测效果。其中不同道路有不同的光影环境,如山路环境下光线昏暗,高架桥环境中有雾霾的干扰,尽可能地模拟真实的行车环境。检测效果如图15所示。
Bendradius为弯曲半径;以0.501 m left of center为例,表示中心左侧0.501 m
车道拟合效果来看,该算法的泛化能力较强,能够针对不同的道路环境、光影环境,进行较准确的车道线检测,且具有较强的鲁棒性。还可将车道曲率以及车辆相对位置显示在左上角,能够为车道偏离预警以及车道保持提供数据支持[14]。
5 结论
通过使用自适应透视变换模型,排除车辆颠簸所造成的图像畸变影响,提升鸟瞰图转换的精确度以及系统整体鲁棒性,车道拟合方面采用自适应滑动窗口法拟合车道。实验结果表明,本文算法具有良好的弯道识别率、检测精度高、泛化能力强。鉴于该方法弯、直道检测能力的优势,可初步运用于辅助驾驶系统中,例如车道巡航、车道保持以及车道偏离预警等方面。下一步将对算法的处理速度进行提升,以便进一步的满足自动驾驶对算法实时性的要求。