程 腾,蒋亚西,吴勃夫,王静静,朱西汉,杜卿宇
(合肥工业大学汽车与交通工程学院,合肥 230009)
据统计,我国所有高速公路交通事故中,34.29%为追尾碰撞[1-3]。由于驾驶员注意力不集中导致的大量追尾事故已被认定为汽车主要的安全问题。因此准确的预警对减少交通事故起到了重要作用。
精确的车辆跟踪与碰撞的预警密切相关,不精确的跟踪一方面会产生报警不及时,无法有效避免交通事故,另一方面会产生误报,降低驾驶员的驾驶舒适性。传统的 meanshift跟踪算法简单,鲁棒性好,但在跟踪过程中由于窗口宽度大小保持不变,当背景复杂,目标尺度变化时,跟踪就会失败,无法实现后续的计算[4-5];CMT[6]算法是一种基于特征点的跟踪方法,使用了经典的光流法,可跟踪任何场景下任何物体,且跟踪框能随目标尺度的变化而变化。但在实际应用时,该算法耗时较长,在远距离跟踪时跟踪不准确,无法有效实现远距离车辆碰撞预警,同时计算目标尺寸缩放时选取的是所有特征点计算结果的中值为缩放值,存在一定误差。
为解决上述问题,本文中提出一种基于数字图像相关(DIC)的高精度车辆跟踪算法,以检测到的车辆为跟踪目标,在目标区域周围进行亚像素级别的搜索匹配并不断更新跟踪框大小,在保证算法实时性的同时提高了车辆跟踪的精度,实现更为准确的预警,以提高驾驶安全性。
数字图像相关方法(DIC)[7]于20世纪80年代被提出来,作为一种基于数字图像处理和高精度数值计算的先进光学测量技术,已在工业上得到广泛应用[8]。数字图像相关方法处理的是变形前后物体表面的数字图像,通常变形前后的图像分别称为“参考图像”和“变形后图像”,其基本原理如图1所示。在参考图像f(x,y)中选取以待求点(xc,yc)为中心、大小为(2M+1)×(2M+1)的区域为参考图像子区,通过一定的搜索方法按照预先定义的相关函数进行计算,寻找与参考图像子区的相关系数为最大值或最小值的、以(xc′,yc′)为中心的目标图像子区,从而确定参考图像子区中心点的x和y方向的位移分量[9-11]。
图1 变形前后图像子区示意图
文献[12]中显示,零均值归一化最小平方距离函数(ZNSSD)相关函数与常用的零均值归一化互相关(ZNCC)函数等价,但ZNSSD相关函数对于目标图像子区灰度的线性变化不敏感,抗干扰能力强,因此本文中使用ZNSSD相关函数作为评价变形前后的图像子区相似程度的相关函数。
式中:f(x,y),g(x,y)分别为参考图像和目标图像子区中对应点的灰度;fm,gm分别为参考图像和目标图像子区灰度平均值;p为待求变形参数矢量,即p=(u,ux,uy,v,vx,vy)。当变形前后图像子区最为相似时,相关系数Cf,g(p)取最小值。
参考图像子区变形后,中心位置和整个子区形状都可能发生变化,而使用位移形函数[13-14]可表示这种变化。当仅考虑图像目标子区仅发生刚体位移、拉伸、弯曲和剪切等变形时,可采用1阶位移形函数[15-17]:
如图2所示,w1和w2分别为前车距相机镜头D1和D2处时相机图像中的车宽;o为相机光轴与成像平面的交点。基于小孔成像的原理[18],主车距前车的距离与图像中车宽的关系为
式中:W为前车宽度;D为距前车距离;f为相机焦距;w为前车车宽在成像平面中的大小。
利用4对透视变换前后对应点的坐标,通过二维透视变换公式[19-20],即可得到透视变换矩阵。采用获得的透视变换矩阵实现相机图像向实际空间俯视图图像的转换[21]。透视变换如下:
图2 成像几何示意图
相机图像中道路上某点(x0,y0)对应的实际前车距离为式中:ym为实际空间中纵向距离1m对应俯视图中像素个数;Dhead为相机图像底端在实际空间中对应的位置到车头的距离。
本文中采用的视频分辨率为752×480,实验中计算的透视变换矩阵为
Dhead=1.8m,ym=10个像素,前车位于主车正前方,选取前车轮胎与地面接触点连线的中点(x0,y0)计算车距。实际行驶过程中前车远离主车时x0变化较小,而y0值越来越小。实验中某一帧对应的x0=434,y0=181,由式(7)可得距离 D11=105.671m,当前车继续远离本车,x0保持不变,y0变化一个像素即y0=180时,带入式(7)可得 D22=114.402m。由此可见前车距本车较远时,图像中单位像素的变化对应实际距离较大,若仍采用像素级计算前车距离会产生较大误差,因此在图像分辨率确定条件下必须采用亚像素级精度计算。
对式(4)求导可得式中:w′为单位时间车宽像素变化个数,像素/s;vr为相对速度,m/s;T为预碰撞时间,s。
对式(8)两端同时除以帧率fps可得连续两帧之间图像中车宽像素变化个数p,即
由式(9)可以看出,p与D,T,fps成反比,与f,W成正比,当相机完成标定后,f为定值,同时fps和W也为定值。当要求的碰撞预警时间固定时,预警距离越大,相邻两帧之间车宽像素变化个数越少。同理预警距离固定时,要求的碰撞预警时间越长,车宽像素变化个数也越少,实际的预警可通过跟踪框宽度的变化来实现。
将式(7)代入式(9)可得
同时,利用跟踪框的缩放[18],可计算相对速度。
将式(7)代入式(12)可得
式中ε为相邻两帧之间车宽变化率,通过DIC方法可直接输出得到。通过式(13)可计算两车的相对速度。
本文中f=750个像素,W=1.68m,fps=20帧/s,在第1.2节空间距离计算中可知,x0=434,y0=181时,D11=105.671m,若要实现在距离D11处满足预警时间T=3s,代入式(10)可得p=0.199个像素,即连续两帧相机图像中车宽变化|w2-w1|为0.199个像素,像素级精度已不能满足精度要求,同时由式(10)知p与D有关,在距离分析中,像素级精度在距离计算上也会产生较大误差,这样进一步增加了p计算的不准确度。
从式(13)可知,相对速度的计算与距离、跟踪框的缩放和视频帧率有关,要获得精准的相对速度计算,必须满足高精度的距离和跟踪框缩放的计算。通过上述分析可知,在典型的相机分辨率下,像素级精度已不能满足要求。因此,提出一种基于DIC的高精度车辆跟踪算法,由式(2)可得
DIC方法中Δx′可满足0.001个像素的精度,不论是在距离还是车宽缩放计算上都能很好地满足远距离时前车的准确跟踪计算。
本实验采用主频3.4GHz CPU,内存8G的计算机为硬件平台,Windows7操作系统为软件平台,编译环境采用VS2012配置opencv2.4.9,视频分辨率为752×480,帧率为20帧/s。实验中使用Adaboost+Haar特征检测算法进行车辆检测,以检测到的车辆作为初始跟踪区域,检测结果为正方形区域。为提高车辆跟踪的精度,同时降低耗时,本文中提出的跟踪算法如下。
首先,考虑到检测的车辆区域边界部分包含的背景较多,以检测到的车辆区域的中心为中心,边长为原边长的0.8倍作为最终的车辆区域。其次将截取后的车辆区域缩放到23×23大小,采用同样的缩放比例对原图进行缩放。之后以缩放后的车辆区域为图像参考子区,以参考图像子区中心点为中心,在缩放后的原图中选取35×35大小为感兴趣区域,在该区域内采用DIC的方法进行亚像素级别的搜索匹配,寻找目标图像子区,当ZNSSD大于或等于设定的阈值时表示跟踪成功,当小于阈值时则表示跟踪失败,本文中设定的阈值为0.88。实验证明该阈值能达到很好的跟踪效果。随后在满足跟踪条件下,采用DIC方法的同时得出目标图像子区在x和y方向的缩放大小。经过大量实验证明,x方向的缩放更符合实际情况,因此使用x方向的缩放作为车辆跟踪框的最终缩放值。根据最终输出的ε值,利用式(13)可实现相对速度的计算。
实验设置为前方车辆在距本车10m处以30km/h的相对车速远离本车,分别采用本文的算法与CMT算法进行跟踪,统计图像中跟踪框宽度、中心点位置变化以及跟踪耗时。如图3所示,图3(a)和图3(b)分别为采用基于DIC的跟踪算法和采用CMT算法在视频中第22,78,98帧的跟踪效果图。从图中可以看出,基于DIC的跟踪算法能够实现远距离高精度跟踪,而CMT算法进行跟踪时在远距离处无法准确跟踪。
图3 基于DIC的跟踪算法与CMT算法第22,78,98帧实时跟踪对比
图4为本文提出的基于DIC的跟踪算法与CMT算法在跟踪框宽度w和跟踪框中心点y坐标的比较。其中图4(a)为跟踪框宽度w随帧数变化的比较,图4(b)为跟踪框中心点y坐标随帧数变化的比较。从图中可以看出,在第37帧到第47帧期间由于路面不平导致主车轻微振动,基于DIC的跟踪算法受其影响较小,跟踪框尺度缩放平稳,而CMT算法在跟踪过程中受其影响较大,同时从第89帧到第99帧可以看出,基于DIC的跟踪算法能进行精确的远距离跟踪,跟踪框宽度随着前方车辆的远离不断减小,而CMT算法在远距离处未能有效实现准确跟踪。图5为基于DIC的跟踪算法与CMT算法在跟踪耗时上的对比。图中显示在耗时方面基于DIC的跟踪算法明显优于CMT算法,同时CMT算法的耗时受特征点的影响,特征点越多,耗时越长。综合分析本研究算法在跟踪精度与耗时方面均优于CMT算法,而跟踪精度能很好满足与前车碰撞报警的要求。
图4 基于DIC的跟踪算法与CMT算法跟踪框宽度w与中心点y坐标对比
图5 基于DIC的跟踪算法与CMT算法跟踪耗时对比
针对现有的车辆跟踪算法跟踪精度不高的问题,本文中提出一种基于DIC的高精度车辆跟踪算法,跟踪框的缩放可达到2%像素精度。实验结果表明,该算法能很好地实现高精度车辆跟踪,同时与CMT算法相比,大大降低跟踪耗时,在保证精度的同时缩短了跟踪时间,有助于低成本开发,降低对相机高分辨率的依赖,具有很好的应用价值。