APP下载

基于改进视觉背景提取算法的运动目标检测

2022-12-26陈从平江高勇郁春明闫焕章

计算机测量与控制 2022年12期
关键词:鬼影像素点扰动

陈从平,江高勇,张 力,凌 阳,郁春明,闫焕章,张 屹

(1.常州大学 机械与轨道交通学院,江苏 常州 213164; 2.常州大学 材料科学与工程学院,江苏 常州 213164)

关键字:运动目标检测;ViBe算法;帧差法;鬼影;自适应阈值

0 引言

运动目标检测是实现计算机视觉对动态目标进行锁定跟踪与分类识别的关键,已广泛应用于如行人跟踪,车辆追踪,自动驾驶等目标处于运动状态的视觉检测场合,并随着计算机和信息技术的发展正不断扩展应用领域。

现有的目标检测方法主要有:光流法[1-3]、帧差法[4-6]、背景差分法[7-9]等,其中光流法利用背景帧的所有像素点建立速度矢量场,当图像中存在运动目标时,由于运动目标的速度矢量和背景点速度矢量不同,两者会产生相对运动,造成矢量场的动态变化,此时通过定位矢量场中的突变位置来完成目标检测,但该方法计算量大,难以实现实时和有效检测。帧差法利用相邻帧图像存在运动目标时会有明显变化来实现目标检测,通过将相邻帧图像对应像素差分来获得前景目标,该类方法检测效果不完整且内部有孔洞。背景差分法通过建立背景模型,将当前帧图像与背景模型进行比对,通过设定相关阈值,进而可以有效地提取出运动目标。

常用的背景差分法主要有GMM[10]、Codebook模型[11]和ViBe[12]算法(visual background extraction algorithm),GMM利用多个带有权重的高斯密度函数在时域上构建背景模型,通过判定某像素点是否符合该时域的正态分布来判别前景点和背景点,但是其计算量会随时间增大,影响检测速度。Codebook模型通过逐个为像素建立码本集和进行目标检测,但背景扰动下检测准确度较低。ViBe算法利用首帧图像快速建立背景模型,将保守更新策略与前景点计数结合进行背景更新,与GMM和Codebook相比逻辑简单,计算量小,运算速度快,对背景扰动有一定适应性,但仍存在一些缺点:1)当初始帧存在运动目标时,检测过程中会产生鬼影;2)背景初始化时从中心像素点的8邻域内选取20个像素点会导致重复选取;3)当存在背景扰动时,固定分割阈值会导致检测准确率低。针对这些问题,CHEN等人[13]提出检测出鬼影后重复初始化鬼影区域,以加速鬼影消失。JIN[14]和ZHANG[15]利用ViBe算法检测出前景区域,再通过改进边缘检测算法提取运动目标边缘信息,最后将前景区域与运动目标边缘信息结合以获得更准确的前景目标。涂伟强等人[16]采用前n帧图像的平均像素值初始化背景模型来抑制鬼影,并根据最大类间方差计算分割阈值以完成前景检测。刘志豪等人[17]利用多帧初始化背景模型来消除鬼影,通过衡量背景扰动程度构建自适应分类阈值来完成前景检测。刘家军等人[18]通过选择颜色和空间位置相近的点建立背景模型,并利用迭代法确定自适应分割阈值,最后通过帧差法和二元指数分布结合来确定背景模型的更新概率。Huang等人[19]利用奇数帧图像中的像素点建立背景模型,在背景更新过程中加入Time of map机制来抑制鬼影。方岚等人[20]通过像素直方图相似度匹配判别鬼影,将检测出的鬼影区域替换为背景来实现鬼影抑制。崔鹏翔等人[21]提出利用欧式距离和Tanimoto系数结合,通过计算前景目标区域和邻域背景区域像素灰度直方图的相似度来检测鬼影,通过将鬼影区域设置为背景区域来实现消除鬼影。

本文提出一种改进ViBe算法,利用改进三帧差分法定位初始帧中的运动目标,并用最大外接矩形框选目标区域,再通过局部初始化去除初始帧中的运动目标,在抑制鬼影的同时避免了重复初始化,减少了消除鬼影的时间。利用灰度相似函数和时空相似性结合,从初始五帧中按照灰度相似性等比例选取20个像素点建立背景模型,避免了样本点重复选取的同时增加了背景模型的鲁棒性。利用平均差法衡量样本点集合的离散程度,构建自适应分割阈值代替原有的固定分割阈值,增加了算法对背景扰动的适应性。通过使用公共数据集CDnet2014中的视频序列进行实验对比,本文算法的总体表现优于传统ViBe算法以及其他算法。

