比较常见的背景建模方法是迭代法,这种建模算法是单高斯建模的一种近似算法,具有较好的实时性特性,其算法如式(3)所示:
式(3)中,fk(x,Y)是灰度图像序列中第k帧的位置为(x,y)的像素灰度值。从(x,y)是灰度图像序列中第k帧的位置为(x,Y)的背景图像的像素灰度值。a称为背景更新系数,它反映了当前图像帧对背景的影响程度:a选取越大,则当前图像帧对背景更新所作的贡献越大。一般来说,a选择在0-0.1范围内。本文中a的值选择为0.08。
得到背景Bk后,就可以检测出运动目标。算法如式(4)所示。
式(4)中,db (k)(x,力是通过背景减除法得到的运动目标形状的二值图像。TH2是阂值,用来判断背景减除后得到的灰度图像中(x,y)位置像素点的灰度值是否在移动物体上。如果背景减除后得到(x,Y)的位置像素灰度值大于TH2,则说明该像素点在移动物体上,将db (k)(x,Y)置1;反之则说明该像素点不在移动物体上,将db (k)(x,y)置0。
这种算法在移动物体慢速移动时,也能够准确地检测出移动物体,这种特性可以弥补帧差法移动物体检测的缺陷。但是从Bk算法可以看出,整个学习的过程是一个累加过程,在这个过程中,当有移动物体在当前帧中产生时,这个移动物体同样被学习进Bk中,这就是“拖尾”现象产生的原因。
通过对式(3)分析可以看出“拖尾”现象的产生是因为当前帧中的移动物体和背景图像同样被学习,从而把移动物体的信息添加到背景建模中去。可以在式(3)中加人适当判定条件,以达到控制背景学习的目的。式(3)是本文提出的对迭代法背景建模的改进算法:
其中,P1为帧差法df (k)(x,Y)中移动物体像素占整个图像像素的比值,TH3为阂值;p2为背景减除法db (k)(x,Y)中移动物体像素占整个图像像素的比值,TH4为阂值。当当前帧中有移动物体产生时,p1 ,p2大于0,p1小于p2;当当前帧中移动物体移动速度过慢时,P1远小于p2;当整个图像发生强烈光照变化或抖动时,p1 ,p2趋近于1,之后P1迅速减小到趋于0 ,p2仍趋于1。该算法中判定条件p 1≥TH3用来判定当图像发生强烈光照变化或抖动时的学习回归,而判定条件TH4≥p 2 ≥TH5则用来判断有移动物体时不学习的情况:
(1)初始化.fk(x,Y)和Bk(x,Y),分别为第一帧图像;
(2)式(1), (2)得到叭(x,Y),计算p1;
(3)式(5), (4)得到Ak(x,Y),计算p2;
(4)用步骤(1),(2)得到的p1 ,p2值判定式(5)
(5)判断是否满足终止条件,若满足则停止计算,否则转到步骤(1) 。
TH1的值一般为20-30之间。TH2的值与TH1相同。由于p1的作用是判定学习回归,所以TH3的值不宜过大,一般在0.01-0.05之间。TH4的作用是抑制图像强烈变化时的无用更新,一般在0.50.7之间。TH5的作用是判定移动物体响应程度,一般在0.05-0.1之间。
2.2程序可扩展性算法分析
对于不同的移动物体检测算法,其对系统提供的时序帧要求也不同,比如上文提到的帧差法,有二帧差法、三帧差法、四帧差法;对于背景建模算法,迭代法只要求当前帧,反馈背景更新算法则要求有当前帧和前一帧图像,中提到的多帧加权算法要求至少有包括当前帧在内的之前5帧图像,这就需要系统提供足够的基础数据。而对于实时系统而言,为了保证系统的可持续性和实时性,通常只将当前帧保存在内存中,这就限制了其他算法在该系统上的应用。为了保持系统的可持续性并保证多种算法可以在一个系统中运行,本系统采用了时序调用的方法,将当前帧以及之前一段时间内的所有时序帧可控地保存在硬盘上,以备其他算法调用,并始终维持这一状态,以保持系统的可持续性。
本系统中采用Ontimer()方法实时采集视频帧,并在采集当前帧后把它保存到硬盘上,通过累加计数的方式控制保存帧的个数。当保存帧数超过某个控制值时,从之前的第一帧开始依时间顺序删除前面的帧,并持续下去,这样在系统运行的整个过程中始终有一定数量的帧可供调用。当系统结束运行时,用OnCancl()方法将这些中间变量删除。对于用户而言,保存帧后删除帧的动作是不可见的,但用户在系统运行过程中可以调用控制值以内的任意帧。
(1)判断保存路径是否存在,如果存在则保存帧,否则创建保存路径;
(2)用capFileSaveDIB()方法保存帧并计数;
(3)判断帧的数量,如果大于10(可根据需要改变),则删除第一帧;
(4)判断终止条件是否满足,满足则删除所有帧,删除当前目录,否则返回第(2)步。
2.3算法流程
本文算法流程图如图2和图3所示。