第一次总结报告——Vibe

来源:互联网 发布:pdf编辑mac版 编辑:程序博客网 时间:2024/05/29 14:07

        第一次在这里写总结技术的博客,这也算是对自己所学的知识进行一次总结。

        自过年回来的这一段时间里,看的是VIBE的论文,一开始就看纯英文的论文,而且还是视频背景建模方面最新的文章,这对于一个刚刚入门视频背景建模算法的我来说,存在着很大的难度,但是上头有boss的压力,眼看着时间的逼近,我无奈之下放弃自己一个人看论文,转向实验室同学一块讨论,最终才逐渐走上理解的道路,不得不感谢这一次的报告,让我明白了一个人奋斗不如一起合作的道理,多人的智慧总是要高于一人的,所以希望以后自己要慢慢的打开自己的视角,多于同学进行研究方向的讨论,又因为实验室同学本科来自不同的专业,学计算机出身的我,对数学就不那么的理解,但是可以和学数学的同学进行合作,各取所长,这样对大家的一起进步都会起到很大的作用的。

       由于没看过多少背景检测算法方面的论文,一开始就看VIBE的文章,因此对这一篇B哥的大作,会存在理解不到位或者偏差的地方,望指出。

Vibe 主要考虑以下三方面:

1)使用什么模型以及模型的表现

2)模型的初始化过程

3)模型的更新机制

针对这三方面,给出了以下的描述;


1)Vibe 是一种像素级的背景建模或者前景检测算法。

基本思想:为每一个像素存储一个样本集,这个样本集N的大小在实验中给出为N=20;

这个样本集包含的是这个像素点过去的像素值和它周围邻居点的像素值,在得到了这样一个样本集之后,当遇到一个新的像素时,就将这个像素值和这个样本集中的采集点进行对比,判断这个新的像素值是否是背景点,即所说的对背景点的分类的过程。


模型的工作原理:

记:

       v(x):  x 点处的像素值;  M(x)={v1,v2,...,vN}  为x处的背景样本集,样本集大小为N;

      SR(v(x)):  以x为中心R为半径的区域;

在这里可以用图片来观测可能会更形象一些,如下图所示:


      

其中,图中的v1,v2,...  v6等是像素点x的样本集中的采样点,而其中的SR(v(x))是一个R为半径的一个球体,通过计算像素点x到这些采样点的距离和半径差值是否大于给定的阈值#min,若大于或者等于,则判定这个像素点x属于背景点,即完成了像素点是背景点还是前景点的分类过程。


2) 模型的初始化

相比于通用的一些前景检测算法需要一定长度的视频序列来完成初始化过程,Vibe仅使用一帧图像完成了它的背景的建模,即模型的初始化。那么建模的数据从何而来?

之前在1)中也介绍了样本集的组成,这个样本集就是最终的背景模型,对一帧中的一个像素点,随机的选择它的邻居点的像素值作为它的模型的样本值,而这个随机的选择过程如下:

这里使用一个3*3的模版,根据这个模版,对每一个像素点的x和y坐标进行平移,而网格中的数值代表的是坐标平移量,根据对应的平移量来得到随机的邻居点的像素值。

X方向:          

-1

0

1

-1

1

-1

0

1

0

Y方向:

-1

0

1

-1

1

-1

0

1

0



3)模型的更新策略:

为了适应不断变化的背景,如光照,背景的物体的变更(如突然启动离去的车)等,Vibe采取的更新方法是:保守的更新策略+前景点计数方法。

保守的更新策略:前景点永远不会被用来填充背景模型,如一块静止的区域被错误的检测为前景,那么就会一直被当作运动物体来对待,会引起死锁效应。

前景点计数方法:对像素点进行统计,如果摸个像素点连续K次被检测为前景,则将其更新为背景点。

具体的更新方法:

当一个像素点被分类为背景点时,它就有1/ φ的概率来更新自己的背景模型,在它的样本集中随机的选择一个样本点用这个像素点进行填充更新。

同时它也有1/ φ的概率来更新它的邻居点的背景模型,方法也是在它的邻居点的样本集中利用3*3的模版随机的选择它的一个样本点,用它的邻居点的像素值进行填充更新。

此外,当前景点连续K次被检测为前景时,将它变成背景点,然后它也有1/ φ的概率来更新自己的背景模型。

依次不断的向外扩散更新。


值得注意的是,在更新一个像素的样本集中的20个样本值的时候,是随机的从20个中选一个的,因此模型中的样本值出现的几率呈指数型衰减,这样的一个样本在T时刻不被更新的概率为(N-1)/ N 。假设时间是连续的,那么在dt 时间之后,样本集中的样本值仍然保留不被更新的概率为:


实验结果:


1 0