基于尾灯的夜间前方车辆检测与跟踪方法
2019-03-14于莉媛郭云雷牛萍娟刘大利罗德智
于莉媛,郭云雷,牛萍娟,刘大利,刘 雷,罗德智
(1.天津工业大学 电气工程与自动化学院,天津 300387;2.天津工业大学 电子与信息工程学院,天津 300387)
随着汽车保有量的逐年增加,道路交通安全问题越来越严峻。通过给车辆配置高级驾驶辅助系统(ADAS)或无人驾驶系统来减少交通事故的发生,已经成为未来车辆技术发展的必然趋势。而基于车载传感器对于前方车辆的检测和跟踪是上述系统必不可少的技术[1]。
对前方车辆检测使用的传感器有激光雷达、毫米波雷达和视觉传感器等。激光雷达检测精度高但价格昂贵,易受天气因素影响且数据计算量大;毫米波雷达具有较远的检测距离,但是其分辨率较低。与激光雷达、毫米波雷达传感器相比,摄像头具有感知物体颜色信息、可视范围大、价格低廉等特点,更加适合大规模地应用[2]。基于车载摄像头对前方车辆进行检测,由于单目视觉成本低、计算量较小,所以大多采用单目视觉方案[3]。
基于车载摄像头对前方车辆进行检测与跟踪需要考虑不同的光照环境,光照条件不足成为夜间车辆检测研究的一个难点[4]。在夜间视频图像中车辆较为明显的为车灯部位,由于车辆前照灯亮度较高,容易造成图像过曝,且在实际场景中左右车道间往往有隔离护栏,造成车辆前灯提取较为困难。研究人员主要提取图像中车辆尾灯以实现前方车辆的检测与跟踪。
例如文献[5]利用颜色信息在图像中检测出来尾灯并跟踪,由于设定固定颜色阈值,所以环境适应性差;文献[6]利用亮度与颜色四阈值提取尾灯目标,但可能将路灯等非尾灯目标误检为车灯;文献[7]默认车灯为圆形,但容易漏检尾灯为非圆形的车辆;文献[8]将RGB颜色空间转换到HSV颜色空间并检测车辆尾灯,增加了计算成本;文献[9]基于团块几何和位置特征检测车辆尾灯,由于只利用尾灯亮度信息,易受其他光源干扰。
对上述传统算法进行分析得出结论,基于尾灯的车辆检测算法还有以下几个方面不完善:①尾灯提取阈值对环境的适应性较差;②转换颜色空间增加计算成本;③尾灯提取易受其他光源的干扰;④在车辆互相遮挡情况下车辆检测率下降严重。针对以上问题,本文提出一种基于尾灯光晕特征和亮度特征的夜间前方车辆检测方法,并利用基于特征融合的粒子滤波算法对尾灯进行跟踪,实现对车辆的跟踪。在RGB颜色空间直接提取夜间图像的(2R-G-B)和(G+B)/2特征图,采用改进的Otsu方法对两颜色特征图阈值分割二值化,根据基于尾灯提取算法提取疑似尾灯目标,利用先验知识对已提取尾灯进行配对,再根据尾灯对估计车辆在图像中位置,从而完成对夜间车辆的检测。基于粒子滤波算法提出改进的多特征融合的粒子滤波尾灯跟踪算法,根据车辆检测算法和尾灯跟踪算法设计车辆检测与跟踪系统,实现对连续帧车辆的持续检测与跟踪,并提高车辆重叠时的车辆检测率。
1 车辆成像特点与尾灯特征
1.1 车辆成像特点分析
研究基于视觉的车辆检测算法,需要考虑光照条件的影响,不同光照条件下的车辆视觉成像如图1所示。
图1 白天与夜间车辆成像图Fig.1 Day and night vehicle imaging
图1(a)为白天环境下的车辆成像图。在白天环境下光照比较充足,通过图像处理算法可以获取车辆的阴影、边缘、对称性、轮廓等特征,基于以上特征可以实现对白天环境下前方车辆的检测和跟踪[10-11]。图1(b)为夜间环境下的车辆成像图。由于夜间光照条件不足,难以获取白天环境下的车辆阴影等特征,车辆最明显的特征为高亮尾灯,故本文根据车辆尾灯实现对车辆的检测。
1.2 尾灯特征选择
在检测与跟踪系统中,选取合适的特征起着关键性作用,好的特征可以容易地区分前景和背景[12]。选取车辆尾灯提取特征需要考虑路牌、反光带等其他高亮目标的干扰[13]。
通过对夜间前方车辆尾灯图像进行观察得出结论,由于相机自动曝光的原因,尾灯夜间成像特点为尾灯中心呈亮白色,周围呈现红色光晕。因此本文采用尾灯的光晕特征和亮度特征作为尾灯提取特征。
在统计大量尾灯颜色直方图的前提下,最终根据图像的(2R-G-B)和(G+B)/2特征图实现对尾灯光晕特征和亮度特征的提取。提取一帧夜间车辆图像并计算其(2R-G-B)和(G+B)/2特征图,结果如图2所示。
图2 尾灯光晕和亮度特征提取Fig.2 Extraction of taillight halo and luminance characters
图2(a)为图像的(2R-G-B)特征图,可见尾灯光晕区域与非光晕区域亮度等级有明显区别,特征图有效保留了车辆尾灯的光晕信息。图2(b)为图像的(G+B)/2特征图,可见特征图保留了尾灯及其他高亮区域。
2 尾灯提取与车辆检测
2.1 基于改进Otsu方法的图像分割
根据(2R-G-B)和(G+B)/2特征图的直方图进行阈值分割,可以将偏红尾灯光晕和尾灯等高亮光斑从背景中快速提取出来。图3为图像(2R-G-B)和(G+B)/2特征图的直方图,通过直方图可以观察到大量的像素集中在低灰度值区间。
为了对特征图进行有效分割,本文采用改进的Otsu方法[14]对(2R-G-B)和(G+B)/2颜色特征灰度图进行阈值分割。首先使用低阈值对两特征图进行初次阈值分割,去除大量黑色背景,然后再在较亮区域使用Otsu法进行二次阈值分割。
图3 (2R-G-B)和(G+B)/2的直方图Fig.3 Histograms of(2R-G-B)and(G+B)/2
首先统计(2R-G-B)和(G+B)/2特征图的直方图,假设 Graymin1和 Graymin2分别为(2R-G-B)和(G+B)/2直方图中像素数最多的灰度值,Graymax1和Graymax2为直方图中的最大灰度值。则改进的Otsu方法具体算法为:
(1)首先用低阈值ThresholdL1和ThresholdL2分别对(2R-G-B)和(G+B)/2特征图进行初步阈值分割,滤除大量黑色背景。
(2)在(2R-G-B)灰度值区间 ThresholdL1~Graymax1和(G+B)/2的灰度值区间 ThresholdL2~Graymax2中,分别采用Otsu方法进行阈值分割,得到分割阈值Thresholdh1、Thresholdh2。
(3)分别用阈值Thresholdh1和Thresholdh2对(2RG-B)和(G+B)/2特征图进行二值化。
其中,ThresholdL1和ThresholdL2的计算方法由式(1)和式(2)确定:
使用传统Otsu算法和本文所提改进算法对(2RG-B)和(G+B)/2进行阈值分割,结果如图4所示。由图4可知,传统Otsu算法对图像阈值分割不足,本文所提改进算法可有效对(2R-G-B)和(G+B)/2特征图进行阈值分割,且优于传统Otsu算法的分割效果。
2.2 疑似尾灯提取
图4 阈值分割图像Fig.4 Threshold segmentation images
夜间汽车红色尾灯中间高亮且四周发出红色光晕,而车身反光、车牌、路牌和其他非红色光源无光晕特征。本文根据上述(2R-G-B)和(G+B)/2的阈值分割图提出了基于尾灯光晕特征和亮度特征的疑似尾灯提取方法,具体如下:
(1)将(G+B)/2二值化图像命名为P1,将(2R-GB)二值化图像命名为P2。
(2)提取P1连通域,删除面积过小的噪声,对剩余连通域进行标记,得到图像P3。
(3)P3连通域轮廓并向外扩展2个像素点的大小得到图像P4,并记录轮廓的坐标位置。
(4)删除P2中面积过小噪声后,将其与P4叠加得到图像P5,对应位置像素值叠加规则为0+0=0,0+1=1,1+0=1,1+1=1。
(5)提取P5的连通域,计算P4中每个轮廓像素点数量与P5中与其对应的连通域像素点数量的比值R。
(6)当比值R小于阈值TR时,认定此连通域是疑似尾灯的红色光晕区域,如果比值R大于TR,则认定连通域叠加前为非尾灯亮块的轮廓,则删除P4轮廓对应的P1连通域,得到图像P6。
经过反复大量实验最终确定TR的经验值为0.2,使用上述方法对二值化图像进行尾灯提取,结果如图5所示,图像中只保留了车辆红色尾灯的白色亮块,删除了车身反光、车牌、路牌干扰亮块。实验表明,本文所提尾灯提取方法可有效提取疑似尾灯目标。
图5 疑似尾灯提取图Fig.5 Extraction image of suspected taillights
2.3 尾灯配对与车辆检测
已经提取的疑似尾灯目标可能保留了例如红灯和偏红路灯等非尾灯红色光源。在疑似尾灯目标中,只有汽车尾灯成对出现,可以根据此特点从疑似尾灯目标提取出真正的尾灯目标[15]。
根据尾灯的几何特征和位置特征对疑似尾灯中的目标进行两两配对,具体规则为:①尾灯面积大小一致;②尾灯形状对称;③尾灯对的两尾灯在同一水平位置。
根据以上配对规则对图5中尾灯进行配对,结果如图6所示。图6中车辆的主尾灯和副尾灯都配对成功,说明根据上述配对规则可对尾灯进行有效配对。
图6 尾灯配对Fig.6 Taillight pairing
根据先验知识可知,尾灯对与车辆后方轮廓有一定的位置关系,可以根据尾灯对估计车辆位置并实现对车辆的检测。结合图6,在估计车辆位置时要考虑一个车辆具有多对尾灯的情况。
对已配对的尾灯对画外接矩形,根据尾灯对外接矩形位置判定哪些尾灯对属于同一车辆。假设尾灯对集合为 T={T1,T2,…,Tn},尾灯对的外接矩形左边界和右边界的横坐标分别为W1(Ti)和W2(Ti),宽度D(Ti)满足式(3):
对集合中尾灯对进行两两判定,如果满足条件:W1(Ti)≥W1(Tj)且W2(Ti)≤W2(Tj),则说明Ti和Tj属于同一车辆。
假设有k个尾灯对属于同一车辆,外接矩形中心坐标为O(xi,yi),根据公式(4)和公式(5)确定O(x,y)的位置。
假设k个尾灯对中外界矩形宽度最大为d,以O(x,y)为中心,边长为d画正方形边框,正方形边框范围就是车辆在图像中的估计位置。
根据上述尾灯配对规则和车辆位置估计方法对图5进行处理,得到正方形边框位置并在原夜间图像图1(b)上显示,结果如图7所示。由图7可见,利用本节方法成功检测到图中3个车辆目标。
图7 车辆检测Fig.7 Vehicle detection
3 车辆跟踪
3.1 基于改进粒子滤波算法的尾灯跟踪
在城市路况下车辆重叠情况比较多,根据上述车辆检测方法只靠单尾灯无法完成对车辆的检测,造成车辆检测率下降严重,且在实际应用场景中对已检车辆在连续帧进行持续跟踪更具实用价值。
为了提高车辆重叠情况下的车辆检测率并对车辆进行持续跟踪,本文对已检车辆的单个尾灯进行跟踪来实现对车辆的跟踪,并根据单个尾灯估计车辆的位置,实现在车辆遮挡场景下的车辆检测。
把目标跟踪的方法一般分为基于运动检测的方法、基于核方法和基于滤波理论的方法[16]。粒子滤波[17]是一种通过蒙特卡罗方法来实现递归贝叶斯滤波的算法,被广泛应用于雷达目标、视频中行人和车辆[18]等目标跟踪领域,具有鲁棒性好的优点。传统粒子滤波视频目标跟踪算法采用单一直方图特征,在夜间光照条件复杂情况下,直接应用于尾灯跟踪效果较差。目标的颜色特征对目标形变的较强的鲁棒性,目标的边缘特征对光照变化的有较强的鲁棒性[19]。因此本文提出一种基于颜色特征和边缘特征融合的改进粒子滤波算法,对尾灯进行跟踪,具体流程如下:
(1)量化颜色特征。设定尾灯外接矩形为跟踪窗尺度,统计此区域内的RGB空间颜色直方图,每个通道量化级为8,则总的量化级为83,加入核函数使得跟踪窗中心有较高的权值,设定核函数为高斯分布函数:
则跟踪窗区域的归一化直方图计算公式如下:
式中:u=1,…,512;C 为归一化常数;x0为目标中心点位置;xi为各像素点位置;y0为目标轮廓到中心的点的最大距离;δ为Kronecker delta函数。
(2)量化边缘特征。根据RGB图像提取R、G、B通道,在每个通道进行高斯滤波消除噪声影响,然后采用Canny算法对通道图像进行边缘检测,采用卷积算子如下:
对于图像任意一点I(x,y),其x和y方向的一阶偏导数矩阵为:
其梯度幅值和梯度方向为 Z[i,j]和 θ(i,j):
θ(i,j)的取值范围为 0°~360°,取量化级为 10 级,共3个通道,总的量化级数为103。最后统计3个通道每个像素点的梯度方向,形成梯度方向直方图。
(3)距离度量。本文采用Bhattacharyya系数[20]衡量量化特征的相似性,直方图 p=p{pu}u=1,2,…,m和 q=q{qu}u=1,2,…,m的 Bhattacharyya 距离 d 为
(4)多特征融合粒子滤波跟踪算法。通过矩形框来确定每一帧图像尾灯位置,定义状态变量X=(x,y,vx,vy,a,b)T,x、y为尾灯的重心坐标点,a 和 b 为外接矩形框的长度和宽度,vx和vy为车辆坐标x、y的速度,假定车辆运动为匀速直线运动,则系统模型的状态方程为:
式中:A为状态转移矩阵;W为系统状态噪声并设定为高斯噪声。
每个粒子经过传递后经过上述2个特征量化,得到2个Bhattacharyya距离l1和l2,粒子的权重可以由式(17)确定:
式中:σ1和σ2分别为颜色直方图和梯度直方图的噪声方差;α、β满足α+β=1,通过改变α和β的大小可调节加权值。
3.2 基于尾灯的车辆检测与跟踪
根据车辆检测算法和尾灯跟踪算法设计基于尾灯的车辆检测与跟踪系统,工作逻辑如图8所示。
图8 系统工作逻辑图Fig.8 Logic diagram of system
车辆检测模块由车辆检测算法确定,车辆跟踪模块由尾灯跟踪算法确定。具体工作流程为:①系统接收第一帧夜间车辆图像,并将此图像送往车辆检测模块。②车辆检测模块对图像进行处理得到车辆目标Ci,i=1,…,N。将已检目标放入已检测目标池,目标池目标数量为M。当M=0标记flag=0,M≠0则标记flag=1。③若flag=0说明已检测目标池为空,转到步骤③。若flag=1已检测目标池为非空,转到步骤⑤。④读取下一帧图像,并转到步骤②。⑤读取下一帧图像,尾灯跟踪模块开始工作,对已检测目标池中所有车辆目标的左右尾灯进行跟踪。有一个尾灯成功跟踪则实现对车辆的跟踪,并根据跟踪成功尾灯确定该车辆的位置,将其放入已跟踪目标池。如果车辆跟踪失败,则将该目标从已检测目标池中删除。⑥对于本帧图像删除已跟踪车辆区域后,转到步骤②。
4 实验结果与分析
本实验使用佳能摄像机采集实验数据,将摄像机固定在挡风玻璃内侧中间区域,使得摄像机对准车辆正前方,调整其分辨率为800×600,帧率为30 fps。在夜间市区、夜间郊区、夜间高速、夜间乡道这4种不同光照条件下,各采集100 min视频。在Visiual C++和OpenCV框架下编写算法程序,共设计3个实验来分别验证本文所提车辆检测算法的性能、尾灯跟踪性能和车辆检测与跟踪系统工作性能。
4.1 车辆的检测率实验
从上述4段视频中分别采集200帧图像,图像中包含车辆遮挡、光照变化等复杂情况。人工标注每帧图像中的车辆,统计总的车辆数。在Intel i7 CPU处理器、8 G内存的系统配置下,分别使用文献[8]中基于HSV颜色空间提取尾灯的车辆检测方法、文献[21]中基于圆形光斑提取尾灯的车辆检测方法和本文车辆检测算法,分别检测图像中的车辆目标,统计车辆检测数量DN(detection number)、检测率DT(detection rate)和每帧图像平均处理时间AT(average time)。提取实验结果如表1所示。
表1 车辆检测算法性能对比Tab.1 Performance comparison of vehicle detection algorithms
表1测试结果表明,本文车辆检测算法对比文献[8]和文献[21]的方法在检测率和每帧平均处理时间上都有更优的结果。对表1不同夜间情况下系统识别效果进行分析:文献[8]的方法由于进行了色彩空间转换,所以每帧图片检测用时最多;文献[8]的方法默认尾灯为圆形,容易漏检尾灯不是圆形的车辆,所以识别率最低;使用本文的车辆检测算法,在夜间市区光照条件复杂,识别率最低;夜间高速车辆少,干扰光源较少,故识别率最高,总体检测率在97%以上。说明本文夜间车辆检测算法具有较好的准确性和实时性。
4.2 尾灯跟踪实验
初始化设置粒子跟踪模块参数σ1=0.01,σ2=0.02,α =0.3,β=0.7,设置粒子数为 30。从上述采集视频中截取一段共180帧的含有前方车辆的视频,分别用基于多特征融合的粒子滤波算法和传统粒子滤波算法跟踪其中一个尾灯目标,并输出图像标记帧号和粒子估计目标重心位置序列,再批量计算已跟踪帧的目标重心位置,计算跟踪与实际的重心点欧式距离作为像素误差。实验结果如图9和图10所示。
图9 多特征融合粒子滤波跟踪Fig.9 Multi-feature fusion target tracking based on particle filter algorithm
图10 传统粒子滤波跟踪Fig.10 Target tracking based on conventional particle filter algorithm
由图9和图10可知,基于颜色特征的传统粒子滤波跟踪算法在光照变化剧烈情况下最终丢失跟踪目标,说明传统粒子滤波算法直接用于夜间尾灯目标跟踪效果较差,多特征融合粒子滤波算法可以持续对尾灯目标进行跟踪。图11对比显示了本文改进算法和传统粒子滤波算法目标跟踪的像素误差,由图11可以看出,本文所提算法误差一直在较小范围内。综合上述实验得出结论,本文所提的基于多特征融合的粒子滤波算法,应用于夜间尾灯目标跟踪效果良好。
图11 误差比较图Fig.11 Diagram of error comparison
4.3 重叠情况下车辆检测与跟踪实验
继续采用上一个实验的粒子滤波初始化参数,从采集的夜间市区视频图像中采集一段连续300帧的含有车辆遮挡情况的视频,验证车辆检测与跟踪系统在车辆重叠时的车辆检测与跟踪性能,结果如图12和表2所示。
图12 重叠车辆的检测与跟踪Fig.12 Vehicle tracking in case of target overlap
表2 检测性能对比Tab.2 Comparison diagram of vehicle detection performance
在图12(a)中,系统成功检测并跟踪到车辆A、车辆B、车辆C。在图12(b)中,车辆C由于车辆A的遮挡丢失一个尾灯,系统根据上一帧图像实现对车辆右侧尾灯的跟踪,并对车辆C位置进行了估计。表2为利用本文车辆检测算法和检测和跟踪系统对这段视频进行处理所得车辆检测率对比,由于夜间市区车辆遮挡情况较多,车辆检测与跟踪系统相较于车辆检测算法提升了车辆检测率,但由于运算量的增加,故每帧平均处理时间也有所增加。本实验结果说明结合尾灯跟踪算法可提高车辆互相遮挡时的车辆检测率。
5 结论
本文提出了一种基于尾灯的夜间前方车辆检测与跟踪方法。根据车辆的尾灯实现了对夜间前方车辆的检测;提出了一种基于多特征融合的粒子滤波尾灯跟踪算法,可对已检车辆进行持续跟踪;基于车辆检测算法和尾灯跟踪算法设计了车辆检测与跟踪系统。对采集的视频图像进行实验,结果表明本文所提车辆检测算法对夜间车辆的平均检测率可达96%;所提车辆跟踪方法可对夜间车辆进行持续跟踪;车辆检测和跟踪系统解决了车辆重叠情况下的车辆检测问题,并可提升车辆检测率至98%。本文研究有较高的实用性价值,因此将本算法移植到车载嵌入式系统是下一步需要完成的工作。