1. 引言
随着国内交通领域和经济的飞速发展,汽车在人们生活中得到了广泛的普及,随之而来的却是交通事故发生率不断攀升,每年都有许多人由于驾驶中的疏忽大意丧生于交通事故中或给他人造成伤害。汽车给人们带来便利的同时,也给人们的生命和财产带来了巨大损失。经汽车安全专家指出:约有50%的汽车交通事故是因为汽车偏离正常的行驶车道引起的,并且多发于复杂车道,例如弯道行驶。究其原因主要是驾驶员心神烦乱、注意力不集中或驾驶疲劳。由此,无人驾驶技术和智能驾驶辅助系统得到了飞速发展,大大降低了由于司机疲劳驾驶引起的交通事故率。本文研究的重点是复杂车道检测算法,该算法在无人驾驶中应用广泛,是其必不可少的一部分,广泛应用于自动泊车、路径规划、自动避障等多个无人驾驶领域。
当前基于无人驾驶有关直道的车道线检测技术日趋成熟,人们用不同的方法在直线检测上取得了较好的成果。文献 [1] 提出基于Snake的车道线检测方法,通过利用车道线消失点的结构特征进行车道线检测,并用Snake方法对车道线进行迭代拟合;文献 [2] 提出基于随机抽样一致性的车道线检测方法,此方法利用车道线平行的结构特征进行车道线检测;文献 [3] 中提出利用形态学图像处理技术,基于形态学变换的道路检测方法,能够应用形态学变换、Canny边缘检测与Hough变换检测出直线道路车行道的边缘线。
然而,现有的技术仍然无法准确的检测复杂车道线以及非标准车道线,对复杂车道线及非标准车道线的检测方法研究是无人驾驶中的一个难局。文献 [4] 提出一种基于机器视觉的车道检测与重建方法。采用链码算法检测分道线,用链码来记录车道线轮廓信息,再基于曲率模型的卡尔曼递推估计方法来估计当前的车道线位置,同时用来预测和检测下一时刻的车道线位置,并建立了车道数学模型。文献 [5] 提出一种基于多特征信息融合优化的鲁棒性车道线检测算法。首先构建了基于二次曲线空间道路模型图像中左右车道线数学模型;然后融合像素梯度值、梯度方向、像素灰度以及车道线结构等多特征信息,构造后验概率函数;最后采用基于免疫克隆策略的改进粒子群优化算法优化车道线模型参数,实现车道线提取。文献 [6] 提出利用Hough变换来实现对车道检测的直道检测。而对于弯道部分的检测,通过统计较小区域的目标像素数目,设置感兴趣区域(ROI)来判断车道的弯曲方向,并在该方向上进行弯道像素的搜索,采用多段折线的方法对弯道部分进行重建。
实际道路状况复杂多变,各种干扰因素加大了车道检测的难度。国内外学者对于不同的干扰因素已提出了诸多算法,例如针对交通场景中运动车辆的车道检测方法 [7] 、基于车载单色摄像机提供的图像检测和跟踪车道的鲁棒方法 [8] 、基于可控滤波器进行车道检测的方法 [9] 、针对夜间的车道检测算法 [10] 。
当今现有的车道检测算法实用性和鲁棒性低,检测复杂车道线及非标准车道线的准确度及鲁棒性低,为了更好地解决这一问题,突破车道检测的困局,本文基于视觉处理将多种算法进行融合,构建了一个相对完善的视觉处理系统,能够有效地适用各种不同的行车环境,降低天气、光照等因素对车道检测的影响,通过实测与比较发现该方法提高了车道检测的准确性、实用性和鲁棒性。无人驾驶的技术难局在于感知周围环境,车道检测算法的进步对无人驾驶的发展起着不可忽视的推动作用。
2. 本文提出的车道检测算法
2.1. 车道检测基本原理
由于当前车载摄像头多为广角摄像头,在摄像头采集图像范围增大的同时,因为透镜自身的原因又会导致图像产生畸变,通过计算相机校正矩阵和失真系数获得相机的内外参数和图像的畸变参数,根据这些参数对图像进行校正。
为了降低颜色对检测结果的影响,提高算法的鲁棒性和准确性,减少算法的计算量,本文采用了梯度检测的方法对灰度图进行处理得到二值图像。由于实际道路的复杂性,单一的方法并不能很好地提取出车道线的边缘像素点,但过多的方法会加大算法的计算量。为解决这一难题,本文算法对视频的第一帧图像采用多种方法结合得方式提取车道边缘像素点,进而推算出车道线位置。在前一帧图像的基础上得到四条动态滑动曲线,通过这四条滑动曲线来限制提取车道线边缘像素点的区域。经验证,这种动态滑动曲线的方法在保证了算法的准确性的同时减少了算法的计算量。
最后,对所得到的边缘像素点进行曲线拟合来推算出车道线位置。车道检测基本原理图如图1所示。
Figure 1. Basic principle of lane detection
图1. 车道检测基本原理图
2.2. 相机标定
在实际状况下,由于透镜本身的制造误差以及组装工艺上的偏差会造成图像的径向畸变和切向畸变。畸变是对直线投影的一种偏移,简单来说就是一条直线投影到图片上不再是一个直线。由于摄像机的镜头畸变不可避免,为了降低图像畸变的影响和提高车道检测的准确性,需要对所获得的图像进行矫正。
本文利用平面棋盘格标定法 [11] 对图像进行校正。该标定方法介于摄像机标定法和自标定法之间,既克服了摄像机标定法需要高精度的三维标定物的缺点,又解决了自标定法鲁棒性差的难题。标定过程中,只需要一个棋盘格标定板,并且从不用方向拍摄几组图片即可,具有实用灵活、准确性高、鲁棒性好等特点,是目前主流的标定方法。
2.3. 边缘保留滤波
边缘保留滤波 [12] [13] [14] 是一种非线性滤波器,与其他滤波器相比,对于图像的边缘信息具有更好的保存效果。边缘保留滤波也是通过卷积模板对图像进行加权平均来更新每个像素的灰度值。卷积模板中的系数W为一个与空间距离相关的高斯函数与一个与灰度距离相关的高斯函数相乘。
空间距离指的是当前点与中心点的欧系距离。空间域高斯函数
其表达式为:
(1)
式(1)中:
为当前点的位置,
为中心点的位置,
为空间域标准平方差。
灰度距离指的是当前点灰度与中心点灰度的差的绝对值。值域高斯函数
其表达式为:
(2)
式(2)中:
为当前点的灰度值,
为中心点的灰度值。
两者对应的权重系数相乘(即
)得到最后的权重系数。将校正过的图像转为灰度图像,并使用直径为2的卷积模板对该灰度图像进行边缘保留滤波。在图2中图2(a)、图2(b)和图2(c)依次示意了滤波前的像素分布、有边缘时的权重系数分布和最后的滤波的结果,从图2(b)中可以看出权重系数在边界处有很明显的分界。因而,对图像进行边缘保留滤波时,以边界处为分界,滤波后的某个像素值几乎只和与该像素同属一侧的像素值有关。
(a) (b) (c)
Figure 2. Edge preserving filtering principle diagram
图2. 边缘保留滤波原理图
2.4. 梯度检测
车道线具有明显的颜色特征,将原图像转换为灰度图像后,车道线的边界处会有显著的灰度变化,即梯度。Sobel算子在梯度检测上具有较好的表现,并且Sobel算子对图像的“噪声”敏感性低,因此本文选用Sober算法进行车道线检测。
检测方法为:首先,以图像的左上角为坐标原点,以图像右侧为x轴正方向,以图像下侧为y轴正方向建立图像坐标系,由于车道线的梯度变化主要体现在x轴方向上,所以仅对x轴方向的梯度进行检测,其中,x轴方向上Sobel的卷积因子为:
(3)
然后,用卷积因子
对滤波后的图像作卷积运算,以检测车道边缘;最后,设置一个梯度阈值,对梯度检测所得到的图像进行二值化,突出车道线边缘像素。
这是由于相机本身的原因,根据梯度阈值所得到的二值图像会存在一定的噪点,即一张图片生成时会或多或少存在一些“不应该存在的杂质”,因此噪点的多少可作为图片的质量评测项目之一。
数学形态学腐蚀可以除去图像中细小的噪点,可以采用
的结构元素对原图进行腐蚀操作来减小图像噪点对检测结果的影响。结构元素不宜过大,否则会大大减少车道边缘像素点。图3中图3(a)~图3(b)是最终所得到的二值图,这些二值图基本上不存在细小噪点。
(a) (b) (c) (d)
Figure 3. Two valued image after mathematical morphology processing
图3. 数学形态学处理后的二值图像
2.5. 特征点及曲线拟合
利用梯度阈值和数学形态学腐蚀所得的二值图像中仍存在许多非车道线边缘像素点。单一的方法并不能很好地排除这些非目标像素点,因此本文对第一帧图像的二值图像采用多种方法结合的方式来提取出车道线边缘像素点。
左右车道线会在一定范围内变化,利用两条斜直线将左右车道线分别固定在一定区域。排除区域外非车道线像素点,增强检测效果。
在图像的前视野中,左车道线像素的x坐标随着y坐标的增大而逐渐减小,右车道线像素的x坐标随着y坐标的增大而逐渐增大。另外车道线像素的x坐标与y坐标之比在一定范围呢。利用这些关系可以排除非车道线边缘像素点。
计算出所提取边缘像素点的平均数和中位数,设置一个阈值来排除一些非车道线边缘像素点。
将上述方法结合可以较好地提取出车道线的边缘像素点,但这种方式的计算量比较大,不符合实时应用的要求。为了解决这一难题,本文提出动态滑动曲线提取特征点的方法。第一帧图像利用多种方法结合的方式提取车道边缘像素点,后续图像利用动态曲线提取车道边缘像素点。
首先,构建前一帧图像的边缘像素点的车道曲线,其表达式为
(4)
设置一个常数
,得到动态曲线的表达式:
(5)
将每两条动态滑动曲线之间的像素点作为车道线边缘像素点。
然后,将二次函数作为车道线的函数模型,以解决一次函数难以较好拟合弯道的边缘像素点的问题。
最后,对所得到的车道线边缘像素点进行最小二乘法拟合得到式(4)中的A、B、C。在图像的前视野中每相隔一定的距离便选取一个y坐标,根据式(4)来推算每个y坐标所对应的x坐标。最后,根据所推算的车道线特征点在原图像绘出车道线。
3. 实验结果分析
如图4中图4(a)~图4(b)所示,依次对在强光下的道路、昏暗环境下的道路、车道线不清晰的道路、有障碍干扰的道路图像进行了处理,能够有效检测到车道线的边界,为自动驾驶提供有效依据。因此,本文提出的方法能够较为准确地提取出车道线的边缘像素并推算出车道线的边界位置,并对不同的路况以及各种复杂的行车环境具有良好的适应性、鲁棒性。
(a) (b) (c) (d)
Figure 4. Lane detection result diagram
图4. 车道检测结果图
4. 结论
无人驾驶技术的核心部分在于感知周边行车环境以做出正确的决策,而车道线是行车环境中的基础组成。本文基于车道线的颜色梯度变化和每帧图像的关联性提出了一种基于动态曲线的车道检测算法。实测结果表明,该算法能够较为准确地检测出不同环境下的车道线,具有较好的鲁棒性。