1 ViBe算法原理

ViBe算法是一种像素级视频背景建模方法,该算法采用随机策略从中心像素点的8邻域内选取20个像素点建立背景模型,将输入像素点与背景模型中的样本点进行距离判定和阈值比较来完成前景检测,ViBe运动目标检测方法主要分为背景模型初始化、前景检测、背景更新三个阶段。

1.1 背景模型初始化

利用首帧图像初始化背景模型,初始化背景模型的过程就是选取像素点放入样本点集合的过程。样本点选取过程如图1所示,设图1(a)为视频序列中首帧图像,图1(b)表示从首帧图像中某中心像素点x的8邻域内随机选取N个样本点,图1(c)表示利用随机选取的N个样本点建立像素点x的样本点集合P(x,y),当首帧所有像素点的样本点集合选取完成后就完成了背景模型的初始化。

图1 ViBe背景模型

P(x,y)={p1(x,y),p2(x,y)……pN(x,y)}

(1)

其中:Pi(x,y)(i=1,…N)表示样本点,N为P(x,y)中样本点数量。

1.2 前景检测

前景检测是将新输入像素点与背景模型中的样本点进行距离判定和阈值比较,从而判断该像素点是否为前景点。如图2所示,某一输入像素点v的像素值为v(x,y),计算该像素点与其背景模型中样本点的欧式距离,统计新输入像素点v与背景模型中样本点欧式距离小于匹配半径R的个数,即以v(x,y)为圆心,R为匹配半径的欧式距离圆范围内样本点个数,若个数大于nmin,则认为新输入像素点v与首帧图像中对应位置像素点相似性较高,将其判定为背景点,若个数小于nmin,则认为新输入像素点v与首帧图像中对应位置像素点相似性较低,将其判定为前景点,公式表达为:

图2 前景检测示意图

(2)

其中:BG为背景点,FG为前景点,SR[v(x,y)]是以v(x,y)为圆心,R为半径的圆,nmin为样本点匹配阈值。

1.3 背景模型更新

背景模型更新策略分为保守更新策略和盲目更新策略,保守更新策略是只有背景点才能更新背景模型。该策略能够准确检测运动目标,但是当初始帧存在运动目标时,会将运动目标当作背景点放入背景模型中,在后续目标检测时会产生鬼影。盲目更新策略为前景点和背景点都会更新背景模型,对死锁不敏感。但是当运动目标速度缓慢时,检测准确度会降低。

ViBe算法将保守更新策略与前景点计数相结合,前景点计数就是对像素点进行统计,当某一像素点连续K次被判定为前景时,则会强制判定该像素点为背景点,并用来更新背景模型。所以在ViBe算法检测过程中,若某像素点被判定为背景点或连续k次被判定为前景点,将有1/φ的概率更新与之对应的背景模型中的样本值及其邻域像素点的样本值,φ为更新因子。

2 改进的ViBe算法

ViBe算法利用首帧图像初始化背景模型,虽然减少了建立背景模型的时间,但是当首帧存在运动目标时会产生鬼影,而且利用首帧图像各像素点8邻域内随机选取20个样本点的策略,会导致样本点重复选取和样本点信息单一,导致像素点误分类和背景模型鲁棒性不强,另外当背景存在扰动情况时,固定分割阈值适应性差,会将部分背景点误检为前景点,导致检测准确度低,针对以上问题,本文提出一种改进方法,其流程如图3所示。

图3 改进算法流程图

2.1 鬼影定位与抑制

ViBe算法用首帧图像初始化背景模型,如果首帧存在运动目标,建立背景模型时会将运动目标归为背景点,放入到背景模型中,在前景检测时,当首帧图像中的运动目标移动后,先前运动目标所在区域会显示真实背景,而真实背景会被检测为前景目标,此时就产生了鬼影。消除鬼影需要判断初始帧中是否有运动目标并消除运动目标,为此本文提出改进三帧差分对初始帧进行目标检测,若得到的二值图像连通域大于Smin,则认为会在后续目标检测中会产生鬼影,并利用最小外接矩形定位鬼影区域,最后通过局部初始化进行鬼影抑制。

改进三帧差分示意图如4所示,从视频第一帧开始,对连续三帧k-1、k、k+1图像进行差分运算,将差分结果进行OTSU阈值分割,从而得到当前帧的前景目标,对得到的前景目标进行中值滤波操作,以去除前景目标中的细小干扰点,接着进行膨胀运算,使前景目标更完整,最终获得2个前景目标dif1和dif2,再将dif1和dif2分别与k帧的边缘提取结果进行与运算,得到的两个结果再进行或运算,以获得边缘信息较为完整的前景目标dif3,去除dif3中面积小于S1的前景斑点区域,填充面积小于S2的前景孔洞区域得到dif4,即初始帧中的运动目标。

