一种基于形态学特征的车道线识别方法

2018-08-17 00:51蔡英凤孙晓强
中国机械工程 2018年15期
关键词:实线虚线像素点

蔡英凤 高 力 孙晓强 陈 龙 王 海

江苏大学汽车工程研究院,镇江,212000

0 引言

目前,无人驾驶技术吸引了人们极大的兴趣。根据车道线对车辆定位是无人驾驶技术的基本功能。从车道线的位置可以推测出车辆自身的位置、航向等信息。陈无畏等[1]提出一种基于边缘点投影的车道线快速识别算法,在目标搜索区域内,用边缘信息提取车道特征。何鹏等[2]通过背景减除和二值化方法得到车道线的特征点,使用Hough变换和Catmull-Rom样条曲线确定近场和远场的车道线。王楠[3]利用白色在YCbCr彩色空间的Y分量和黄色在Cb分量的属性区分黄色和白色车道线,但是没有给出区分虚线和实线的方法。NIU等[4]使用逆透视映射来生成道路图像的俯视图,使用简化的Hough变换检测得到车道线。王海等[5]提出基于方向可变Haar特征和双曲线模型的分布式车道线检测方法,采用方向可变Haar特征提取边缘特征点并拟合车道线模型。由于车道线在时空中是连续的,故有些算法用上一帧的检测结果约束下一帧的搜索范围和参数空间。李超等[6]在用Hough变换求解车道线参数后,利用帧间关联的算法对当前帧车道线模型进行约束,从而减少了图像数据的运算量。由于实际环境中的不确定性,如来自汽车和树木的阴影,照明条件的变化,破旧的车道标线和其他标志(指向箭头、警告字、斑马线等),对现有的识别算法造成了很大的干扰,因此,基于局部对比的车道线识别算法存在很大的局限性,车道线识别依然是一个充满挑战的课题,需要设计一种综合考虑周围环境的车道线识别算法。

基于边缘特征的车道线提取算法利用阈值区分车道线和其他物体,有一个明显的缺点在于对噪声敏感(即在不同环境下需要选用不同的阈值),当光照充分时需要高阈值,当存在阴影时需要选择低阈值,因此,阈值的选择需要采用其他算法,如大津阈值法[7]等。此外,另一个问题在于阈值局限于较小的范围,特征点选取仅通过比较相邻2个像素点的灰度值得到,而不考虑邻近像素点的相似性。为解决上述问题,LÓPEZ等[8]使用了“脊度量”的新特征提取算法进行车道线识别,且取得了较好的效果。该算法首先对图像进行预处理,然后计算脊度量提取特征点,最后拟合车道线并用随机抽样一致(random sample consensus,RANSAC)算法进行检验。但该算法存在以下缺点:①噪声过滤机制不健全;②在脊度量筛选过程中使用固定的阈值,无法适用于复杂的场景;③无法区分车道线中的虚线和实线。

为解决上述问题,本文在基于脊度量特征的车道线识别的传统算法基础上提出了一种基于自适应阈值的噪声过滤方法,该方法可有效地提高识别速度和识别效率,在检测出车道线的前提下,增加了线形判断,以区分虚线和实线。

1 脊度量计算

在城市等道路工况下,车道线边缘部分由于磨损,往往出现相对暗淡、对比度变差的情况,这使得传统基于梯度突变的各类边缘提取算子失效。而车道线中间区域白色部分往往保存较好,从形态学模型上来看,将每行车道线最白的部分连接起来就形成了“脊”。求解脊度需要比较该像素点和周围像素点的灰度值,因此脊是一个全局算子,不易受到局部污染的影响,所以脊度特征提取算法比边缘检测算法更具鲁棒性。

脊度没有严谨的数学定义,本文采用文献[8]的定义。对原图进行灰度化处理,再用高斯滤波器进行卷积,得到

其中,Lσd(x)为卷积后的图像;L(x)为原始的灰度图像;Gσd(x)为各向异性高斯滤波器,其协方差矩阵=diag(σdx,σdy),其中σdy为固定值,σdx为变化值,随着车道线的宽度变化而改变,具体变化取决于相机的焦距和俯仰角。

计算每个像素点沿第u行和第v列方向的梯度向量:

通过计算梯度向量的点乘,得到二阶偏导矢函数sσd(x),其作用类似于Hessian矩阵,表达式为

计算 sσd(x)与另一个高斯滤波器 Gσi(x)的卷积,得到结构张量场 Sσdσi(x):

其中,Gσi(x)表示相机标定的修正,与相机安装位置有关,默认为1。

将Sσdσi(x)较大的特征值对应的特征向量定义为并将投影在 wσd(x)上得到

