基于三帧差分法和改进ViBe算法的前景检测方法*

2021-12-01 14:14潘峥嵘
计算机与数字工程 2021年11期
关键词:像素点阈值像素

杨 波 潘峥嵘

(兰州理工大学电气工程与信息工程学院 兰州 730050)

1 引言

运动目标检测是计算机视觉中研究的热点问题之一,也是智能视频监控系统的核心[1]。常用的运动目标检测算法有光流法[2]、帧间差分法[3]、背景差分法[4]。帧间差分法是通过在视频图像序列的连续两帧或三帧中进行像素的“相减”运算,然后与预先设置的阈值比较,来提取出图像中的运动区域[5]。该算法在静态背景下和动态背景下都具较好的检测能力,实现简单,运算量小并且处理速度很快,但是在处理实际问题时会出现一些无法避免的问题,如只能检测到运动目标的外部轮廓,并且会有大量的空洞。背景差分法流程主要分为预处理、背景建模、前景检测、后处理四个阶段[6]。常用的背景建模方法有高斯背景建模方法[7]、Codebook背景建模方法[8]。混合高斯模型(Gaussian Mixture Model,GMM)能够对动态背景进行建模,但是计算复杂度较高,实时性得不到保障。Kim等[9]提出的Codebook背景模型算法是通过在RGB颜色空间中使用码本来描述像素点,用亮度和颜色扭曲度来进行判断构建背景,此算法容易实现,但是对于复杂背景进行背景建模效果不好,而且计算冗余大。

针对传统算法在背景建模过程中出现的问题,Barnich等[10]于2011年提出可视化背景提取(visual background extractor,ViBe)算法。该算法运算速度快能够快速地建立背景模型并且实时性好,但是当首帧图像中存在运动目标时会产生鬼影,因此会影响后续前景检测的准确性。虽然鬼影会随着背景的更新逐渐消失,但是通常需要100帧~200帧才能够完全将鬼影消除并且随着背景模型越复杂,鬼影的消除就越缓慢,这严重影响了对前景目标的判断。针对上述问题,本文采用三帧差分算法和改进的ViBe算法相结合,改进的三帧差分算法能够快速地检测出运动目标,改进的ViBe通过自适应阈值来调整固定阈值和背景更新率,提高前景目标检测精度,这两种算法相互补充可以快速地消除鬼影并且对空洞和噪声也有抑制作用,从而提高前景目标检测的准确性。

2 ViBe算法原理

ViBe算法主要包含三个模块:背景模型初始化、目标检测、背景更新。

2.1 背景模型初始化

ViBe算法是利用图像序列的首帧图像为每个像点素建立一个背景模型,对于其中任意一个像素点,可以随机地选择空间邻域范围内的像素值构成的模型样本集,其中空间邻域的大小要能包括足够

数量的不同样本。像素点x的背景样本集M(x)可以用式(1)描述:

上式中vi(i=1,2,…,N)为每个像素x的8邻域内随机采样得到像素值,N为采样集中的采样数。

2.2 目标检测

当初始背景模型建立之后,从下一帧新的图像开始,像素点x处新的像素值vt(x)与样本集合中该点所在位置对应的背景模型M(x)中的元素进行比较,来对新的像素进行分类。像素的分类原理如图1所示。

在图1中,SR[(vt(x))]代表以当前像素值vt(x)为圆心,以R为像素范围半径的圆形区域。在该范围内利用像素欧式距离的大小将像素值v(x)与其采样集中邻近的像素值进行比较。如式(2)所示,如果SR[(v(x))]与背景样本集M(x)的交集的匹配个数T小于给定的最小阈值Tmin,则该像素就被认定为前景像素点(FG),否则为背景像素点(BG)。在ViBe算法中R一般取20,最小阈值Tmin=2,采样数N=20。

图1 像素的分类原理示意图

2.3 背景模型更新

在背景模型更新过程中,一般采用无记忆性的随机更新策略,即一个像素保存在背景模型中的概率在某个时间段呈指数型单调递减。每一个背景像素点有1/φ的概率去随机的更新背景样本集中的样本值,同时也有1/φ的概率来更新某个邻域像素的模型样本值。φ是时间采样因子,通常取值为16。

