基于反透视变换的车道线检测算法∗
2019-03-26孙耀航
刘 萍 孙耀航
(陆军军官学院计算中心 合肥 230031)
1 引言
随着社会的进步和发展,安全驾驶和汽车的简便操作越来越受到人们的重视。苹果、谷歌和特斯拉等公司相继推出了无人驾驶系统,国内的厂商也对此领域产生了高度兴趣。基于人工智能和大数据的无人驾驶技术,被认为是消除交通安全问题的最终方法。从美国DARPA挑战赛[1]到中国未来智能车大赛,无人驾驶技术在全世界兴起了一阵热潮[1]。
对于无人驾驶系统来说,车道线检测是非常重要的技术。到现在为止,已经有一些基于机器视觉的无人驾驶技术得到了应用。其中,一部分算法直接检测道路的边缘,而另一些算法首先利用道路的部分参数(例如颜色信息)来确定道路边缘[2~5]。算法应用的技术也有很大差别(霍夫变换、模版匹配和神经网络等)。总的来说,有两类方法用于车道线检测:基于特征的方法和基于模型的方法[6]。基于特征的方法通过探测数种低级特征的组合来确定车道的位置。这类方法要求车道线必须是粉刷清楚,不然就会失效[7~9]。显然,基于特征的方法对于大城市主干道很有效率,但是对于次重要的路段,或者道路保养不及时的城市就容易失效。另外要注意的是,因为基于特征的方法对于检测的线的特征没有细致的约束,所以很容易受到噪声或者遮挡的影响。
本文提出了一种基于反透视变换的车道线检测算法,将摄像头拍摄的视频图像转换为俯视图,以检测车道线。本方法可以利用现实道路的模型,例如车道长度、路宽以及路况等。本算法的流程如图1所示。
图1 算法流程
2 最优阈值法对图像二值化
城市道路刷有白色、黄色的各种标线,而车道的检测也就转化为对图像中这些标线的检测。图像分割是最常用的检测标线的方法,图像分割也经常用于在图像中确定物体或者边缘的位置。更准确地说,图像分割是一个为图像内每个像素标明一个标签的过程,而标记了相同标签的像素有同样的视觉特征。
图像分割最简明的方法就是阈值法[10~11]。阈值法的原理是根据设定的阈值对灰度图像进行二值化,所以二值化的效果取决于阈值的选取方法。本文提出了一种基于全局的最优阈值算法。在车道线检测过程中,为了减小路缘和远处图像不清晰的问题,本算法将图像中天空的部分裁剪掉,在裁剪后的图像中,道路占图像的绝大部分。考虑到车道分割对噪声和速度的敏感性,本文采用了基于全局的最优阈值法对图像进行二值化。
最优阈值法的原则是通过研究图片的渐变数据分布特征,确定作为阈值的灰度。嘉定一幅图片的灰度被分为1~m,那么这幅图片中灰度为m的像素数为n,图片的像素总数为
每个灰度值的像素出现的概率为
然后用一个证书K将像素分成C0和C1两组:
C0组中像素出现的概率为
像素饱和均值为
C1组中像素出现的概率为
像素饱和度均值为
从1,2,…,m遍历k的取值,找到使得方差最大的k值记为K。当σ2()k取最大值时的K为最优阈值。
图像二值化的结果如图2所示,图2(a)为OTSU算法二值化的图片,图2(b)为本文算法二值化的图片,可以看出我们的算法明显噪声更小。是图像总体饱和度的均值。则:
两组像素的方差为
图2 图像二值化
3 反透视变换
通过对图像进行二值化,凸显了车道线的边缘特征。针对车道线在俯视视角相交,导致不能对车辆进行正确导向的问题,需要利用反透视变换对图像视角进行校正。
由图3所示,由于视角问题,车道两边平行的车道线在图像中显示为在末端相交的直线。在远处会丢失很多图像信息。通过反透视变换,我们可以抓取道路特征,以标明车道线等信息[12~14]。
图3 车道线模型的投影
在照相机平面上,一个目标可以被看成是中心投影到平面上的。中心投影法是一个比较简单的投影方法,可以产生接近实际视觉效果的图像。根据中心投影法的原则我们得到:
(u,v)是图像坐标,Xw是参考坐标,s是比例因子。假定道路是绝对水平的,s的值就是固定的,M是可以通过图像校准计算的转换矩阵。因此,对反透视变换矩阵的计算,就转换为对公式Ax=b的求解。这个公式可以由奇异值分解很方便地求解。
固有参数(例如道路长度、中心和视角变换)以及变化参数(例如车的相对位置)在处理前就进行了校准[8]。图4展示了反透视变换后的二值图像。
图4 反透视变换后的车道线检测
4 K-均值聚类算法
在反透视变换之后,车道线图像的视角呈垂直俯视。接下来,我们需要利用K-均值聚类算法对车道线进行拟合。
K-均值聚类算法在数据挖掘领域有广泛的应用。虽然K-均值聚类算法的计算复杂度比较高,但是有几种启发式算法可以汇聚成此算法的最优解[15~16]。
分配:将每个观测值分配给均值最接近它的聚类。
即使某个观测值满足分配给多个聚类,每个Xp只能被分配给唯一的 S(t)。
当分配结束之后,聚类的过程也就结束了。K-均值聚类算法的计算结果如图5所示。
图5 K-均值聚类算法及其车道线匹配
5 实验结果
我们将小型摄像头装在家用轿车车顶和保险杠上进行实验,实验图像为实拍图像。实验结果如以下所示。
1)图6展示了崎岖道路的车道线检测。
图6 崎岖道路的车道检测
2)图7展示了对亮度明显变化的车道线检测。
图7 亮度明显变化的车道线检测
6 结语
城市道路车道线检测是无人驾驶领域一项关键的计数。本文提出了一种基于反透视变换的车道线检测算法。本算法不仅能够有效地检测车道线,而且能够克服道路中不清晰、遮挡和干扰的问题。我们也给出了说明本算法有效性的实验。未来我们的研究方向,则是希望能够辨别各种不同的车道线,以便车辆能够根据车道标志的不同做出反应。