定义一个新向量 w͂σdσi(x):

图1中,针对方框内的区域(图1b)计算脊度量,可以得到图1c中的结果,可以看出,脊度量在Z轴方向相对于路面其他区域有明显突变,可以通过阈值提取。有关脊度量算法的详细解释和参数设置,可以参考文献[7]。

2 噪声滤波机制

通过计算可知,车道线轴线方向的脊度量数值明显大于其他区域的脊度量数值,因此可以通过阈值法提取。整个图像尺寸为480像素×720像素。考虑到图片上部区域为天空和远景,因此兴趣区域选择下部区域,大小为255像素×720像素,见图1a。理论上,车道线短于对角线长度,即不大于750像素。极端情况下,车道两边均为双白线,车道线的有效像素点也少于750×4=3 000个。通过直方图(图2)可以看到脊度量的分布,像素对应的脊度量大致范围为[-2,2],因此,可以认为累加到3 000个像素点的区间所对应的最小值即为脊度量的阈值。将像素对应的脊度量按照数值从大到小排列,选取脊度量的前3 000个像素点进行分析。

图1 脊度量数值计算Fig.1 Calculation of ridge value

图2 脊度量直方图Fig.2 Ridge histogram

车道线特征点的提取见图3。提取阈值后得到图3c,从图中可以明显看出车道线,但由于阴影和路面不规则,在车道上依然存在各种噪声像素点,这会对Hough变换造成很大干扰。通过聚类可以剔除绝大多数无用的特征点,见图3d。按照道路的规定,虚线长度不少于3 m,结合摄像头的标定,远处的虚线在图像中占5个像素点,因此,设置连续的阈值为5,即剔除连续不超过5个像素点的特征点。

图3 车道线特征点提取Fig.3 Feature point extraction of lane line

3 模型拟合

3.1 直线模型拟合

车道线的模型主要有直线、双曲线、抛物线等,各有优势,不存在绝对的优劣区别。考虑到车道线的曲率,可以将近处的车道线近似为直线。综上,本文采用直线车道线进行研究。直线模型的优势在于模型简单,近视场干扰少,识别准确率高。

常用的直线拟合算法通过Hough变换实现。Hough变换是从二维空间到参数空间的一种映射,对于直线变换,这种映射表现为从二维空间中的某点到参数空间中的某条曲线的对应关系。由数学对偶性原理可知,二维空间中点的共线性对应于参数空间中曲线的共点性,以此为依据来提取直线的相关参数,其映射关系表达式如下:

式中,(x,y)表示图像中的像素点位置;ρ为经过像素点(x,y)的直线距原点的法线距离;θ为该法线与轴的夹角。

经过Hough变换得到图片中所有的直线,见图4,具体做法可参考文献[9]。在此基础上,通过消失点的算法可以过滤其他直线得到本车道两侧的车道线。

图4 用Hough变换获取车道线Fig.4 Lane line from Hough transform

3.2 虚线识别

主要的车道线线形有虚线和实线,但大多数识别算法不区分两者。在道路环境感知中,虚线和实线有非常重要的作用,区分两者有利于车辆进一步推断自身所在环境,如在车道保持算法中对虚线和实线的偏离预警应有不同的策略,避免过于严苛的报警而成为驾驶员的负担。本文提出一种利用特征点距离方差区分实线和虚线的算法。本文算法基于两个假设:①虚线是间断的,在较小的区域内会观测不到车道线;②在距离本车较近区域内,不存在或极少有其他车辆等障碍物的遮蔽干扰。

算法流程如下:①识别车道线;②选取图像中350~400行内的车道线特征点放入集合S中;③计算S中一段像素点的行方向距离方差;④对比连续10帧的方差,若方差平均值小于阈值,则认为是虚线;若方差平均值大于阈值,则认为是实线。

图5为连续的10帧图片,可以看出,左侧车道线因连续而一直可见,右侧车道线则间断可见。由此可以认为,右车道是虚线,而左车道是实线。

图5 连续的局部车道线Fig.5 Continuous local lane line

表1给出了对应图5中局部车道线内特征点的行方向坐标方差。因左车道线是实线,故坐标方差值稳定;而右车道是虚线,所以坐标方差值波动较大。图6通过折线图更直观地反映了这一趋势。

表1 特征点行方向坐标方差Tab.1 Variance of feature points in row direction

图6 坐标方差折线图Fig.6 Coordinate variance line diagram

4 实验设计

为验证该算法的实时性和有效性,使用MATLAB编程进行了大量实验。测试环境为Intel i5处理器(2.60 GHz)的Windows7操作系统。实验环节采集由不同工况下的道路图片组成的测试集,用以检验车道标记线的识别效果。