3 算法改进及其流程

3.1 改进的三帧差分法算法

由于传统的帧间差分算方法在前景目标提取时,检测到的物体不完整,物体的轮廓是“双边”的,当物体的移动速度越快,产生的这种双边的轮廓现象就越明显,并且会产生很大的空洞。因此,本文在原有的三帧差分法[11]的基础上进行改进。

改进后的三帧差分算法步骤如下。

步骤1将输入的视频序列预处理,其中包括图像的灰度化,以及采用中值滤波来消除噪声对图像信息的干扰。分别对这三帧连续的视频序列用Sobel[12]算子边缘检测算子,Sobel算子具有处理速度快,所得到的图像的边缘光滑,并且边缘处是连续的。

步骤2对连续相邻的三帧图像,分别进行差分,将得到的差分图像分别进行自适应阈值分割,从而剔除一些干扰像素。

步骤3将步骤2得到两个二值图像进行“与”运算,然后进行形态学处理,最后进行中值滤波处理消除闪烁点,提取图像轮廓。

步骤4通过步骤3得到的比较清晰的运动目标的轮廓后,对其进行10次轮廓填充,进行中值滤波。

步骤5将步骤4得到的图像进行腐蚀操作,就得前景目标。

如图2所示,三帧差分法与改进的三帧差分算法的结果对比。

图2 三帧差分算法与改进的三帧差分算法的实验结果

3.2 改进的ViBe算法

ViBe算法采用固定的阈值来进行前景运动目标检测,这使得对鬼影消除缓慢,且在不同的环境下对运动目标的误检率较高,而且当背景模型比较复杂时出现误检的概率会更高。针对ViBe算法采用固定的阈值,采用自适应阈值的方法,来为每个像素值设定阈值。本文利用三帧差分法的优点以及改进的ViBe算法来实现运动目标的准确检测,并且提高运动目标的完整性,为后续运动目标跟踪做好准备。图3为运动目标前景检测流程。

图3 运动目标前景检测流程

3.2.1 采用自适应阈值与颜色畸变的像素分类

在传统的ViBe算法中进行前景目标检测时,通过背景模型中的每个像素创建的样本值和当前图像序列中的每个像素值是否匹配来进行判断,采用的是固定的阈值T。但是由于实际背景环境的复杂,固定的阈值往往不能很好地表达模型的复杂度[13]。本文针对此问题在原始ViBe算法的基础上引入背景模型样本集的标准差σ,样本均值μ,其表达式如式(3)、式(4)所示,并引入振幅因子β,像素x处背景模型样本集中所有像素值的和记为自适应阈值Tada如式(5)所示,并将自适应阈值Tada的值设定在[20,40],其表达式如式(6)所示。

为了使当前像素值与背景像素值更好匹配,这里引入颜色扭曲度[14]δ(颜色失真),对于当前帧中任意位置处的像素xt=(Rt,Gt,Bt),以及对应背景模型样本中的像素xi=(Rˉi,Gˉi,Bˉi),有:

3.2.2 对背景的更新

传统的ViBe算法采用固定的更新率来更新背景模型,但是当背景模型比较复杂时,背景像素如果不能够及时更新,就会出现鬼影,并且在很长的时间内无法得到消除。通过当前帧的像素xt与对应背景模型中的像素xi,如果满足条件Tada&&δ<δ0,其中δ0为先前设定的值,并且匹配数Tmatch>Tmin,则此时可以将该处判断为背景像素点,并且更新该像素模型的样本以及该像素点邻域像素点的模型样本值,此处有1/φ的概率随机的来更新模型样本值以及更新背景模型中对应邻居点模型中的样本值。邻域像素点的更新采用空间一致性原则,相邻背景像素有相似的时间分布特性,一个像素的新背景采样也可以被用来更新相邻像素。

4 实验结果分析与评价

