张磊 孟亮
关键词: 智能监控; 运动目标检测; 背景建模; ViBe算法; 最小误差阈值分割; 鬼影消除; 像素梯度
中图分类号: TN911.73?34 文献标识码: A 文章编号: 1004?373X(2019)04?0161?05
An improved ViBe algorithm based on adaptive minimum error threshold
ZHANG Lei, MENG Liang
(School of Computer Science and Technology, Taiyuan University of Technology, Taiyuan 030024, China)
Abstract: Since the ViBe algorithm cannot rapidly suppress the ghost phenomenon, an improved ViBe algorithm based on the adaptive minimum error threshold is proposed. The ghost pixels are discriminated and eliminated by computing the minimum error segmentation threshold of each image frame, so as to accelerate the ghost suppression speed. The threshold for determining sample distances is dynamically adjusted according to the variance values of samples, so as to improve the complex scene detection accuracy of the algorithm. The update rate of the background model is effectively optimized by calculating the gradient values of pixels. The experimental results show that the improved ViBe algorithm can effectively improve the speed of ghost elimination, and the accuracy of the algorithm is also improved.
Keywords: intelligent monitoring; moving object detection; background modeling; ViBe algorithm; minimum error threshold segmentation; ghost elimination; pixel gradient
隨着互联网的高速发展,越来越多的智能监控设备遍布了生活中的各个角落。运动目标检测成为智能监控领域的核心步骤,目前主流的运动目标检测算法大致分为三种:帧间差分法[1]、光流法[2]和背景减除法[3]。其中背景减除法是目前最为常用的目标检测方法,其基本原理是通过给图像中的每个像素点建立背景模型,利用当前点与其背景模型的对比来确定该点是背景点还是前景点。常用的背景减除法有混合高斯模型[4]、基于LBP的纹理特征法[5]、ViBe算法[6]。混合高斯模型能够较好地适应相对复杂的场景,对于外界干扰也有一定的鲁棒性,但是它需要计算多个高斯模型,计算量大且占用资源较多,在实际应用中难度较大。纹理特征法采用多个LBP纹理特征以及权重来构建背景模型,所依赖的参数较少,对阴影的干扰也有很好的鲁棒性,但是其计算纹理需要花费很多时间,实时性不太理想。
ViBe算法利用视频序列的第一帧即可完成背景建模,计算量小、速度快,能够很好地满足实时性的要求,但是该算法也存在一些问题,当场景中静止的物体突然开始运动时,该算法会将相应区域的背景点误检为前景点,从而形成鬼影现象,并且无法及时消除,严重干扰了运动目标检测的准确性。针对该算法的这一缺陷,国内外许多学者进行了研究,文献[7]提出了一种通过连续两帧前景背景像素时域变化来判别鬼影像素点并且消除的方法,该方法有效地提高了鬼影的抑制速度,但是其对于鬼影像素点进行二次判别时的误差并没有得到有效的控制。文献[8]提出了一种动态阈值的改进算法,采用Otsu算法计算出每帧图像的分割阈值,再对鬼影像素点进行判别,该方法有效地提高了分割的准确性,但对前景和背景方差较小的图像分割误差仍然很大。
在综合了前人研究工作各自优势和不足的基础上,本文提出了一种基于最小误差动态阈值的ViBe改进算法。实验表明,改进后的ViBe算法有效地提高了鬼影判别的准确率,加快了鬼影的消除速度。
ViBe是一种像素级的运动目标检测算法,该算法主要包括:模型的初始化、模型的检测过程、模型的更新策略三个方面。
1.1 模型的初始化
初始化是建立背景模型的过程,ViBe算法主要是利用单帧视频序列初始化背景模型,对于图像中的每一个像素点x,随机地选择其八邻域内n个点的像素值作为它的模型样本值,背景模型[B(x)]的定义为:
[B(x)={t1,t2,…,tn}] (1)
1.2 模型的检测过程
ViBe算法采用2?D欧氏距离[9]对像素点进行判别,记[SR(t(x))]为以[t(x)]为中心的2?D欧氏空间,则近似样本点的集合为:
[JR={SR(t(x))?B(x)}] (2)
当近似样本点的个数大于给定的阈值#MIN时,则判定该点为背景点,否则为前景点。
1.3 模型的更新策略
每一个背景像素点都有[1φ]的概率去更新自己的样本集以及邻域像素点的样本集。更新邻居的样本值利用像素值的空间传播特性,背景模型逐渐向外扩散,同时当前景点计数达到临界值时将其变为背景,并有[1φ]的概率去更新自己的模型样本值。
相较于其他运动检测算法,ViBe算法较好地保证了实时性,但是该算法通过视频序列的第一帧进行背景建模,如果在第一帧中恰好存在将要检测的前景物体,当其开始运动时,该算法会将其误检为背景,从而会在其初始的位置留下痕迹,造成鬼影现象,虽然原始算法在背景的更新策略中采用了计数器的方法来消除鬼影,但是需要在很多帧之后才能完成鬼影的消除,鬼影的抑制效率并不高。
针对ViBe算法存在的上述问题,本文提出一种基于最小误差阈值自适应的ViBe改进算法。在ViBe算法完成对当前帧的前景检测之后,采用最小误差阈值分割算法求出该帧的最佳分割阈值,并根据判别条件对前景像素点进行二次判别,实现鬼影的抑制。并且利用样本集方差动态调整了距离判定阈值,提高了在不同环境下前景点提取的准确率。此外,在背景更新策略中通过计算像素点的梯度, 优化了背景模型的更新速率,有效地提高了算法的性能。
2.1 最小误差阈值分割算法
在一张分辨率大小为[M×N],灰度级为[L]的灰度图像中,灰度值大小为[i]的像素点的个数用[ni]表示,全部像素点的个数用[n]表示,[n=n0+n1+…+nL-1],用[pi]表示灰度值为[i]的像素点出现的概率,假设理想的灰度分布模型满足混合正态分布:
[p(i)=j=01Pj?pij] (3)
式中,[p0]和[p1]分别为背景[C0]和前景[C1]各自分布的先验概率,且[C0]和[C1]的各自分布[pij]均服从均值为[μj],方差为[σ2j]的正态分布:
[pij=12πσjexp-i-μj22σ2j] (4)
假设[t]为[C0]和[C1]的分割阈值,则[C0]和[C1]各自分布的均值分别为:
[μ0t=μtp0t, μ1t=μT-μtp1t]
式中:[μt=i=0ti?pi];[μT=i=0L-1i?pi]。
[C0]和[C1]各自分布的方差分别为:
[σ20t=i=0tpii2-μ0t2]
[σ21t=i=t+1L-1pii2-μ1t2]
基于最小分类误差思想可以得到以下最小誤差目标函数[Jt]:
[Jt=p0tlnσ20p0t2+p1tlnσ21p0t2] (5)
最佳阈值[t?]在[Jt]取最小值时获得,即:
[t?=argmin0≤t≤L-1Jt]
随机选取M个通过ViBe算法检测获取的背景像素点,求出这M个背景像素点的平均灰度值,确立以下二次判别的规则:
1) [当Vm≤t*时,]
[f(x)=v(x)>t*, 判为前景点v(x)≤t*, 判为背景点]
即暗背景,亮前景。
[当Vm>t*时,]
[f(x)=v(x)>t*, 判为前景点v(x)≤t*, 判为背景点]
即亮背景,暗前景。
式中,[v(x)]表示通过ViBe算法检测出的前景像素点,采用该判别规则对[v(x)]进行二次判别,能够有效地过滤掉部分ViBe算法误检的前景像素点,将其重新判为背景。
2.2 动态调整距离判定阈值
在前景点的检测过程中,距离判定阈值[R]与样本集[B(x)]的样本方差[σm]成正比,[σm]越大,说明场景越复杂,距离判定阈值[R]也应该越大。具体表示为:
[R=0.5σm, 20≤R≤40] (6)
如图1所示,在动态调整距离判定阈值之后,本文算法检测的正确率更快地达到了平均值,并在趋于稳定之后较原ViBe算法有略微的提升。
2.3 优化模型的更新速率
在模型的更新策略中,本文引入了两种不同的更新参数[φ1=8],[φ2=16],通过计算当前帧图像的平均梯度[10][G]以及前景目标经过区域的像素点的梯度值[G]来选择与之匹配的更新速率。若[G>G],则说明前景目标变化速度较快,应选择较快的模型更新速率,以便前景目标经过的区域可以快速更新为背景。反之,若[G<G],则说明前景变化速度较慢,此时应选择较慢的模型更新速率,以便前景像素点有充足的时间融入到样本集当中。优化更新速率后的效果对比图如图2所示。
图2中的实验素材是一段高速路的监控视频。由于车速较快,ViBe算法检测的准确率不是很高,但优化更新速率后的本文算法在应对这种场景时准确率明显提升。算法流程图如图3所示。
本文实验环境为VS 2015 + OpenCV 3.2.0,为了验证本文算法对鬼影的抑制效果,本文在两种场景下对该算法进行了测试。场景一采用的是Change Detection数据集中[11]的PETS 2006视频序列。如图4所示,图4a)和图4d)分别为序列的第548帧和第602帧原图;在548帧处,ViBe算法和本文算法都检测出了严重的鬼影现象,见图4b)和图4c);图4e)为ViBe算法在602帧处的检测图,可以看出ViBe算法已经对鬼影进行了抑制,但仍有部分残余;而从图4f)可以看出,本文算法在602帧处已经基本完成了鬼影的消除。
场景二是两种算法对静止物体鬼影抑制的效果对比图,目标车辆在第187帧时开始静止,直到第215帧ViBe算法的检测效果图中仍残留该目标的部分鬼影见图5b),而本文算法在第215帧处已经基本完成了鬼影的抑制见图5c)。此外,该目标车辆在239帧时开始缓慢启动,直到第247帧时ViBe算法仍无法完整地检测出目标车辆见图5e),而本文算法已经较好地完成了目标的检测见图5f)。
通过上述两组实验可以看出,与ViBe算法相比,本文算法有效地提高了鬼影抑制的速度,并且能够更快检测出缓慢启动的前景目标。此外,为了更加精确地评估本文改进算法的性能,本文采用Change Detection数据集中的4个测试序列对算法的平均识别率以及平均准确率进行评测,并与KDE,SOBS,GMM,KNN以及原始ViBe算法進行了对比,对比结果见图6。
图中Baseline是基本测试序列;Dynamic Background是动态背景下测试序列;Camera Jitter是相机抖动情况下的测试序列;Intermittent Object Motion是物体间歇性运动的测试序列。可以看出本文改进算法相较于其他算法有较高的准确率,并且在检测动态背景的视频序列时,识别率较传统ViBe算法有明显的提升。
最后,本文通过对Change Detection数据集中的所有序列进行测试,统计并求出六种算法的假正率(FPR)、假负率(FNR)、分类错误率(PWC)、准确率和识别率的加权调和平均值(F?Measure),详细结果如表1所示。可以看出本文算法相较于原始的ViBe算法假正率、假负率、分类错误率均有小幅下降,并且衡量一个算法分类性能好坏的F?Measure值也有所提升。
针对ViBe算法无法快速抑制鬼影现象的问题,本文提出一种基于最小误差阈值分割的改进算法,并且动态调整了像素点检测时的距离判定阈值,此外还通过计算像素点的梯度值优化了模型的更新速率。实验结果表明,本文改进算法有效地提升了鬼影的抑制速度,并且保持了较高的识别率和准确率,能够更好地适用于对运动目标检测准确度要求比较高的场景。未来的研究工作将着重于进一步提升算法的运行速度,优化算法的时效性,以提升算法的实用价值。
参考文献
[1] RAMYA P, RAJESWARI R. A modified frame difference method using correlation coefficient for background subtraction [J]. Procedia computer science, 2016, 93: 478?485.
[2] FAN X, TJAHJADI T. A spatial?temporal framework based on histogram of gradients and optical flow for facial expression recognition in video sequences [J]. Pattern recognition, 2015, 48(11): 3407?3416.
[3] AVGERINAKIS K. Video processing and background subtraction for change detection and activity recognition [J]. Water research, 2015, 39(12): 2459?2474.
[4] WANG K, LIANG Y, XING X, et al. Target detection algorithm based on Gaussian mixture background subtraction model [C]// Proceedings of Chinese Intelligent Automation Conference. Berlin: Springer, 2015: 439?447.
[5] 赵玉丹.基于LBP的图像纹理特征的提取及应用[D].西安:西安邮电大学,2015.
ZHAO Yudan. The extraction and application of image texture feature based on LBP [D]. Xian: Xian University of Posts and Telecommnications, 2015.
[6] BARNICH O, DROOGENBROECK M V. ViBe: a powerful random technique to estimate the background in video sequences [C]// Proceedings of IEEE International Conference on Acoustics, Speech and Signal Processing. Taipei: IEEE, 2009: 945?948.
[7] 李洪杰,程欣宇,任海林.一种基于帧差和ViBe算法的前景检测方法[J].电子技术与软件工程,2014(21):119?120.
LI Hongjie, CHENG Xinyu, REN Hailin. A foreground detection method based on frame difference and ViBe [J]. Electronic technology & software engineering, 2014(21): 119?120.
[8] 吴建胜,徐博.动态阈值的ViBe运动目标检测[J].计算机工程与应用,2017,53(11):182?186.
WU Jiansheng, XU Bo. ViBe moving object detection method based on dynamic threshold [J]. Computer engineering and applications, 2017, 53(11): 182?186.
[9] GONZALEZ?CASTRO V, ALEGRE E, GARCIA?OLALLA O, et al. Adaptive pattern spectrum image description using Euclidean and Geodesic distance without training for texture classification [J]. IET computer vision, 2012, 6(6): 581?589.
[10] PLOTZ T, ROTH S. Registering images to untextured geometry using average shading gradients [C]// Proceedings of IEEE International Conference on Computer Vision. Washington: IEEE Computer Society, 2015: 2030?2038.
[11] GOYETTE N, JODOIN P M, PORIKLI F, et al. Changedetection.net: a new change detection benchmark dataset [C]// Proceedings of IEEE Computer Society Conference on Computer Vision and Pattern Recognition Workshops. Providence: IEEE, 2012: 1?8.
[12] LIU M, ZHANG H, WANG C, et al. Polarimetric synthetic aperture radar change detection for specific land cover types [J]. International journal of digital earth, 2015, 8(4): 334?344.