4.1 噪声滤波

本节用多个图片集对比了传统的噪声过滤算法和本文提出的过滤算法,见图7。每组图片集选择相同数量的图片进行定量比较。第一列为摄像头采集的原图,第二列为传统算法的处理效果,第三列为本文算法的处理效果。图7a所示为一个简单的场景,两种算法的识别结果类似。图7b所示为有地标干扰的情况,两种算法均能识别白色长条状物体,区别不明显。图7c所示为在黄昏场景下的对比,车道线和路面对比度相对白天的对比度较低,传统算法的阈值固定,故剔除了大量有效特征点。图7d所示为雨天情况,地面存在大量水渍,车道线被雨水淹没,两种滤波均存在被干扰的情况,但改进后的方法更多地保留了正确的特征点。

从定性对比结果中可以发现,本文算法在普通场景下与传统算法的处理效果类似,但是在有阴影、字符等干扰的情况下,本文所提方法能有效地去除误导信息,保留有效的车道线。

图7 滤波效果对比Fig.7 Comparion of the filtering effect

4.2 虚线识别效果

本实验中,选择一组车辆在三车道中变换车道的图片集,检验算法对车道线线形的识别效果。车辆从最右侧车道变换到中间车道,换道前后,左侧车道线由实线变成虚线,而右侧车道线始终为虚线。检测效果见图8,其中1表示左车道线为实线,0.5表示左车道线为虚线,-1表示右车道线为虚线。在帧数为923~997范围内,由于换道使得车道线连续检测失败,从而导致无法检测出虚线和实线,因此,左右车道线的线形检测结果均为0。实验结果表明,在车道线检测无误的情况下,该算法均能区分线形。通过线形检测,可以知道两侧车道是否可用,可供下一步换道决策作参考。

图8 虚、实车道线识别结果Fig.8 Recognition result of virtual and real lane line

4.3 现实环境测试

为检测本文算法的效果,采集由多种工况下的道路图片组成的测试集。测试图片分为普通工况和复杂工况。图片集场景和工况情况见表2。

测试图片检测效果见图9,其中每组图片的左侧为摄像头采集的原图,右侧为脊度量算法的检测结果。图9a显示了晴天工况下车道线清晰完整且远处的车辆不受影响的场景。这种情况下的误检率极低,且与真实车道线贴合效果好。图9b显示了晴天工况下车道线边缘出现其他车辆干扰的场景。通过噪声滤波方法可以排除车辆的边缘特征干扰,保留车道线的边缘特征。图9c显示了校园内车道线受损的场景。在这种情况下,基于边缘点灰度対比的算法可能遇到失败,但通过脊度量算法依然能找到正确的特征点。图9d显示了在雨天工况下天空灰暗,地面积水,车道线特征变得模糊的场景。此时通过脊度量算法扩大了特征点选取的对比区域,提高了检测结果的正确率。图9e显示了夜晚工况下仅有自身车灯提供照明的场景。通过脊度量算法综合区域内灰度值变化的情况,选择变化趋势最集中的像素点作为特征点,可以有效减少车道线边缘对比不明显带来的干扰。

表2 测试图片集Tab.2 Test picture sets

图9 5组不同场景的检测结果Fig.9 Results of 5 groups of different scenarios

在车道线识别程序的质量评价中,实时性和识别率是最重要的指标。通过人工观测手动选出检测错误的帧数。各种工况下检验的正确率见表3。

表3 检验正确率Tab.3 Accuracy of test

由表3可知:在普通工况即晴天工况下的正确率为99.18%;在复杂工况即雨天工况下的正确率为97.19%,受损路面工况下的正确率为94.72%,夜晚工况下的正确率为97.62%。

5 结论

传统算法提出使用脊度量来检测车道线,通过这种新的特征提取方法以及综合区域内灰度值变化的趋势来选择特征点,可以在复杂的情况下更准确地提取车道线。本文在传统算法的基础上展开了进一步深入研究:

(1)针对传统算法中特征点筛选存在的缺陷,改进了特征点筛选方法,简化了算法的难度并提高了算法的通用性。

(2)针对传统算法中识别车道线线型单一的问题,提出了一种识别虚线和实线的方法。通过本文的优化,该算法可更好地感知周围环境。

猜你喜欢
实线虚线像素点
小编话交规“刘星”你违法啦!
基于局部相似性的特征匹配筛选算法
秋天来啦
戒烟
大牛
基于5×5邻域像素点相关性的划痕修复算法
基于canvas的前端数据加密
烧脑数独时间,叮!给你的大脑做做操。
基于逐像素点深度卷积网络分割模型的上皮和间质组织分割