vibe算法是采用领域像素来创建背景模型,通过比对背景模型和当前输入像素值来检测前景。
模型的工作原理
背景像素样本(该点过去的像素和其领域的像素)的选取:邻域点选取采用8邻域方法随机选取。用v(x)表示图像中x处的像素在给定的欧几里得颜色空间所取得值,每个背景像素x由N个背景样本值集合来建模
M(x)={v1,v2,……vN}
根据模型M(x)对像素值v(x)进行分类,定义一个以v(x)为中心的半径为R的球面S(v(x)),将其与样本中最接近的值进行比较。将规定阈值记为#min,若
#{SR(v(x))∩M(x)}>#min
则该像素点为背景点。反之,为前景点。
模型初始化
初始化是建立背景模型的过程,一般检测算法需要一定长度的视频序列学习完成,影响了检测的实时性,而且当视频画面突然变化时,重新学习背景模型需要较长时间。
vibe算法主要是利用单帧视频序列初始化背景模型,对于一个像素点,结合相邻像素点拥有相近像素值的空间分布特性,随机选择它的邻域点的像素值作为它的模型样本值。我们假设t=0索引第一帧,NG(x)是像素位置x的空间邻域,位置y是根据统一定律随机选择的。
M0(x)={v0(y|y∈NG(x)}
缺点:在第一帧中出现一个移动的物体将会引入Ghost。
更新模型
保守更新策略:像素样本只有被分类为背景样本时,才能被包含在背景模型中,而前景点永远不能被用于填充背景模型。该方法保证了对移动对象的精确检测,前提是它们与背景颜色不相似。缺点是会导致死锁情况和Ghost。解决方法是引入空间信息或采用前景点计数的方法。
盲目更新策略:不管样本是否被归类为背景都被添加到背景模型中。优点是对死锁不敏感,缺点是对慢速运动目标检测能力差,慢速运动目标逐渐被包含在背景模型中。一个可能的解决办法是使用大尺寸的像素模型,它覆盖了长时间窗口。但这是以增加内存使用和更高的计算成本为代价的。
vibe算法采用的是保守更新策略与空间信息相结合的方法,还可以加入前景计数方法。
前景计数方法:对像素点进行统计,如果某个像素点连续N次被检测为前景,则将其更新为背景点。
这样的更新策略包含三个特性:
无记忆更新:保证样本值保持在样本集合内的概率单调衰减,此方法与保守的更新策略相结合,不应该将前景值包含在模型中。新值替换随机选择的样本,而不是首先替换旧值。dt时间后样本被保留的概率是
P(t,t+dt)=[(N-1)/N](t+dt)-t
也可以写作
P(t,t+dt)=e-ln(N/(N-1))dt
该式表明样本在dt时间内被保留的概率与t无关,即过去对未来没有影响。
时间子采样:不必为每个新帧更新背景模型,当一个像素点被分为背景时,它有的概率更新背景模型。
空间邻域更新策略:由于我们使用的是保守更新策略,必须要解决它的缺点引入空间信息。当一个像素点被选择去更新背景模型中的样本值时,也同时也有的概率去更新它的邻域的样本值。该方法利用了像素值的空间传播特性,背景模型逐渐向外扩散,有利于Ghost的快速识别。