基于纯追踪算法和车道线识别的预瞄点检测方法研究
2020-10-28陈壮豪尚小庆郭风朋
苏 诗 陈壮豪 尚小庆 郭风朋
(上海交通大学机械与动力工程学院 上海 200240)
1 引言
车道线识别是智能安全驾驶领域非常重要与基本的技术组成部分。在智能驾驶中,利用算法对图像中的两条车道线进行识别,并判断车道线的左右,对于智能车的研究具有重要的意义。目前,国内外研究人员提出了多种基于单目视觉的车道线识别和左右车道线判别方法:1998年Bertozzi和Broggi[1]提出了利用逆透视变换的方式来提取车道线;2013年Shang[2]等人利用消失点提取车道线;杨喜宁等[3]为提高车道线识别的实时性和可靠性,提出了一种基于改进Hough变换的车道线检测方法;彭红等[4]提出一种将道路结构模型信息与扩展卡尔曼滤波器相结合的车道线检测算法;张浩等人提出了一种基于车道线宽度特征的车道线识别方法[5];贾俊等人提出了一种基于线型约束和卡尔曼滤波的车道线提取与生成方法[6];孙悦等人基于单目视觉提出了一种车道边缘检测及中心线提取算法[7]。但是上述方法只是单纯的识别出车道线,并没有对无人车循迹做进一步的研究。为实现对无人小车循迹的精准控制,本文提出了一种基于纯追踪算法和车道线识别的预瞄点检测方法。
2 硬件搭建
本文使用的无人小车采用全套国产硬件设计,其中车身主控板、底盘驱动板定制开发;小车主控软件基于 Ubuntu下开源的 ROS 软件平台设计,为使用者复用免费的开源代码提供便利并通过标准化的接口简化使用者开发过程。图1为无人小车外形图。图2为无人小车系统主要组成与关系图。
图1 无人驾驶小车外形图Fig.1 Appearance of the unmanned car
图2 系统主要组成与关系图Fig.2 System main composition and relationship diagram
3 车道线提取原理
3.1 图像预处理
3.1.1 图像灰度化
摄像头采集的原始图像包含丰富的色彩信息,但是这些色彩信息容易受到外界条件的影响,不利于车道线的精准识别。因此我们需要把原始的RGB车道线图像转换到灰度图图像,为之后的图像分割、图像识别和图像分析等操作做准备。灰度变换公式如下:
Gray(i,j)=0.299×R(i,j)+0.578×G(i,j)+
0.114×B(i,j)
(1)
其中Gray(i,j)为转换后的灰度图像在(i,j)点处的灰度值。
3.1.2 图像二值化
图像的二值化就是将图像上的灰度值设置为0或者255,也就是将整个图像呈现出明显的只有黑和白两种视觉效果,本文选取二值化阈值为150,二值化时灰度值变化公式如下:
(2)
3.1.3 ROI区域选取和逆透视变换
逆透视变换是当前国内外车道线检测研究使用得比较多的一个方法,OpenCV中提供了透视变换的接口,在原图和结果图上分别设定4个相对应的点,这八个点就确定了原图到逆透视图的转换矩阵。逆透视变换过程如下:
(3)
经过大量实验,本文最终选取ROI区域为小车前方1.5米以内、左右1米以内的区域。如图3,是对车道线选取ROI区域后进行逆透视变换前后的结果。
图3 ROI区域逆透视变换图Fig.3 Perspective transformation map of ROI area
3.2 车道线提取和拟合
对图像进行预处理之后,本文首先通过直方图来确定一条车道线作为小车追踪车道线,然后采用滑窗法搜索图像中的所有车道线像素点,最后使用这些像素点来拟合二次曲线模型获得最终的车道线。
将车道线离散为多个窗口,然后通过比较直方图像素值的最大点来确定车道线起始点。
由图4可以看出,像素值为30左右的区域为最大点,则选取左侧车道线为车道检测开始的点。取高斯分布曲线的顶点作为起始窗口的中心位置,采用滑窗法提取左侧车道线,滑窗法的基本原理是将一个矩形窗口沿着一定的路径从图像底部滑动至顶部,并在滑动的过程中逐步搜索窗口内部的车道线像素点。
通过大量实验,本文选取二次函数来对车道线进行拟合。拟合公式如下:
x=ay2+by+c
(4)
其中x,y均为车道线像素坐标。
如图5所示,我们采取大小相同的窗口来对左侧车道线进行提取,从最下方开始直到最上方,其中窗口里的红色曲线是提取的左侧车道线。
3.3 纯追踪法确定目标点
将车辆模型简化为自行车模型,纯跟踪算法以车后轴为切点,车身纵向车身为切线,通过控制前轮转角,使车辆可以沿着一条经过目标点的圆弧行驶,如图6所示,其中(gx,gy)为规划路径上的预瞄点;ld为预瞄距离,即后轮与预瞄点的距离;α为车与预瞄点的夹角。根据正弦定理可得到:
(5)
(6)
(7)
(8)
k是圆弧的曲率,在以车辆中心为原点,前进方向为y轴正向建立起的坐标系下,纯追踪模型的表达式形式为:
(9)
其中L为前后轮轴心距离。
从提取的目标车道线中选取靠近屏幕上方的一个车道线像素点(本文选取坐标轴索引值八分之一点)为目标像素点,计算此点斜率,然后求出过该点与切线垂直直线的方程,顺着这条直线向道路中心延伸半个道路宽度得到的点就是预瞄点。
4 实验结果分析
如图7所示实验结果,本文算法可以完成在直道车道线和弯道车道线的检测,同时小车在直道和弯道行驶时都可以实时正确地得到预瞄点的位置。
(a) 沿左车道线直线行驶
5 结论
本文提出的基于纯追踪算法的车道线目标点识别方法,首先对原始车道线图像进行预处理,然后通过车道线起点检测以及滑动窗口方法来搜索车道线像素点,接着对车道线进行二次函数拟合,最终得到了精确的车道线模型,随后运用纯追踪算法在提取的车道线基础上得到小车行驶的预瞄点。通过实验表明,本文的算法能够在直道和弯道情况下对车道线和预瞄点均有较好的识别和检测结果。