图4 改进三帧差分流程图

在得到初始帧中的目标dif4后需要进行鬼影判断、鬼影定位和鬼影抑制,鬼影判断通过设置面积阈值Smin实现,若初始帧中的运动目标区域dif4的连通分量面积大于Smin,则认为dif4区域会在前景检测阶段产生鬼影;鬼影定位通过最小外接矩形实现,用最小外接矩形框选住dif4区域,以包含整个前景目标区域,至此可以定位鬼影区域,设为Pg;鬼影抑制通过局部初始化最小外接矩形内部区域实现,设Pd为后续帧差结果中与Pg对应区域,当Pd在帧差结果中被判定为背景时,说明Pd区域是真实背景,此时停止帧差,并利用真实背景Pd区域初始化前M帧中与Pg对应区域,这样就将前M帧中的运动目标区域替换成了真实背景,从而消除了初始帧中运动目标,达到鬼影抑制的效果,并为后续背景模型初始化做准备。

2.2 背景模型初始化

ViBe算法通过从中心像素点的8邻域内随机选取20个像素点构建背景模型,此方法会引起像素点重复选取,像素点选取过于集中也容易导致像素点误分类,而且背景模型缺少时域信息,当背景中存在扰动情况时建立的背景模型鲁棒性不强。针对这些问题,本文从样本点选取方式和选取范围上做出改进,样本点选取方式方面,由原来的随机选取策略改为利用灰度相似函数选取样本点,这样在增加样本点和中心像素点相似度的同时避免样本点的单一和重复,样本点选取范围方面,从空域和时域信息中选取样本点,空域上将采样范围由原来的8邻域扩大为24邻域,时域上由原来的首帧选取样本点改为从完成鬼影抑制后的初始M帧中选取,使背景模型具备时域信息,增加了背景模型的鲁棒性,具体选取步骤如下:

定义灰度相似函数,将24邻域内像素点的灰度值与中心像素点的灰度值做差,得到差值后取绝对值,即:

G(a,b)=|I(a)-I(b)|

(3)

其中:a为中心像素点,b为邻域中的某一像素点,I(a)、I(b)为两点灰度值。

建立样本点子集,对于任一像素点x,第i帧处的像素值为pi(x,y),利用G(a,b)从像素点x当前帧的24邻域内选取G(a,b)值最小的n个像素点构成当前帧的样本点子集,表示为:

(4)

i为图像帧序号,n为当前帧样本点选取数量。

初始M帧选取完成后,可以得到M×n个样本点建立背景模型,当初始M帧所有像素点对应的背景模型构建好后,就完成了背景模型初始化。

确定初始M帧的值和每帧选取样本点数量n的值也是初始化背景模型的关键步骤,初始帧M取值过大会影响初始化背景模型速度,降低算法的实时性,若M取值过小,则降低了背景模型中时域信息的丰富性和背景模型的鲁棒性。为确定选取初始帧数与选取每帧样本点数的最佳方案,选用存在背景扰动的CDnet2014公共数据集中overpass视频序列做实验分析,比较以下5种方案的F-measure值,该值越大,代表算法综合性更好,5种方案分别为:3帧(每帧选取7个样本点)、4帧(每帧选取 5个样本点)、5帧(每帧选取4个样本点)、6帧(每帧选取4个样本点)、7帧(每帧选取3个样本点)。5种方案的F-measure值如图5所示,5帧(每帧选取4个样本点)方案的F-measure值最大,最终确定利用初始5帧初始化背景模型,每帧选取n=4个样本点,共N=20个样本点建立背景模型。

图5 方案选取F-measure对比

2.3 前景检测

ViBe算法使用全局固定分割阈值R对像素点进行前景点和背景点的判定,可较好地适用于静态背景,然而当背景存在扰动情况时,固定分割阈值不能够适应背景中扰动变化,导致检测准确度降低.为此本文提出一种基于平均差的自适应分割阈值机制,基本思想是通过平均差法衡量样本点集合的离散度,构建自适应分割阈值,即当背景区域存在较大扰动时适当提高分割阈值,背景区域趋于稳定时维持原有的分割阈值,平均差定义为:

(5)

式中,vi(x,y)表示样本点集合中的样本点像素值,μ(x,y)表示样本点集合的像素平均值,μ(x,y)表达式为:

(6)

