基于单目视觉的智能车车道线识别算法*
2019-10-23石金虎金辉王迪
石金虎,金辉,王迪
(辽宁工业大学汽车与交通工程学院,辽宁 锦州 121001)
前言
自动驾驶汽车是目前以及将来要面对的一个热点和难点,其中车道线检测在其中发挥着至关重要的作用。它不仅为车辆导航提供了参考,而且目前已经应用在运动目标检测和汽车预警等方面。从开始研究智能车辆时就对车道线检测给予了很大的重视,首先要实现车辆的自主导航,最基本的技术就是要把车控制在当前道路上,不能发生跑偏。即实时的获取车道线的变化,准确的了解车道线的信息,才能在获取车辆在当前道路的相对位置和方向,从而达到预期的效果。本文采用的是结构化道路为输入信息,对采集到的道路图像进行分割,选用实验效果较好的最大类间方差法;在图像边缘检测中分析了Canny 算法并进行一些改进;最后为了更好的识别车道线效果采用了霍夫变换。
1 单目视觉图像采集系统概述
一般视觉系统采集图像可以依据摄像机的个数来区别:第一个是带有多个摄像头的立体视觉系统,第二个是带有单个摄像头的单目视觉系统。 总体来说他们都是对汽车行驶环境的实时监测,主要包括车道线的识别、车辆行驶时其周围的环境等信息为切入点进行采集。然后处理所收集的图像信息,并将处理后的信息发送到控制器,由控制器做出决定以实现车辆的自主导航。 与多目视觉相比,本文使用的单目视觉具有更快的图像处理速度和实时控制要求。 它在未来一段时间内具有研究价值。
2 图像预处理
道路图像预处理过程如图1 所示。
图1 图像处理流程图
在收集道路图像时,由于外部因素和其他因素的干扰,所获取的图像信息不完整。 需要对采集的图像进行预处理,以达到预期的效果,预处理过程在改善图像质量、提高行车时的实时性等方面具有重要的作用。
对于单目视觉获取的图像,预处理过程包括:灰度、图像过滤、边缘增强和图像二值化。如图2 所示为图像预处理后的实验效果图。
图2 道路图像预处理
3 图像的阈值分割
3.1 Ostu 阈值分割
最大的类间方差方法,也称为Otsu 方法,具有简单和快速的优点,并且是常用的阈值方法。主要思想可以设置为图像的灰度级间隔为0~L(L≤255),定义灰度值i 的像素数为ni,像素总数为N,则:
公式中fmin和 fmax代表的是图像中灰度的最小值和最大值。那么C0区域的分布概率为p0,灰度均值为μ0。
同样的方法,可以求出C1区域的分布概率为p1,灰度均值为μ1,定义类间方差为,有:
3.2 迭代阈值分割
迭代阈值法是一种阈值效果较好的分割方法,迭代的具体步骤如下:
①首先选择一个近似阈值T;
②将图像分割成两个部分R1和R2;
③分别计算R1和R2的平均值µ1和µ2,并选择新的分割阈值;
④重复上述步骤直到µ1和µ2不再变化。
3.3 全局阈值分割
全局阈值方法通常基于图像灰度直方图选择阈值。在整个灰度图像中仅选择一个阈值用于分割,并且阈值通常是常数。整个灰度图像被分成目标区域和背景区域,黑色代表目标区域,白色代表背景区域。灰度图像在直方图表现为一个双峰形状,选取会对直方图中的峰值之间的低谷处的像素值作为阈值进行分割。
如图3 所示为实验的效果图:
图3 三种阈值分割算法的比较
从图3 的阈值分割效果图中可以看出最大类间方差方法更好,并且可以清楚地识别出车道线并将其与背景差异分开。因此,本文对图像进行二值化采用最大类间方差法,以达到目标的理想效果图。
4 图像边缘检测
图像边缘检测算法包括Roberts 算子,Prewitt 算子,Sobel算子,Log 算子和Canny 算子。其中 Canny 边缘提取算法在图像上更易实现,Canny 算子相对与其他算子,提取道路边界线连接完整、划分较为细致,并且它拥有高的准确度,同时也能像 Sobel 算子一样去抑制平滑效果,具有非常好的边缘检测效果。
4.1 传统Canny 算法
(1)消除噪声,传统的Canny 算法使用二维高斯函数的任何方向的一阶方向导数作为噪声滤波器。使用其一阶导数对原始图像进行卷积和去噪,以获得平滑的图像。
(2)计算梯度的大小和方向,并使用邻域的一阶偏导数的有限差分计算平滑图像的梯度幅值G(x,y)和梯度方向θ(x,y):
为了找到边缘的方向,梯度方向通常可以分成几个角度(0°、45°、90°、135°)。这样也可以找到这个像素梯度方向的邻接像素。
(3)对梯度幅度应用非最大抑制,目的是在图像梯度中能够找到局部最大值,并将其他非局部最大值归零,以获得精细边缘。
(4)滞后阈值分为高阈值和低阈值。可以使用累计直方图来计算这两个阈值,并且如果其中的一个像素大于高阈值,那么它一定是边缘像素。如果其中的一个像素小于低阈值,则它不能是边缘像素。如果检测的结果是在两个阈值中间,那么就可以根据像素的邻接像素确定它是否高于高阈值,若高于则是边缘,否则就不是边缘。
4.2 改进的Canny 算子
传统的Canny 算法使用两个不同的阈值来处理图像的强边和弱边,只有强边缘和弱边缘连接在一起时,弱边缘才能包含在输出图像中。 否则会导致一些边缘信息的丢失。因此,在实际应用中,一定会存在噪声和环境因素的影响,所以选择合适的阈值非常重要。基于传统的Canny 边缘提取算法,提出了一种迭代算法来计算最优阈值。计算和分析灰度值是否为边缘点,可有效降低噪声干扰。
改进后Canny 算法的具体实现步骤为:
(1)对车道图像进行平滑滤波处理,抑制噪声干扰;
(2)分析和计算由平滑滤波处理后道路图像的梯度幅值和方向;
(3)对梯度幅值进行非极大值抑制;
(4)道路图像使用迭代算法确定最佳效果的高低阈值;
(5)道路图像进行阈值分割时使用双阈值算法;
(6)对分割完成的道路图像进行边缘检测。
如图4 所示为Canny 算子和改进Canny 算法效果图:
比较图4(c)、(d)效果图可以看到采用Canny 算子可以增强车道线的边缘,减少路面等环境因素的干扰,但是车道线两边的背景区域区分布明显;改进后的算法对边缘检测效果更加明显。
图4 Canny 算子和改进Canny 算法效果图
5 基于Hough 变换的车道线识别
霍夫变换是提取车道线的最常用方法,将线上的每个数据点转换为参数平面中的直线或曲线。霍夫变换是共线数据与其对应的参数曲线和参数空间之间的关系,因此直线提取问题被转换为计数问题。 简单实现车道线的拟合。Hough变换提取车道线的最大特点是它不受直线间隙和噪声等其他因素的影响。
由Hough 的原理可知其计算量较大,精度高等要求,为了减少计算量将设直线方程转换为极坐标中用参数方程表示一条直线:
式中ρ 为直线到坐标点原点的距离;θ 是直线法线与x轴所构成的夹角。如图5 所示为坐标示意图。
图5 线性极坐标转换示意图
图6 极坐标参数空间示意图
与笛卡尔坐标类似,极坐标空间中的霍夫变换将线性极坐标系中的点变换为极坐标参数空间。当以极坐标表示时,线性坐标系中的共线点被映射到相交于一点的参数空间。 与线性坐标不同,极坐标表示线性极坐标共线的点被映射到正弦的参数空间,在点(ρ0,θ0)处交叉,并且极坐标参数空间如图6 所示。
如图7 所示通过图像我们可以得知Hough 变换的拟合效果更好。车道标线边缘更为连续,并且能够把一些边缘信息进行滤除,车道线的目标信息得以增强,无关信息可以得到抑制。所以本文选用Hough 变换来进行车道线的识别。
图7 Hough 变换检测识别车道线
6 结论
本文使三种方法用于比较结构化道路的二值化。在传统的Canny 算法基础上在细节等方面做了一些改进,得到了改 进后的Canny 算法。并且在图像边缘检测中进行比较,反映了两种算法的优缺点。为了达到本实验的目的本文使用霍夫变换检测方法识别车道线,。 但是对于非结构道路和有其他干扰的不平整路面等情况,本文选用的方法还有待提高和改进。