基于移动终端的实时车道偏离预警系统的研究与实现
2021-10-30李宏胜
王 彬,李宏胜
(南京工程学院自动化学院, 江苏 南京 211167)
流动性密切影响着社会经济和个人生活质量,社会经济发展和个人对生活的追求也推动着交通方式的升级和进步[1].以中国为例,2015年私人汽车拥有量为14 099万辆,2019年私人汽车拥有量已达22 513万辆[2].随着车辆的普及,各种交通事故不断发生,在2015—2018年,每年有4万多人因汽车交通事故死亡,10万多人受伤.引发事故的一个重要原因是驾驶员疲劳导致车辆偏离车道.作为高级辅助驾驶系统(ADAS)重要组成部分的车道偏离预警系统,在一定程度上可以避免类似的事故,但截至2019年10月,各类ADAS在新车的搭载率不足30%[3],且不包括已售出的车辆.因此,普及车道偏离预警系统有着巨大的商业价值和社会意义.
相对于其他传感器而言,视觉传感器成本低廉,能够提供丰富的特征信息[4],被广泛应用于车道偏离预警系统.在进行车道检测时,视觉传感器很容易得到车道线的形状、大小、位置和颜色等信息,且可以根据连续帧之间车道线的位移来进行运动分析.
目前,大部分基于视觉的车道偏离预警系统可分为系统模型分析及建立、车道检测和车道偏离预警三个部分.其中大多数车道线检测系统采用直线模型,把左、右车道近似为一条直线[5-7];为了使车道检测系统更准确,在近场建立直线模型,文献[8]在远场采用二次曲线模型来拟合曲线车道、文献[9]采用椭圆多项式曲线建立车道模型;为使用较少的控制点,文献[10]采用三次B样条曲线建立车道模型;为解决阴影产生的强度边缘杂乱问题,文献[11]验证了色度空间变换的方法;为提高虚线车道特征获取率,文献[5]提出了一种时间模糊的方法,将其等效为一条连续直线,但需要选择合适的时间分量,以免产生重影;在夜间,照明灯产生的不均匀光线会产生一些不规则的光斑和阴影,带来大量的噪声干扰,影响图像处理的结果,文献[7]提出一种能够抑制和降低噪声的邻域平均滤波的方法;文献[12]提出利用PLSF映射曲线将彩色图像转化为灰色图像,提高了图像的对比度;为进一步提高车道线检测的准确度,文献[5]在车道线特征检测时采用自适应阈值的方法来提取图像中的车道标记,然后采用Hough变换对候选车道位置进行检测,这种方法在一定程度上减弱了街灯或车灯的光线对全局阈值的影响;文献[6]采用MSER来扫描车道特征,可筛去非车道标记的斑点,使用累计概率Hough变换进行车道标记检测;文献[8]采用先确定两个边的阈值,然后用Hough变换进行车道特征提取;文献[7]使用基于定向的Sobel算子在杂乱的背景中进行车道特征提取;文献[12]采用OTSU对图像进行二值化处理;文献[13-14]使用自适应阈值将鸟瞰图转换为二值图像,然后使用Hough变换对候选车道细化,采用RANSAC算法消除异常值;文献[15]提出一种基于全卷积网络的车道检测方法,即利用全卷积分割网络来进行车道检测,但这种方法需要庞大的训练样本和精细标注的数据集,处理单张图像耗时需要1.12 s,加载模型处理则需要更多的时间.可见,基于深度学习的方法通常很难在低功耗的移动终端上有良好的表现.
本文提出一种基于移动终端的实时车道偏离预警的方法,研究方法框架如图1所示.第一部分对系统应用场景和环境进行分析,并建立相应模型;第二部分对采集的图像进行处理,提取和筛选出车道线特征;第三部分对检测的车道线参数进行分析,得出车辆相对于车道线的位姿,建立车道偏离预警系统;第四部分对车道偏离系统进行实测,分析实时性和可靠性.
图1 研究方法框架
1 模型分析
图2 车道模型
由此确定,在36 m内可以将车道看作一条直线,即在高速公路场景下可以采用基于直线车道模型的偏离预警系统.
2 车道线检测
在使用移动终端采集图像后,需先对图像进行预处理,尽可能降低图像中的噪声,同时减少计算量,提高实时性;然后进行车道线特征提取和筛除异常值;最后对车道线进行跟踪,保证车道线检测的连续性和稳定性.
2.1 图像预处理
为在高速公路场景下实现基于移动终端的实时车道偏离预警功能,须对移动终端采集的车道场景进行预处理.采集的图像如图3(a)所示,图像中存在很多不必要的信息,为提高检测准确率和实时性,可对原始图进行分割,选取感兴趣区域(region of interest,ROI),感兴趣区域要在尽可能保留车道线特征信息的前提下减少干扰信息.因此,本文在图像的下方约2/5处设置矩形ROI,设置后的图像如图3(b)所示,去除了天空和部分地表信息,有效减少了后期处理的计算量以及图像中的干扰.
(a) 原始图像
由于车道线特征中存在不易被检测的黄色车道,为了增强黄色车道线特征并提高其相对于路面的梯度,将其转换成HSV格式再进行处理.处理后的图像如图3(c)所示,先将黄色区间的颜色全部转换成白色,而此区间外的颜色全部转换为黑色,再对ROI图像采用加权平均法[18]进行灰度化处理(处理后的图像如图3(d)所示):
f(i,j)=0.30R(i,j)+0.59G(i,j)+0.11B(i,j)
(1)
式中:R、G、B为RGB图像的三个分量;f为灰度图像值.
在图像采集过程中,受到光照等因素影响,使得获取的图像中夹杂着不同程度的噪声,通常表现为高斯噪声等,为了尽可能削弱这类干扰信息,本文采用一种3×3的卷积核进行高斯滤波[19],用卷积核扫描图像中的像素,确定邻域中的像素值,并进行加权灰度化后替换中心像素,处理后的图像如图3(e)所示.应用形态学滤波去除图像中小斑点的干扰,处理后的图像如图3(f)所示,该方法使得其邻域特征得以连接,进一步增强了车道线的特征.
2.2 车道线的特征提取与检测
图像预处理后,采用Canny算子[20]进行边缘检测,效果如图4(a)所示,处理后的图像尽可能地保留了车道边缘,且减少了噪声产生的误报信息,与实际边缘更接近.但由于透视关系,实际的车道特征被显示为梯形,且Canny算子会将一些干扰信息标记为边缘特征.为进一步优化边缘特征,提出一种类车道线掩膜滤波方法,同时综合采用自适应阈值法对图像进行二次二值化处理,效果如图4(b)所示,较好地去除了矩形ROI中干扰信息的边缘特征,获得了车道线特征的边缘二值图像.
(a) Canny算子边缘检测
采用由标准Hough变换改进的累计概率Hough变换来进行车道线特征提取.通过分析检测到的车道线的方向和范围来设定约束参数,处理后的图像如图4(c)所示,可见,车道线被检测出的同时,也误检了一些类车道线的干扰信息,所以还需进行车道线异常值的筛选.为正确检测车道线,剔除干扰信息,本文选择角度限制对车道线信息进行初步筛选,直接移除一些斜率明显不符合车道线的误检直线,再将初次筛选后的车道线信息分为左、右两个候选车道线集:
LLEFT={l1(ρ1,θ1),l2(ρ2,θ2),…,lm(ρm,θm)}
(2)
LRIGHT={l1(ρ1,θ1),l2(ρ2,θ2),…,ln(ρn,θn)}
(3)
由于车道线的特征信息相对于误检信息更为明显且较为密集,采用随机抽样一次算法(RANSAC)[21]进行二次筛选.通过反复迭代,不断调整模型参数,寻找到车道线的最优候选集.通过上述二次筛选,得出的结果更为准确,筛选后的车道线如图4(d)所示.
2.3 车道线追踪
为解决检测中漏检或车道线丢失的问题,采用卡尔曼滤波器[22]对车道线进行追踪.其过程模型可以描述为:
Lk=ALk-1+Buk-1+ωk-1
(4)
测量方程为:
Zk=HLk+vk
(5)
车道线跟踪过程为:对是否检测到车道线进行判断,若检测到车道线,则对卡尔曼滤波器进行初始化,同时对漏检帧计数器进行复位,再更新卡尔曼滤波器;若未检测出车道特征,则漏检帧数加1,当漏检帧数大于设定阈值时,则对卡尔曼滤波器冻结,同时将漏检帧数置0;当漏检帧数不大于设定阈值时,则用上一帧检测到的车道线参数代替.
使用卡尔曼滤波器,降低了干扰信息的影响,提高了系统的稳定性.
3 车道偏离预警
车道偏离预警[23]是对车道线检测的模型参数进行分析并判断车辆与车道线的相对位置,当车辆偏离车道则发出预警,及时提醒驾驶员对车辆位姿进行修正.由于使用的环境为高速公路,故对整个系统的实时性要求较高,并且在保证安全性的同时,还应给予一定的偏离阈值范围,避免频繁报警影响驾驶员的驾驶体验.
对车辆在车道不同位置进行建模.设左、右车道线的斜率分别为kL和kR,车道线靠近车辆处宽为D,车辆宽为d,两车道线交汇点到车辆距离为h.已知高速公路车道宽为3.75 m,车辆一般宽为1.4~1.8 m,可以等效认为D=4d.如图5(a)所示,车辆处于车道正中时,两车道线斜率绝对值之比为1;图5(b)是车辆处于车道左极限位置时,此时左车道线斜率的绝对值为|kL|=2h/d,右车道线斜率的绝对值为|kR|=h/(D-0.5d),计算得|kL|/|kR|=3;同理,在右极限位置时,|kL|/|kR|=1/3,即|kL|/|kR|∈[1/3,3],在此区间内车辆仍在车道线内.
(a) 车辆处于车道正中
为保证安全又兼顾人机交互,本系统给定安全阈值为30%,调整后|kL|/|kR|范围是[0.48,2.1].因此,系统设定当左、右车道线斜率绝对值之比为[0.48,2.1]时,系统不报警,如图6(a)所示;在[0,0.48)时发出警告提醒司机向左偏转,如图6(b)所示;在(2.1,+∞)时发出警告提醒司机向右偏转,如图6(c)所示.
(a) 不报警
4 系统实现及分析
4.1 图像预处理
搭建的测试环境如表1所示.为满足时效性要求,采用JNI接口来实现系统功能.整体流程为:利用最新提出的Camera X组件进行实时的图像采集;调用JNI接口,将图像的信息流传入Native方法;用C++/C对实时帧进行处理,处理后回调函数,返回Java算法中;在SurfaceView上显示处理后的实时帧,并按需求给出警告信息.
表1 测试环境
4.2 试验数据分析
将车道线检测的结果和实际场景下的帧数据进行比较,并把其比值作为评价系统性能的指标.系统准确性评价模型为:
(9)
式中:TESTtrue为系统检测到的车道线;TESTwrong为系统未检测到的车道线;TESTchange为车辆进行了变道或者行驶在特殊路段,此类情况下不能进行车道检测.
本文选取测试的三条路段的检测结果准确率分别为92.23%、93.74%和91.18%,符合预期要求.
图7为实时处理一段采集图像中每帧图像的时间消耗统计图.这段数据中一共含有1 270帧图像,单帧图像最大耗时为72.34 ms,最小耗时为23.21 ms,平均值为43.678 ms,标准差为6.382 7,表明本系统可以满足移动终端的实时性要求.
图7 每帧图像处理实时消耗时间
5 结语
针对高速公路长距离行驶时由车道偏离引发交通事故的应用场景,研究并实现了一种基于移动终端的实时车道偏离预警系统.系统在建立行驶模型的基础上,提出改进的图像预处理方法,提高了车道线检测的实时性和准确性,实现了车道偏离预警功能.试验表明,所提出算法能够满足在低功耗移动终端上实现对性能与实时性的要求.在后续工作中,在保持实时性的要求下,需提高系统对雪天、雨天、雾天等复杂场景的适应性,进一步提升人机交互的便利性.