即计算样本点集合中各样本点像素值与样本点像素平均值差分和的平均值,当MD(x,y)值较大时,说明样本点集合离散度高,背景存在扰动情况,应适当增大分割阈值,当MD(x,y)值较小时,说明样本点集合离散度低,背景区域稳定,分割阈值维持原来大小即可,自适应分割阈值表达式为R(x,y)为:

(7)

式中,α为自适应参数,δ为尺度因子,固定分割阈值与自适应分割阈值在扰动背景下对比如图6所示,如图6(a)所示,当采用固定分割阈值R时,待测像素点v(x,y)欧式距离圆内,只有一个样本点,小于样本匹配阈值nmin=2,则像素点v(x,y)判定为前景点,如图6(b)所示,采用自适应分割阈值R(x,y)增大匹配半径后,待测像素点v(x,y)欧式距离圆内,有两个样本点,大于等于样本匹配阈值nmin=2,则像素点v(x,y)判定为背景点,因此在背景存在扰动情况时采用自适应分割阈值可以提高检测准确度。

图6 背景扰动情况下固定分割阈值和自适应分割阈值对比图

3 实验和结果分析

本文所用软硬件条件为:操作系统选用Windows10操作系统,主机信息为:(Intel(R)Core(TM)i9-9000K,32G内存),在VS2017编译环境下编译程序,并运用OpenCV。实验中的部分阈值取自经验阈值,部分阈值取自原ViBe算法,分割阈值R取20,样本点数目N取20,样本匹配阈值nmin取2,自适应更新阈值α取0.05,尺度因子取6。

3.1 鬼影消除实验分析

为了验证本文改进算法对鬼影抑制的有效性,选取CDnet2014公共数据集中highway视频序列进行鬼影抑制试验,将原始ViBe算法检测效果和本文抑制鬼影后的检测效果做对比,实验对比如图7所示。

图7 鬼影消除实验对比图

图7(a)为highway视频序列第60帧图像,图7(b)为传统ViBe算法检测效果,图7(c)为本文改进ViBe算法检测效果,如图7(b)所示,由于初始帧存在运动目标,可以看出检测结果中有明显的鬼影产生,如图7(c)所示,在采用改进三帧差分定位鬼影并局部初始化后,消除了初始帧的运动目标,从而抑制鬼影产生,鬼影消除有明显的效果。

3.2 背景模型鲁棒性实验分析

为了验证本文改进算法对增强背景模型鲁棒性的有效性,选取CDnet2014公共数据集中overpass视频序列进行背景模型鲁棒性试验,将原始ViBe算法检测效果和采用本文方法建立的背景模型后的检测效果做对比,实验对比如图8所示。

图8 背景模型鲁棒性实验对比图

图8(a)为overpass视频序列图像,背景中的树叶处于轻微晃动状态,图8(b)为传统ViBe算法检测结果,可以看出晃动的树叶被检测为前景,图8(c)为本文改进算法检测效果,由于建立背景模型时加入了时域信息,利用灰度相似函数从初始5帧中选取像素点建立背景模型,增加了背景模型中样本点信息的丰富性,从而使背景模型具有较好的鲁棒性。

3.3 背景扰动实验分析

为了验证本文改进算法对背景扰动的适应性,选取CDnet2014公共数据集中overpass视频序列进行背景扰动适应性试验,通过将原始ViBe算法和本文改进算法做对比,实验对比如图9所示。

图9 背景扰动实验对比图

图9(a)为overpass视频序列第1 300帧图像,图9(b)为传统ViBe算法检测效果,图9(c)为本文改进ViBe算法检测效果。如图9(a)所示,并且由于风的因素,背景中的树叶处于轻微晃动状态,如图9(b)所示,传统ViBe算法的检测结果背景中的树叶被判定为前景,因为传统ViBe算法的背景模型的建立方法和固定半径阈值的匹配方法对动态背景适应性差,当背景存在扰动时固定分割阈值会导致检测准确度降低。如图9(c)所示,背景中晃动的树叶大部分被正确判定为背景,由此可得,当背景存在扰动情况时,利用平均差法构建自适应分割阈值对背景扰动适应好,可以有效提高检测准确度。

3.4 算法综合表现实验与分析

为对比本文算法与原始ViBe算法在去除鬼影、对背景扰动适应性方面的性能表现,本文选用的指标有真阳性(TP)、真阴性(TN)、假阳性(FP)、假阴性(FN)、准确率(Precision)、召回比(Recall)、F度量(F-measure)、漏检率(FNR),如式(8)~(11)所示:

(8)

(9)

(10)

(11)

