翁佳昊, 秦永法, 唐晓峰, 高 源, 张浩文, 关 栋
(扬州大学机械工程学院, 江苏 扬州 225127)
自动驾驶车辆集人工智能、车辆技术等众多技术于一体. 车道线检测算法为车辆的自适应巡航、车道线保持、变道超车等功能提供技术支持, 是自动驾驶技术的核心部分[1].车道线检测算法按原理可分为基于车道线特征的检测算法和基于深度学习的检测算法两大类.基于特征的车道线检测算法参数量较少, 计算时间短, 响应速度快, 对硬件要求较低.针对该类算法的准确率问题, Gong等[2]提出基于动态双阈值的车道线检测算法以减少噪声, 提高特征提取的准确性; Xiong等[3]提出一种基于多摄像头融合的车道线检测算法,增强了算法的可靠性; Shen等[4]为解决传统算法在夜间、雨天等复杂环境下准确率低的问题, 提出一种基于动态感兴趣区域和萤火虫算法的车道线检测方法; Yam-Uicab等[5]提出一种适用于图形处理器(graphics processing unit, GPU)并行计算的快速车道线检测算法, 从算法和硬件层面提高了车道线检测算法的响应速度; Pansotra等[6]提出一种基于模糊均值控制的车道线检测算法,提高了该类算法的鲁棒性; 邓元望等[7]提出一种基于DBSCAN二次聚类的车道线检测算法, 提高了聚类算法的准确率; 王其东等[8]提出一种基于投影统计量和双曲线模型的车道线识别算法, 提高了车道线检测的精度和实时性能.上述基于特征的车道线检测算法大部分通过Hough变换来实现车道线特征提取任务,Hough变换对直线的检测准确率较高,但无法区分车道线和道路背景, 故Hough变换前须选定图像感兴趣区域才能分割车道线及背景.感兴趣区域的划分直接影响了车道线检测的效果,且Hough变换对路面噪声较为敏感,检测效果受光照变化影响较大.对此,本文提出一种适用于结构化道路场景下的基于路径搜索的车道线检测算法, 该算法无须选定感兴趣区域,受路面噪声影响较小,能够检测Hough变换无法处理的大曲率车道线检测.
本文以校园场景内的车道线为研究对象, 提出一种基于路径搜索的车道线检测算法, 算法流程见图1.首先对输入图像进行预处理,包括图像灰度化及滤波等操作,过滤部分道路噪声;然后用边缘提取算法根据梯度变化情况提取图像边缘,得到车道线的边缘信息,之后用基于路径搜索的车道线元素点检测算法提取左右两侧车道线;最后对所得车道线元素点使用多项式拟合和最小二乘法拟合得到车道线.相比于用Hough变换提取车道线的方法,该算法无须提取感兴趣区域,增强了算法鲁棒性,同时解决了Hough变化只能检测直线的问题.基于路径搜索的车道线检测算法适用于大曲率的车道线检测,能够实现弯道检测.
图1 车道线检测算法流程Fig.1 Flow of lane detection algorithm
梯度和颜色是图像的两个重要信息.但颜色信息受光照等因素的影响较大, 用颜色信息来进行特征提取的鲁棒性较差.梯度边缘信息能直接反映物体边缘, 不受光照条件的影响, 可选用图像梯度信息作为特征提取依据.灰度化处理将RGB三通道的颜色信息转化为单通道的灰度图像信息, 由于维度的降低, 运算速度大幅提高.图像灰度f(x,y)=0.299×R+0.587×G+0.114×B, 式中f(x,y)表示点(x,y)处的灰度值,R、G、B分别代表红、绿、蓝3个颜色通道的取值.
图像边缘提取是通过计算图像梯度方向获取梯度变化信息, 从而得到物体边缘信息的算法[9], 主要分为以下四个步骤.
图2 横向(a)和纵向(b)的sobel算子Fig.2 Sobel in horizontal direction(a) and vertical direction(b)
3) 非极大值抑制[11].在获得图像的梯度信息后,为去除非边缘的点,须判断像素点是否为局部梯度最大值.若是,则保留该点;否则将该点的像素值设置为0.
4) 双阈值检测.经非极大值抑制获得的图像边缘,会存在部分虚边缘,这些虚边缘可能是真实的边缘信息,也可能由噪声产生, 可以通过Canny边缘检测算法的双阈值检测进行剔除.
为了提取车道线边缘,传统算法根据车道线的线性特征, 使用Hough变换提取边缘信息中的直线部分,须选定感兴趣区域过滤背景干扰,鲁棒性较差,且无法处理大曲率车道线.对此,本文提出一种基于路径搜索的车道线元素点检测算法.由于车道线边缘点相连,确定车道线起始点后不断搜索相邻点,直至没有相邻点时停止,就能完成车道线上所有边缘点的搜索.算法分为以下两个步骤.
首先, 确定起始点.以图像中线为分界线, 从图像中线最下方分别向左右两侧搜寻两边的车道线起始点.设图像大小为1 280×1 024, 图像左上角坐标为(0,0), 右下角坐标为(1 280, 1 024).定义A(i,j)为图像上坐标为(i,j)的点的像素值.以左侧车道线为例, 算法伪代码如下:
1) 设初始值i=1 280/2,j=1 024.
2) IfA(i,j)!=0: 执行步骤5; else: 执行步骤3.
3) Ifi!=0:i=i-1; else:i=1 280/2,j=j-1.
4) IfA(i,j)!=0: 执行步骤5; else: 执行步骤3.
5) (i,j)∈P, 点(i,j)为左侧起始点, 结束算法.
其次, 生成路径.在确定路径起始点后, 搜索起始点的相邻点, 将搜索到的相邻点加入集合P, 直至没有相邻点后终止算法.最终集合P内的点即为车道线点.以左侧车道线为例, 由于车道线向右延伸, 因此只须搜寻右侧邻近点, 可以提高算法的执行速度和提取精度.设确定的起始点为(i,j), 集合Q为待搜索点集合.由于路面不平整, 图像上可能存在选取起始点的干扰点.若选取起始点后生成的路径点小于20个, 则认为该点为干扰点,起始点须重新选取.算法伪代码如下:
1) 取点(i,j)∈Q, 搜索相邻点.
2) IfA(i+1,j)!=0:(i+1,j)∈P,Q.
3) IfA(i,j-1)!=0:(i,j-1)∈P,Q.
4) IfA(i+1,j-1)!=0:(i+1,j-1)∈P,Q.
5) (i,j)临近点搜索完成, 在集合Q中去除(i,j).
6) IfQ=∅, 执行步骤7; else: 执行步骤1.
7) 集合P为包含路径点集, 结束算法.
8) If所得集合P中的点少于20个: 重新选取起始点.
对于校园场景下的弯道线检测,由于车道线存在不连续的问题,为保证所得车道线特征点的拟合效果,在选取起始点生成路径后,若所得特征点数量小于200,则从路径末端再执行一次算法,提取两段弯道车道线,即可保证拟合曲线的精度.
将相机搭载在起亚线控改装车辆上, 输入车道线检测及相应的控制算法, 在某大学校园路段测试车道线检测算法在车道线保持任务中的响应度及准确性.将采集到的图像数据进行离线处理, 并将测试效果与基于Hough变换的车道线检测算法进行对比.
测试使用的操作系统为Ubuntu18.04, CPU为Inter(R) Core(TM)i9-9300, GPU为NVIDIA GeForce GTX 2080Ti.实验平台为图3所示的起亚线控改装车辆.
图3 实验平台Fig.3 Experimental platform
分别用基于Hough变换的车道线检测算法和基于路径搜索的车道线检测算法对采集的校园道路场景图像进行检测,共500张车道图像,其中直线车道420张,弯道80张.经测试,基于Hough变换的车道线检测算法和基于路径搜索的车道线检测算法在检测直道时的准确率分别为88.6%和91.2%.说明基于路径搜索的车道线检测算法在检测直道时的准确率更高.此外,基于Hough变换的车道线检测算法只能检测直道线,而基于路径搜索的车道线检测算法对弯道线检测同样适用.经测试,其弯道线检测准确率为86.2%,检测效果见图4.如图4所示,基于路径搜索的车道线检测算法能够有效检测大曲率的弯道车道线.该算法与控制算法相结合能实现车辆的车道线保持功能,满足响应度与准确性的要求.
图4 基于路径搜索的检测算法对弯道线的检测效果Fig.4 Detection effect of curve based on path search detection algorithm
受边缘提取算法选取的上下阈值的影响,图像可能出现噪声点,从而影响车道线检测的最终效果.图5为不同噪声点影响下的车道线检测算法效果对比.如图5(a)所示,边缘提取图像在阈值的影响下出现不同程度的噪声点.基于路径搜索的车道线检测算法和基于Hough变换的车道线检测算法在路面噪声较小的情况下均能有效检测车道线;但当路面噪声点较多时,基于Hough变换的车道线检测算法检测效果较差,而基于路径搜索的车道线检测算法仍具有良好的检测效果.由此可见,基于路径搜索的车道线检测算法具有较强的抗干扰能力,受噪声点的影响较小,鲁棒性较好.
图5 噪声点较少(上图)和较多(下图)情况下的车道线检测算法效果对比Fig.5 Effect comparison of lane detection algorithms in the case of less noise points (above) and more noise points (below)