一种基于路侧摄像头的车辆跟踪方法
2019-06-27汤从衡李其仲
汤从衡,李其仲
(1.现代汽车零部件技术湖北省重点实验室(武汉理工大学),湖北 武汉 430070;2.汽车零部件技术湖北省协同创新中心,湖北 武汉 430070)
1 引言
在道路视频检测领域,车辆检测及跟踪是非常重要的技术之一,基于道路视频的车辆检测及跟踪不仅能获取实时的交通信息,而且能通过先进的通讯技术,将道路信息发布,可以极大地缓解交通压力。在道路视频检测中,常用的车辆检测算法有帧间差分法、背景差分法、背景建模法等[1-3],ViBe 背景建模算法是一种常用的背景建模检测算法,能够自动适应背景环境的变化。然而ViBe背景建模算法在光线较为强烈时,由于运动目标的阴影存在,容易将目标阴影检测为运动目标,影响车辆的检测精度,许多学者对这一问题进行了研究[4-6]。目前最常用于道路视频检测的车辆跟踪方法有卡尔曼滤波算法、Camshift 算法、特征匹配跟踪算法、TLD 目标跟踪算法[7-9],其中卡尔曼滤波算法比较适用于视频帧率较高的视频车辆跟踪中。
为了解决ViBe背景建模算法易受阴影影响的问题,本文提出了一种HSV阴影消除方法,并在此基础上,提出一种弱重叠视域的车辆跟踪方法,通过路侧设备之间的信息交互实现车辆的跟踪。
2 基于改进ViBe算法的车辆检测
2.1 传统ViBe背景建模算法
传统ViBe背景建模算法是一种能够自动适应背景环境的背景建模检测算法,ViBe 背景算法将背景图像中的像素点视作是由多个样本构成,可以用一个像素集合表示,当集合中存在N个样本时,像素点(x,y)的背景模型表达式为:
式中M(x,y)表示背景图像的像素点,v(x,y)为当前图像在(x,y)像素点处的像素值。现设SR(x,y)表示以v(x,y)为圆心、半径为R的圆形像素点区域,具体如图1所示。最终SR(x,y)范围内所包含的背景样本点个数Num的计算公式为:
图1 ViBe背景建模算法像素点圆形区域示意图
当给定一个阈值T,若根据式(2)计算所得Num大于阈值T,则视像素点(x,y)为背景像素点,反之则视作检测目标像素点。ViBe算法的实现过程主要分为三个步骤:
(1)背景图像初始化。原始ViBe 算法的背景图是以视频中第一帧图像作为背景图像,利用第一帧图像实现图像像素样本集的构建。以第一帧图像对背景图像进行建模,具体的建模公式为:
式中M0(x,y)为初始背景模型中(x,y)处的像素点,v0表示初始原图像中(x,y)像素点处的像素值,NG(x,y)表示邻域中与(x,y)像素点相邻的点。
(2)前景检测。通过该步骤可将前景检测目标从背景图像中分离出来,即目标检测过程。设(x,y)像素点处的像素值为v(x,y),对应的背景样本集为M(x,y),相应地在(x,y)像素点处检测图像与背景图像的像素值之差为D(x,y),则D(x,y)的计算公式为:
式中di=v(x,y)-vi(x,y)。当半径阈值R以及差分阈值T确定之后,通过统计当前像素点与历史样本值之差大于R的个数,若个数大于T,则判定该像素点为前景目标点,反之为背景点。
(3)背景图像更新。ViBe 算法对于模板图像的更新采用了三个重要策略:无记忆更新策略、时间采样更新策略、空间邻域更新策略。无记忆更新策略在更新背景图像的像素点时,为确定具体需要更新的像素点,采用的是利用新像素点像素值随机替代该像素点样本的某一样本集;时间采样更新策略则是按照事先设定的更新速率对背景图像进行更新,当某一像素点被判别为背景点时,该像素点有的概率更新背景模型,其中φ为时间采样因子,一般设为16。其具体的更新方法如下:每个背景点都有的概率更新该像素点的模型样本值,有的概率去更新该像素点邻居点的模型样本值,当目标像素点数量累积达到临界值时,将该像素点转变为背景点,之后同样存在的概率进行背景样本值的更新。
2.2 基于改进ViBe背景算法的车辆检测
传统ViBe背景建模算法容易将阴影背景检测成前景目标。当光线较为强烈时,运动目标在光线下会产生阴影,且阴影区域的颜色与周围背景区域颜色差异大,背景差分之后将阴影误检为运动目标,并导致运动目标形状检测不准确,产生较大的误检区域。为了减小阴影现象对ViBe背景建模算法检测精度的影响,需要对阴影进行消除。
目前主流的阴影消除法有两种,一种是基于HSV 颜色空间的阴影消除法,一种是基于RGB 颜色空间的阴影消除法。经过研究表明,在HSV 色彩空间中,阴影的数值比较稳定,运动目标产生的阴影在HSV 色彩空间中亮度V 会降低,且运动目标产生的阴影在整个HSV色彩空间中的分量和比背景的分量和因此本文在HSV 色彩空间中执行阴影抑制算法来减少阴影对检测结果的影响。
在ViBe 背景建模算法检测的前景区域内,根据阴影在HSV色彩空间中的特点统计出可能是阴影的像素点。统计公式为:
根据式(5)初步选取阴影像素,然后将选取的像素全部置入像素集合中,最后根据连通区域原理将候选阴影集合SPC 划分为不同的连通区域集合
由于经过式(5)筛选的区域并不完全是阴影区域,因此需要计算连通区域内像素的梯度和梯度方向,计算公式为:
式中,∇p和θp分别表示梯度和梯度方向。当时,τm为固定阈值,由此可以确定新的像素集合
式中,τa为设定阈值,H(X)函数为阶跃函数,表达公式为
计算出连通区域集合SPCi中每个连通区域的梯度相关系数C,并设定阈值τa。当梯度相关系数C 大于阈值τa时,认为该区域为阴影区域,显示为背景。当梯度相关系数C小于阈值τa时,认为该区域为检测区域,不做改变,显示为前景。基于HSV色彩空间的阴影抑制算法可以去除动态目标的大部分阴影区域,随后采用相关图像形态学处理办法消除小连通区域,最终达到较好的检测效果。
3 卡尔曼滤波车辆跟踪
在跟踪算法中,最为常用的算法为卡尔曼滤波(Kalman Filter,KF),该算法是将视频检测过程视为一个动态系统序列,通过最小线性方差估计预测得到视频序列中车辆目标的最优位置状态。其状态方程见式(10)。
式中,x为系统状态变量,y为系统观测变量,u是系统的输入;A是状态转移矩阵,B是控制矩阵,wk和vk分别是系统误差和测量误差。卡尔曼滤波算法对车辆进行跟踪主要分为两个过程:预测和跟踪。
(1)预测过程。对车辆状态预测的原理是利用前一时刻的车辆状态信息对后一时刻的车辆状态进行预测,计算目标的预测状态值用式(11),预测值与真实值的误差协方差矩阵见式(12)。
(2)更新过程。在更新过程中,首先计算得到最优卡尔曼增益,然后根据卡尔曼增益得到当前时刻的最优估计值,最后计算得到预测值和实际值之间的误差协方差矩阵,为下一次的预测做准备。最优卡尔曼增益公式见式(13),修正状态公式见式(14),修正最小均方差计算公式见式(15)。
4 弱重叠视域车辆跟踪
由于本文采用路侧摄像头对车辆进行跟踪,在跟踪过程中会发生目标车辆离开当前路侧摄像头监控范围进入相邻摄像头监控范围的情况,此时容易发生丢失目标车辆的情况。
相邻摄像头的车辆跟踪方法一般分为非重叠视域的车辆跟踪方法[10]和重叠视域的车辆跟踪方法[11],如图2所示。非重叠视域的车辆跟踪方法如图2(a)所示,重叠视域的车辆跟踪方法如图2(b)所示。
图2 相邻摄像头车辆跟踪方法
方法a存在视野盲区,不能很好的利用空间位置对目标车辆进行匹配和跟踪。方法b 存在视野区域重叠的部分,可以充分利用相邻摄像头视野之间的重叠,对目标车辆进行匹配,完成跨摄像头的车辆跟踪,但基于重叠视域的车辆跟踪方法需要的路侧摄像头较多,浪费资源。
针对这两种车辆跟踪方法的局限性,本文设计了一种弱重叠视域的车辆跟踪模块,弱重叠视域的示意图如图3所示。通过合理设计相邻摄像头的视野区域分布情况,利用相邻摄像头视野区域紧密衔接的特点,实现目标车辆的连续跟踪。
图3 弱重叠视域示意图
以单车道为例设计弱重叠视域跟踪模块,首先分析单个路侧摄像头的视野区域,将单个路侧摄像头的视野区域划分为三块区域,这三块区域分别为驶入提醒区域、测速区域1和测速区域2。另外,考虑到车辆驶出测速区域2 时存在车辆后半部分在原始目标区域的情况,为描述方便,将该摄像头安装位置到视野边缘的这块区域设定为驶出提醒区域,如图4所示。
图4 单个路侧摄像头区域划分图
驶入提醒区域用以告知路侧摄像头,目标车辆已经进入视野区域。测速区域用以计算目标车辆在视野区域内的速度信息和加速度信息,为车辆信息的通讯提供数据。驶出提醒区域用以告知相邻摄像头,该目标车辆已经驶入相邻摄像头视野区域,并在该区域内实时传输目标车辆的位置信息、速度信息和加速度信息。
然后分析相邻路侧摄像头之间的视野区域划分情况。基于弱重叠视域的思想,将相邻摄像头视野区域紧密衔接,相邻路侧摄像头区域划分情况如图5所示。
图5 相邻路侧摄像头区域划分图
5 实验结果及分析
为了验证本文所提出车辆跟踪方法的有效性,在校园道路模拟城市道路进行实验,实验器材有:①Mavic Pro 大疆无人机,通过悬停模式模拟路侧监控摄像头进行视频采集;②大唐电信DMD31模组,用于模拟路侧单元中的路侧通讯设备;③PC 电脑,Intel(R) Core(TM) i3-4170 @ 3.70GHz CPU、NVIDIA GeForce GTX 1050 2G 显存、8G RAM、本文软件环境在Windows 操作系统下进行,另外使用了Visual Studio 2013开发工具集和OpenCV计算机视觉库。
本次实验需要测试三个方面的内容,一是验证改进的ViBe算法在路侧单元上进行车辆检测的优越性;二是验证卡尔曼滤波算法应用于路侧摄像头环境下车辆跟踪的有效性;三是获取实验车辆的运动状态信息,并采用DMD31模组接收获取的车辆信息。
(1)车辆检测结果分析。分别采用传统的ViBe算法和改进的ViBe 算法对采集的视频进行车辆检测,二者检测效果如图6所示。
图6 阴影检测效果对比图
从图中效果可见,传统的ViBe 算法受阴影影响较大,改进后的ViBe 算法能够降低阴影对车辆检测的影响,且改进后的ViBe 算法生成的前景图质量更高,噪点影响较低,最终导致的结果是改进后的ViBe算法生成的车辆检测框定位更加精准。
(2)车辆跟踪结果分析。车辆跟踪实验在实际校园场地上进行,在改进的ViBe算法基础上,使用卡尔曼滤波算法对目标车辆进行跟踪。为了方便说明视频效果,在文中每隔一段时间选取一张图片组成视频序列图像,用以实验结果分析,视频序列图像如图7所示。
从图中结果可知,将卡尔曼滤波算法和改进ViBe算法结合能对车辆实现很好的跟踪,漏检率较低。
(3)车辆运动信息提取及信息传输。从图8中结果可知,目标车辆进入测速区域1 时,视频为第48帧,进入测速区域2时,视频为第143帧,进入驶出提醒区域时,视频为第250 帧,此时测试结果显示车辆行驶速度为2.8m/s,约为10km/h,加速度为-0.1m/s2,与目标车辆实际行驶速度相符,并能成功将驶出提醒区域处的信息传输给DMD31 模组,验证了本文中提出方法的可行性和有效性。
图7 视频序列原始图像
图8 运动信息提取结果图
6 结论
本文提出一种基于路侧摄像头的车辆跟踪方法。在车辆检测部分,通过在HSV空间中抑制阴影的产生,有效减少了阴影现象对车辆检测的影响。在车辆跟踪阶段,通过将改进ViBe算法与卡尔曼滤波算法结合,且构建了一种弱重叠视域的车辆跟踪模块,实现车辆在目标区域的有效跟踪,并能将车辆在监控范围内的运动信息传递出去。实验表明,本文方法能满足实际道路交通监控中的车辆跟踪需求。