基于Vibe算法和连通域的车流量统计研究
2019-12-11张嘉烽张正华房崇鑫
张嘉烽,张正华,徐 杰,房崇鑫,钱 锦,苏 权,王 飞
(1.扬州大学 信息工程学院,江苏 扬州 225127;2.扬州国脉通信发展有限责任公司,江苏 扬州 225007)
0 引 言
随着社会的不断发展,车辆的数目也在日益增多,所以智慧交通系统在交通运输中起到的作用也越来越重要。在智慧交通系统中有一个很关键的环节,即车流量统计(TFS)[1]。车流量统计的精确度和实时性将对整个智慧交通系统的智能程度产生很大的影响。传统的车流量检测技术有感应线圈检测、红外检测、超声检测和无线传感器网络检测等技术[2],这些技术都有一个明显的缺点,就是易受外界因素的干扰。因此,诞生了一种相对新颖且缺点更少的车流量检测技术,即基于视频的车流量统计技术。一般来说,基于视频的车流量统计由视频预处理、车道线设置、运动区域目标检测和统计计数共4个部分组成。文中主要研究的是运动区域目标检测和统计计数这两个方面。
运动区域目标检测算法有光流法检测、帧差法、背景消减法等[3]。光流法计算方法相当复杂,且抗噪性能差,如果没有特别的硬件装置,其处理速度相当慢,达不到实时处理的要求。帧差法是将前后两帧图像对应像素点的灰度值相减,如果灰度差值很小,可以认为该点无车经过;反之灰度变化很大,则认为有车经过。然而该方 法需要动态的设定时间间隔进行差分。对于慢速运动的物体,必须选择较大的时间差,如果时间间隔过小,容易产生空洞,影响检测结果。背景减法是目前基于视频检测算法中最常用的一种方法。背景减法的关键是背景的提取和更新,一般的背景建模方法对突发运动和光照突变敏感,且需要几十帧进行学习,实时性普遍不高。基于此,文中改进了一种基于Vibe算法[4]和连通域[5-6]相结合的车流量检测算法。实验结果表明,该方法的准确度和实时性都比较高。
1 Vibe算法
Vibe的思想[7]是比较独特的,它选取一些像素点作为一个样本集合,这个样本集里将某像素点过去的以及相邻的像素值作为采样值。之后每帧图像的新像素都和样本进行比较,从而判断出背景点。
1.1 背景模型
Vibe模型中的样本集一般选取20个像素点。一般来说后面录入的每帧新图像,只要判断其像素点与样本值是否接近,就可以知道是否为背景点。
用公式表示,可以认为:
v(x,y):像素点(x,y)处的当前像素值;
M(x,y)={v1(x,y),v2(x,y),…,vN(x,y)}:像素点(x,y)的背景样本集(样本集大小为N);
R:上下取值范围。
则v(x,y)-M(x,y)的每个样本的差值μ且μ<|R|的个数为Nb,此时,如果Nb大于一个阈值T(min),就证明此像素值和样本中的像素值有多个相似,所以此时的像素点(x,y)就可以判断为背景点。
Vibe算法通过一帧的判断便可以建立起背景模型,这一帧即指某单帧视频序列。视频的第一帧可以作为背景模型,与此同时算法选取与其相邻的其他多个像素点,将该像素点的样本集进行填充,这样样本集中就包含了像素点的时空分布信息。
用公式表示,M0(x,y):初始背景模型中的像素点(x,y);NG:邻居点;v0(x,y):初始原图像中像素点(x,y)的像素值。于是有:
M0{v0(y|y∈NG(x))},t=0
(1)
1.2 前景检测
此时已经建立起了背景模型,便可以以建立好的背景模型进行前景检测[8]。遍历新一帧图像的所有像素点,用公式表示:
M(x,y)={v1(x,y),v2(x,y),…,vN(x,y)}
(2)
D(x,y)={d1(x,y),d2(x,y),…,dN(x,y)}
(3)
di=v(x,y)-vi(x,y)
(4)
R:判断像素点与历史样本值是否相近的阈值;T:判断前景点的阈值;统计当前像素点的值与历史样本值之差大于R的个数,若个数大于T,则判断该点为前景点。
1.3 背景模型更新策略
Vibe的更新策略[9]一般可以看成三点:保守更新策略+前景点计数法+随机子采样。对于前景像素点可以先进行统计,当在多次检测之后,某像素点有N次被认为是前景,就把它更新成背景点;对于像素点的样本集是不需要每帧都更新的,当一个像素点被分类为背景点时,它有1/φ的概率去更新背景模型[10]。
在选择要替换的样本集中的样本值时,随机选取一个样本值进行更新。这种情况下一个样本值在时刻t不被更新的概率是(N-1)/N。假设时间是连续的,那么在极小时间dt过去后,样本值仍然保留的概率是:
(5)
上面的公式表明,样本值在模型中是否被替换与时间t无关,即更新策略是合适的。
1.4 视频预处理
为了比较运算效率以及每帧图像的噪声干扰率,文中通过取不同的样本数量N值和像素半径R的阈值,来比较同一帧图像的处理效果,从而得到一个相对最佳的N和R值。分别取N=2,5,15,20,25进行实验,为了得到最直观的观察效果,选取了第64帧的图像进行对比,如图1所示。
图1 取不同N值的对比
根据式5计算可得,在N为2,5,15,20,25时,样本保留概率P分别为0.5,0.8,0.93,0.95,0.96,再结合实验图像对比可知,N取20时,P值较高,检测结果最为理想。当N=2,5,15,25时,检测结果中的噪声都较为明显,给后续的阴影去除工作带来麻烦,增加了运算负载。由上面的实验可知,样本量N取15时,检测结果较为理想,所以下面就默认N=15不变,分别取像素半径R=5,10,20,30,40进行实验,同样为了得到最直观的观察效果,选取了第51帧的图像进行对比,如图2所示。
图2 取N=15时不同R值的对比
根据实验结果,易见(b)、(c)两图的纹理噪声比较明显,图(f)前景有空洞,R=20和30时,检测效果都比较理想,但考虑到计算负载,R取20为最优。
通过上述两次实验,文中取N为20、R为20作为样本数量和像素半径的最优值。
2 连通域标记方法
运动目标的区域分割实质是通过扫描二值化图像中的所有像素点,将处于同一连通域的运动像素点归为同一个运动目标的过程。在文中已通过Vibe算法将视频的每一帧处理成二值图像,即黑(0)和白(1)两种状态。在图像中的最小单位是像素,每个像素周围都有8个邻接像素,常见的邻接关系有2种:4邻接与8邻接。4邻接一共4个点,即上下左右;8邻接的点一共有8个,包括了对角线位置的点。如果像素点A与B邻接,称A与B连通,如果A与B连通,B与C连通,则A与C连通。文中采用的是8邻接方法[11]。
现在比较普遍的扫描标记方法有2种,即基于行程的标记[12]和基于轮廓的标记。综合考虑到工作效率和准确性的问题,文中提出了一种基于行程的优化标记方法。
基于行程的优化标记法分两个阶段,如图3所示。第一阶段,以其中的黑点为当前扫描点,其余周围各点均需判断是否为邻接点。逐行扫描图像,把每一行中连续的白色像素记作一个团,并标记为1。以下的每一行中连续的白色像素只要有与上一行团中有邻接的点,就将其视为同一连通域,并标记为1,不邻接的记为2。以此类推,大体可标记出一个车辆的连通区域。第二阶段,因为Vibe算法对于光照变化和环境因素的影响,会使处理出来的前景车辆图像产生一定的形变,即那些标记为2的像素点,所以在这里可直接将其忽略,并作为背景的一部分。
图3 连通域扫描法示例
这里将传统的行程扫描方法和优化后的行程扫描方法的工作效率做了简单的对比,如表1所示。结果表明,改进后的速度平均是原来的2倍以上。
表1 两种方法的算法时间性能对比
3 车流量统计
在基于虚拟检测带和更新次数的统计算法[13]的基础上进行改进。
图4 算法整体流程
图4所示为文中提出的车流量统计算法整体流程。其中视频预处理具体做法为取视频序列第一帧来初始化样本模型,取对应位置的八邻域来初始化模型,共取N次;判断背景和前景表示取图像X位置的像素与样本模型中对应位置进行比较,差值小于R,且N个样本中有W个满足,即认为新来的一帧X位置为背景,需要进行更新,否则为前景。
下面对设置虚拟带检测法[14]稍加说明。为了降低环境因素的影响,提高容错率,文中使用8行像素组成虚拟检测带。一般前景车辆连通区域的宽度为60~100个像素,图5中0代表需要更新是背景,1代表不需要更新是前景目标即车辆。如果在这8行像素组成的虚拟带里有前景像素点即不需要更新的且是连通的像素满足一定的个数,即认为有车辆进入,车辆统计即可加1。直至虚拟检测带上不再有1为止。如果虚拟带全为0,则认为当前没有车辆经过。
图5 虚拟检测带
通过实验将前景车辆分割并统计数量,效果如图6所示。
图6 实时车流量分割统计
由实验结果可以看到,图(a)、(b)、(c)分别为3帧图像的实时车流量分割及统计,图像上方的白色矩形带便是虚拟检测带,每有一辆车过检测带便计数,图像左上方是实时车辆数,依次累加。
4 实验结果分析
实验是在Matlab 2015b的环境下实现的,对某一高速路段(通过网络获取)的车流量进行了实时统计,平均车流量检测值成功率达到98%以上。文中在传统车流量统计算法的基础上进行了改进和优化,弥补了Vibe算法在复杂环境因素下的不足,提高了连通域像素扫描过程的工作效率,最终使用虚拟带检测法实现车流量统计。该车流量统计流程需要固定摄像头位置,环境因素对其影响较小,算法简单并且工作效率高,因此该方法对于车流量具有良好的统计效果。
表2为本次实验统计出来的每个时间段的车辆数目。由表中数据可知,统计平均成功率在98%左右,据查各种文献[15]知其他传统方法的成功率在95%左右,因此文中方法更为有效。
表2 车流量统计对比
5 结束语
文中主要针对车流量统计过程中的背景前景的判断和连通域的扫描进行研究。运用Vibe算法和连通域分析的方法简单进行了车流量的统计。在传统Vibe算法的基础上,通过不断实验找到最合适的样本数值和像素半径,降低了环境因素的影响。基于8邻接连通域,提出了一种基于行程的优化标记方法,提高了工作效率。最后在传统虚拟带检测法的基础上,运用10行像素作为虚拟带,提高了检测的准确性。结果表明,该方法简单实用,工作效率高,而且具有较好的鲁棒性和实时性。