为了验证本文算法的正确性和有效性,从四个不同场景进行对比实验,其中的视频序列信息如表1所示,视频分别来自OpenCV3.1中的vtest.avi,以及Matlab2016b的数据集atrium.avi和visiontraffic.avi,以及交通十字路口处Camera Road 01.avi。实验环境和参数分别如下:Windos7系统,AMD Ath⁃lon(th)X4740 Quad Core Processor CPU,3.2GHz主频,4G内存,Visual Studio 2015集成开法环境,以及OpenCV3.1计算机视觉算法库。其中ViBe算法的相关参数如下:背景模型样本集中邻近像素点个数N=20,匹配点的个数阈值R一般取20,最小阈值Tmin=2,采样更新率为16。采用三帧差分法、传统的ViBe算法以及改进的ViBe算法做对比实验。

表1 四个不同场景下的视频序列

4.1 实验结果分析

图4 为vtest.avi中部分帧的检测结果,其中主要显示视频序列第11帧、第18帧、第22帧、第110帧、第534帧。图5为atrium.avi中第519帧检测结果,vision-traffic.avi中第143帧检测结果,以及Camera Road 01.avi中第883帧检测结果。

本文算法采用三帧差分算法和改进的ViBe算法,从图4和图5中可以看到,本文算法和传统ViBe算法和其他算法相比有很好的性能,从鬼影出现到开始消除只需18帧就可以,而传统的ViBe算法至少需要110帧才能够将第一帧图像中产生的鬼影消除。背景中的一些不必要的干扰信息也得到了有效的消除,针对其中的闪烁像素,采用形态学处理和自适应阈值分割,在第534帧可以清楚的看到,前景目标在地面上的拖影已被完全消除。在图5中分别从室内到室外以及背景模型由简单到复杂来检测算法。

图4 vtest.avi中部分帧的检测结果

图5 视频序列中部分帧的检测结果

从visiontraffic.avi的第143帧以及Camera Road 01.avi的第883帧中看出,三帧差分算法只能够检测出检运动物体的轮廓,对光线不敏感,光线变化对其影响比较小,但是只能够检测到物体的外部轮廓信息,当运动目标的运动速度比较快时,轮廓的部分信息也会部分丢失。传统ViBe算法在光线稳定的条件下可以检测到比较完整的前景目标,但是内部会有空洞,如第143帧所示图像中的光线先比较其它图像,此时的视频序列中的光线最强,但是仍然可以检测到运动目标。改进的算法能够适应比较复杂的环境,并且受到噪声的影响也相对较小,而且对背景中的噪声有很好的抑制作用,对光照变化也有一定的鲁棒性。

4.2 实验结果评价

为了定量的检验本文算法的有效性,利用Pr(精确率)和Re(召回率)以及F1-measure(F1值)三个指标来对算法进行精确度评价[15~16]。其计算公式为

其中,TP表示能够检测出正确的前景目标个数,FP代表误检为非运动的目标个数,即运动目标被识别为背景的数目,FN是没有检测到运动目标数。表2列出了不同算法定量分析的比较结果。从表2中可以看到,本文改进的算法在准确率、召回率,以及F1值相比较而言大于其他算法,算法的综合性能高于其他算法。

表2 不同算法定量分析的比较结果

5 结语

本文将三帧差分算法与改进的ViBe算法相结合,对视频序列中的运动目标进行前景和背景进行正确的分类。改进背景模型的初始化来对鬼影进行消除,并且加快了鬼影的消除速度。采用自适应阈值和颜色畸变度量使算法不但能够适应比较复杂的环境,而且提高检测效果,针对背景中存在的噪声和空洞点采用形态学处理来对其进行消除。实验结果表明本文算法可以在很短的时间内消除鬼影,并且在消除噪声和空洞等方面有很好的效果。在可接受的时间成本内得到了良好的综合性能,在视频图像处理领域有比较广阔的应用前景。

猜你喜欢
像素点阈值像素
像素前线之“幻影”2000
图像二值化处理硬件加速引擎的设计
土石坝坝体失稳破坏降水阈值的确定方法
基于小波变换阈值去噪算法的改进
基于局部相似性的特征匹配筛选算法
采用红细胞沉降率和C-反应蛋白作为假体周围感染的阈值
“像素”仙人掌
一种X射线图像白点噪声去除算法
基于canvas的前端数据加密
高像素不是全部