式中,TP为正确分类的前景数,TN为正确分类的背景数,FP为错误分类的前景数,FN为错误分类的背景数,Precision是正确分类的前景占总前景的比重,Recall是正确检测前景像素的比率,F-measure为综合评价指标。

为了检验本文算法在不同场景下的有效性,采用CDnet2014公共数据集中具有代表性的视频序列,highway视频序列、overpass视频序列、canoe视频序列总计3个实验样本,其中highway视频序列选取存在运动目标的视频帧作为初始帧,overpass视频序列存在树枝树叶轻微晃动的背景,canoe视频序列存在湖面水纹波动的背景扰动情况。试验选用GMM算法、ViBe算法以及本文算法进行实验对比,比较三种算法在消除鬼影和对背景扰动的适应性上的表现,实验结果如图10所示。

图10 改进算法与其他算法相比

highway视频序列由于初始帧存在运动目标,传统ViBe算法利用初始帧建立背景模型,会将初始帧的运动目标放入背景模型中,导致前景检测阶段真实背景被检测为鬼影,GMM由于采用个相互独立的高斯分布来表征某一像素点的像素特征值,虽然没有产生鬼影,但是检测结果有大量孔洞且存在大量干扰信息;本文采用改进三帧差分和最小外接矩形定位初始帧运动目标,通过局部初始化最小外接矩形区域图像,从而消除初始帧运动目标,达到抑制鬼影产生的目的,且抑制效果明显。overpass视频序列背景区域存在轻微晃动的树叶,canoe视频序列存在湖面水纹波动,GMM和传统ViBe算法对于背景扰动适应性较差,检测结果中将背景区域的扰动信息误检成前景,而本文将灰度相似性与时域和空域信息相结合,从初始五帧中等比例选取20个样本点建立背景模型,使背景模型中的样本点具有空域和时域信息的同时与中心像素点有较高的相似度,提高了背景模型的鲁棒性。其次,通过平均差法衡量背景模型离散程度并构建自适应分割阈值,提高了算法对背景扰动的适应性,因此当背景存扰动情况时,本文算法可以很好的适应背景扰动,从而提高检测的准确度。

同时,利用上文评价指标计算3种算法在3组不同视频序列条件下的指标值,以柱状图的形式进行直观对比,结果如图11所示,可以发现由于ViBe算法无法处理初始帧存在运动目标留下的鬼影,导致其在highway视频序列条件下准确率上明显不如另外两种算法,GMM算法的漏检率在三个视频序列条件下都高于算法,说明其容易将运动目标漏检,运动目标检测不完整,孔洞较多。本文改进算法在不同视频序列条件下的准确率、召回率和F度量三项指标都明显高于传统ViBe算法,这表明本文算法不仅能完整检测出运动目标,并且结果较为准确。

图11 不同视频序列下各算法性能指标对比

最后,利用上文评价指标计算3种算法在3组视频序列条件下的指标平均值,结果如表1所示,可以发现与GMM和传统ViBe算法相比,本文算法在highway、overpass、canoe,3个视频序列条件下,准确率分别平均提高了26.5%和22.3%,并且3个视频序列的检测均速在25frames/s左右,基本满足实时检测的要求。

表1 各算法不同场景评价指标平均值

4 结束语

本文针对传统ViBe算法在目标检测过程中易产生鬼影的问题,利用改进三帧差分法定位初始帧的运动目标,并用最小外接矩形框住目标区域,最后通过局部初始化消除初始帧的运动目标,有效避免了鬼影的产生。在背景模型初始化阶段,利用灰度相似函数从初始五帧等比例选取像素点建立背景模型,避免了样本点重复选取的同时提高了背景模型的鲁棒性。在前景检测检测阶段,通过平均差法衡量样本集合的离散度,构建自适应分割阈值代替原有的固定分割阈值,增强了对背景扰动的适应性,实验证明,本文算法可以有效消除鬼影并且提高在背景扰动情况下的检测准确度,有较好的实用性。由于本文在背景更新阶段没有做进一步改进,故在后期研究中可以通过构建自适应的更新因子来进一步提高目标检测的准确率和适应性。

猜你喜欢

鬼影像素点扰动
Bernoulli泛函上典则酉对合的扰动
转换机制下具有非线性扰动的随机SIVS传染病模型的定性分析
一类四次扰动Liénard系统的极限环分支
带扰动块的细长旋成体背部绕流数值模拟
基于局部相似性的特征匹配筛选算法
基于5×5邻域像素点相关性的划痕修复算法
基于canvas的前端数据加密
基于逐像素点深度卷积网络分割模型的上皮和间质组织分割
如何消除胶印“鬼影”?
基于单应性矩阵的图像拼接方法的对比分析