由于城市发展的需要和人们对高生活品质的需求,近年来智能交通系统(Intelligent Transportation System,ITS)成为研究热点。车流量检测是交通数据采集的关键部分,能够直接反映城市的交通问题,进而采取相应措施。基于视频的车流量检测[1]方法较于传统的方法(如磁感线圈、超声波等)具有不破坏路面、精确度高、检测范围更广等优点。
基于视频的车流量检测方法主要分为运动车辆检测和车辆计数两个步骤[2]。对于运动目标检测[3]部分,现在比较常用的方法有光流法[4]、帧间差分法[5-6]、背景减除法[7]等。
1) 光流法检测准确率高,但对设备硬件要求比较高且比较耗时,因此光流法检测不适用对时间效率要求比较高的车流量检测;
2) 帧间差分法实时性比较好,但可能会由于车速过快而容易出现空洞导致检测不准确;
3) 背景减除法是目前比较常用的方法,关键在于背景建模。
ViBe算法[8-9]是一种计算量小且有较好检测效果的背景建模算法,但是在环境突变或车速过快的情况下不能够及时更新背景,造成背景误判断为运动目标的情况,即“鬼影”现象,降低检测的准确性。本文根据图像二值化[10]原理,提出一种改进的ViBe算法,能够快速地更新背景,即能够提前消除“鬼影”,降低环境突变对运动车辆检测的影响,从而提高车流量统计的准确性。
基于虚拟线圈[11]的车辆计数算法由于其较好的实时性而被广泛使用。但在实际操作中一般是根据车道设置成固定的虚拟线圈,这样对于多车道中不按车道行驶的车辆的计数就会有一定的局限性[12]。本文根据车辆的运动轨迹,建立虚拟线圈序列,提出一种自适应虚拟线圈的车辆计数算法。
1 ViBe运动目标检测算法分析ViBe算法的独特之处在于利用了空间一致性,随机选择是否进行背景更新及更新的背景像素,但是会出现由于误检测前景目标而导致的鬼影现象,在传统ViBe算法消除鬼影的时间是比较长的。在本文中改进的ViBe算法通过对前景检测进行二次判断,并且改变背景更新机制,可以快速消除鬼影,降低鬼影对后续帧检测运动目标的影响。
1.1 ViBe运动目标检测算法算法主要包括三个部分:背景样本初始化、前景检测、背景更新策略。
1) 背景样本初始化,即用第一帧图像初始化引入的背景模型。初始化方法就是随机地选择像素邻域中的像素值初始化背景样本中该像素的像素值。
2) 前景检测,就是判断当前像素否为前景目标。判断标准就是将图 1中Pf(x)与图 2中Pt(x)作如式(1)的计算,统计判断为前景的次数,与已设置阈值(此阈值是经验值,为3)比较,判断是否为前景目标。
$f(x)=\left\{ \begin{align} & \left| {{p}_{f}}(x)-{{p}_{t}}(x) \right|\le R,\text{ }背景候选 \\ & \left| {{p}_{f}}(x)-{{p}_{t}}(x) \right|>R,\text{ }前景候选 \\ \end{align} \right.\text{ }$ | (1) |
3) 背景更新策略,当前像素被判定为背景时,则需要根据更新策略更新背景样本。更新策略就是设定抽样因子U,随机的选择是否进行背景更新,随机选取更新的背景样本及邻域。
1.2 一种改进的ViBe算法在前景检测过程中,若某位置的像素点被多次判断为前景,则可能是因为此处的背景样本中的像素点需要更新所导致,而且若在鬼影消除期间,增大背景更新的概率,则可以达到快速消除鬼影效果,结合这两种考虑本文提出一种改进的ViBe算法。改进的ViBe算法的运动目标检测步骤如下:
1) 背景样本初始化,按照传统ViBe用第一帧初始化20帧背景样本。
2) 前景检测,在当前像素经过传统ViBe算法前景检测判断标准被确定为前景目标时,选择背景样本中的任意一帧Q,将Q帧中对应位置的像素值Pt(x)加1。若经过处理后的Pt(x)大于已设定阈值M(由多次实验结果表明当M设为20时效果最好,故本文中将M设为20),则判定Pf(x)为背景。
3) 背景更新,按照传统ViBe算法随机选择是否进行更新及更新像素的位置,但是将传统ViBe算法中固定的抽样因子U根据当前帧数Fr改为变动的值,如式(2)所示(本文中r为10,Un为5,u为16,r与Un是根据实验结果选取的,u是根据经验值设置的)。
$U = \left\{ \matrix{ n{\rm{ ,}}{{n \times (n - 1)} \over 2} \times r \le Fr < {{n \times (n + 1)} \over 2} \times r{\rm{ }} \hfill \cr \left( {n = 1,2 \cdots {U_n}} \right) \hfill \cr u{\rm{ ,}}Fr \ge {{{U_n} \times ({U_n} + 1)} \over 2} \times r{\rm{ }} \hfill \cr} \right.{\rm{ }}$ | (2) |
其中,n=1,2,…,Un。改进的ViBe算法考虑了背景误判断的情况,并且增大了鬼影消除期间的背景更新概率。如图 3所示,传统ViBe算法430帧时还没有完全消除的鬼影,本文改进算法44帧时就可以完全消除。
目前常用的车辆计数有基于目标跟踪[13]检测和虚拟线圈检测两种算法。基于目标跟踪的算法利用不同帧之间的相关性,匹配运动目标在不同帧之间的特征,通过对比匹配结果,进行车辆计数。后者是预先在车道上设置虚拟检测带,车辆进入或者离开虚拟检测带,都会带来明显的像素亮度值的变化,根据这个变化来进行车流量统计。由于车流量检测对时间效率有较高的要求,本文在虚拟线圈算法的基础上进行改进,考虑到传统虚拟线圈一般是根据车道来划分成固定的虚拟线圈,容易造成车辆变道时车辆计数误检的缺陷,提出一种自适应虚拟线圈的车辆计数算法。
2.1 基于自适应虚拟线圈的车辆计数算法自适应虚拟线圈的车流量检测算法,预先在车道上设置固定检测带,当运动车辆进入固定带时生成虚拟线圈,离开时便撤销虚拟线圈,再根据虚拟线圈的车辆计数算法统计生成的虚拟线圈中的车辆。
首先在车道上设置固定的检测区域,检测区域是根据车辆行驶规律和道路摄像头的摆放位置来设置,长度设置为图像宽度,宽度一般是大于车辆车窗宽度小于车辆宽度,在本文中取30个像素宽度。根据找二值图像检索轮廓算法,找到前景目标图像的轮廓并画出其最小矩形框。当运动目标进入固定的检测区域时便在检测区域内建立一个虚拟线圈,其长度与当前运动目标的矩形边界长度相同,宽度与固定检测区域宽度相同,并将生成的虚拟线圈加入到虚拟线圈序列中;当运动目标离开固定检测区域时,在虚拟线圈序列中撤除此运动目标的虚拟线圈。
固定的检测区域与运动目标的矩形边界关系如图 4所示。xi、xj为虚拟线圈序列中某一虚拟线圈在x轴上的两坐标,Fs为某一虚拟线圈生成时的帧数,Fr当前图像帧数。通过式(3)判断运动目标是否进入固定检测区域,并且在虚拟线圈序列中所有虚拟线圈皆满足式(4),即不存在此虚拟线圈,便生成一个新的虚拟线圈,如图 5所示,黑色实线框为前景目标矩形框,白色矩形框为设定的固定检测区域,黑色虚线框为生成的虚拟线圈,并将生成的新虚拟线圈加入到虚拟线圈序列中。当固定检测区域与目标图像的矩形边界满足式(5)时,即运动目标离开固定检测区域,或者由于“鬼影”造成的非真正需要的虚拟线圈存在的时间大于设定时长时,便在虚拟线圈序列中撤销此虚拟线圈。
$\left| {{y}_{1}}-Y \right| <{{H}_{y}}\text{ }$ | (3) |
$\left| {{x}_{1}}-{{x}_{i}} \right|>{{W}_{x}}\And \And \left| {{x}_{2}}-{{x}_{j}} \right|>{{W}_{x}}\text{ }$ | (4) |
$\left| (Y\pm wid)-{{y}_{2}} \right| <{{H}_{y}}\text{ }\left\| \text{ }\left| Fs-Fr \right|>{{F}_{num}}\text{ } \right.$ | (5) |
其中:(X,Y)表示固定检测带右下角坐标;Wid表示固定检测带的宽度;Hy 、Wx 、Fnum 是设置的参数,Hy 、Wx分别为12、20,Fnum 的值根据视频中大部分车的车速设置,所设参数值都是根据实验经验所得。
根据虚拟线圈的车辆计数算法进一步确定已生成的虚拟线圈中是否存在车辆。虚拟线圈的车流量检测算法如下:
1) 设置虚拟线圈在没有车辆进入时状态为0;
2) 当虚拟线圈中像素值为255的像素点个数大于某一阈值时,在本文中此阈值取的是虚拟线圈像素点个数的25%,即认为有车辆进入,改变虚拟线圈的状态为1;
3) 当虚拟线圈中像素值为255的像素点个数小于某一阈值时,即认为车辆离开,改变虚拟线圈的状态为0,车辆计数加1。
2.2 算法整体流程1) 在图像中选择感兴趣区域(Region Of Interest,ROI);
2) 在车道上设置一条固定的检测带;
3) 根据第一帧图像初始化背景模型;
4) 对于新来的一帧图像,根据改进前景检测算法,判断是否为前景;
5) 当某像素点确定为背景目标时,将此像素点的像素值改为0,并且根据改进的背景更新算法进行背景更新,当确定为前景目标时,则将此像素点像素值改为255;
6) 形态学处理检测车辆的二值图像;
7) 根据二值图像检索轮廓算法标出运动的矩形框;
8) 根据改进的自适应虚拟线圈算法进行车辆计数;
9) 新来一帧转至3)。
3 实验结果及分析为验证所提算法的有效性,本文在以下环境中进行实验:处理器为2.0 GHz Intel core i3,内存为4 GB,操作系统为Windows 7 旗舰版,编程环境为vs2010配置下的OpenCV 2.4.9 。采用三个不同场景的视频进行本次实验,实验结果对应在表 1~3中。其中准确率根据式(6)计算。
$准确率=1-\frac{误检数+漏检数}{人工计数}$ | (6) |
表 1中视频对应的是4车道视频,视频中车辆行驶速度较快并且按照车道行驶。由表 1可以看出在没有出现车辆变道情况下本文算法的准确率依然比较高,说明了本文方法在运动车辆检测阶段对鬼影的提前消除能够使得后续帧更准确地检测车辆,从而提高准确率。表 2对应的是2车道车辆视频,车辆速度适中,出现车辆变道情况。由表 2可以看出本文方法对于车辆变道的情况时准确率较传统虚拟线圈的车辆计数算法有了很大的提高,这是由于本文方法在车辆计数时是根据运动目标的轮廓生成虚拟线圈,而非传统虚拟线圈算法中根据车道划分成固定的虚拟线圈。如图 6所示,车辆变道后也只是会统计生成虚拟线圈中的像素值变化,就避免了传统虚拟线圈算法中因车辆变道而导致多个虚拟线圈中的像素值变化,造成误检,说明本文方法对于车辆变道情况下的车流量检测有一定的实用价值。表 3反映的是一个3车道视频,视频中大部分车辆速度较慢,出现车辆压道并且在视频中多次出现因摄像头抖动等原因而导致的环境突变的情况。在表 3中可以看出,本文方法对于车辆变道情况和环境突变都能很好地处理,由图 7可以看出本文方法对于环境突变时能够及时提取背景样本,提高检测准确率。
虚拟线圈算法每一次都需要对设定的虚拟线圈进行计算统计,但本文提出的自适应虚拟线圈车辆计数算法只需要在可能存在车辆的情况下进行计算,所以由表 1~3可以反映出本文方法在没有降低时间效率的情况下,在不同场景中的车流量检测准确率都有提高,特别是在有车辆变道的情况下,本文方法很有优势。
4 结语本文通过对基本ViBe算法的研究,改进基本ViBe算法中前景检测和背景更新机制,提出了一种改进的ViBe算法,可以快速地消除由环境突变而带来的不利影响;另外根据运动车辆检测目标的矩形框来设置自适应的虚拟线圈提出了一种新的多车道的车流量检测算法,能够很好解决车辆变道造成的误检测,实验结果证明本文方法时间效率和检测准确性都能够很好地满足车流量检测的需求。在下一步的工作中将提取车辆特征,在提高准确率的基础上能够对不同类型的车进行计数。
[1] | PENG S. Flow detection based on traffic video image processing[J]. Journal of Multimedia, 2013, 8 (5) : 519-527. |
[2] | 蒋建国, 王涛, 齐美斌, 等. 基于ViBe的车流量统计算法[J]. 电子测量与仪器学报, 2012, 26 (6) : 558-563. ( JIANG J G, WANG T, QI M B, et al. Statistical algorithm for traffic flow based on ViBe[J]. Journal of Electronic Measurement and Instrument, 2012, 26 (6) : 558-563. ) |
[3] | 周世付, 李建雄, 沈振乾, 等. 基于高斯混合模型的多车道车流量检测算法[J]. 计算机仿真, 2012, 29 (10) : 331-335. ( ZHOU S F, LI J X, SHEN Z Q, et al. Multilane traffic flow detection algorithm based on Gaussian mixture models[J]. Computer Simulation, 2012, 29 (10) : 331-335. ) |
[4] | 胡以静, 李政访, 胡跃明. 基于光流的运动分析理论与应用[J]. 计算机测量与控制, 2007, 15 (2) : 219-221. ( HU Y J, LI Z F, HU Y M. Theories and applications of motion analysis based on optical flow[J]. Computer Measurement&Control, 2007, 15 (2) : 219-221. ) |
[5] | 於正强, 潘赟, 宦若虹. 一种结合帧差法和混合高斯的运动检测算法[J]. 计算机应用与软件, 2015, 32 (4) : 129-132. ( YU Z Q, PAN Y, HUAN R H. A moving detection method combing frame difference and Gaussian mixture model[J]. Computer Applications and Software, 2015, 32 (4) : 129-132. ) |
[6] | ZHAN C H,DUAN X H,XU S Y,et al.An Improved moving object detection algorithm based on frame difference and edge detection[C]//ICIG'07:Proceedings of the 2007 Fourth International Conference on Image and Graphics.Washington,DC:IEEE Computer Society,2007:519-523. |
[7] | 张娟, 毛晓波, 陈铁军. 运动目标跟踪算法研究综述[J]. 计算机应用研究, 2009, 26 (12) : 4407-4410. ( ZHANG J, MAO X B, CHEN T J. Survey of moving object tracking algorithm[J]. Application Research of Computers, 2009, 26 (12) : 4407-4410. ) |
[8] | BARNICH O,VAN DROOGENBROECK M.ViBe:a powerful random technique to estimate background in video sequence[C]//ICASSP 2009:Proceedings of the 2009 Internet Conference on Acoustics,Speech,and Signal Process.Piscataway,NJ:IEEE,2009:945-948. |
[9] | OLIVIER B, MARC V. ViBe:a universal background subtraction algorithm for video sequences[J]. IEEE Transactions on Image Processing, 2011, 20 (6) : 1709-1724. doi: 10.1109/TIP.2010.2101613 |
[10] | 江明, 刘辉, 黄欢. 图像二值化技术的研究[J]. 软件导报, 2009, 8 (4) : 175-177. ( JIANG M, LIU H, HUANG H. Research on image binarization technology[J]. Software Guide, 2009, 8 (4) : 175-177. ) |
[11] | 李香平, 杨兆选. 基于虚拟线的视频交通检测新算法[J]. 电子测量与仪器学报, 2005, 19 (4) : 30-33. ( LI X P, YANG Z X. New vision vehicle detection algorithm based on virtual line[J]. Journal of Electronic Measurement and Instrument, 2005, 19 (4) : 30-33. ) |
[12] | YU J J,ZUO M.A video-based method for traffic flow detection of multi-lane road[C]//Proceedings of the 2015 Seventh International Conference on Measuring Technology and Mechatronics Automation.Piscataway,NJ:IEEE,2015:68-72. |
[13] | HUANG D Y, CHEN C H, HU W C, et al. Feature-based vehicle flow analysis and measurement for a real-time traffic surveillance system[J]. Journal of Information Hiding and Multimedia Signal Processing, 2012, 3 (3) : 282-296. |