ViBe算法原理详解

Vibe算法是一种基于背景更新的前景检测算法,其原理是通过提取像素点(x, y)周围的像素值及以前的像素值建立像素点的样本集,然后再将另一帧(x,y)处的像素值与样本集中的像素值进行比较,如果其与样本集中的像素值的距离大于某阈值的话,则认为该像素点为前景像素点,否则为背景像素点。
在原文https://ieeexplore.ieee.org/document/4959741/?arnumber=4959741&tag=1中,新帧像素值与样本集中像素的比较通过如图所示方法进行:
这里写图片描述
其中pt(x)为新帧的像素值,R为设定值,p1、p2、p3….为样本集中的像素值,以pt(x)为圆心R为半径的圆被认为成一个集,当样本集与此集的交集大于设定的阈值#min时,可认为此为背景像素点(交集越大,表示新像素点与样本集越相关)。我们可以通过改变#min的值与R的值来改变模型的灵敏度。
这部分便是检测运动的原理。
下面是背景更新的一些规则:
为了随着时间的推移准确地检测出运动的对象,我们需要对模型进行不断地更新。
原文作者对于两种更新:盲目更新(前景像素点可被用于填充背景)及保守更新(前景像素点永不用于填充背景)的缺点进行了描述,盲目更新对慢速运动的目标检测不完整,而保守更新则将在原来静止的物体突然运动时产生Ghost现象(如被认为为背景的车辆突然运动,则原来它所在的位置将被认为成前景区域,而前景区域的像素点永不用于填充背景,则此处在二值图像上一直为白色)。因此作者提出了背景更新的几个原则:
1、时间衰减原则:
让我们来看看作者的描述

Previous methods use first-in first-out policies to update their models. To properly deal with wide ranges of events in the scene background, some authors (e.g. [6]) choose to include large numbers (up to 200) of samples in the pixels models. Others [4], [5] even incorporate two temporal sub-models to successfully handle fast and slow modifications.

From a theoretical point of view, it might be better to guarantee a monotonic decay for the probability of a sample value to remain inside the set of samples. It improves the relevance of the estimation and allows the use of fewer samples. We manage to do this by choosing, randomly, which sample to replace when updating a pixel model. Once the sample to be discarded has been chosen, the new value replaces the discarded sample (see Figure 2). Mathematically, one shows that, according to this updating mechanism, the probability for a pixel sample present a time t0 to be still present at t1 later time is [(n-1)/n]^(t1-t0)

大致意思是其他几种前景检测的模型可能通过选取了大量的样本来更新模型并坚持先进先出原则(即先进入样本集的样本先出来),但作者觉得让样本在样本集中出现的概率随时间地延长而减小在数学上可能会取得更加好的效果,于是他让在t0时刻出现在样本集中的样本出现在t1时刻的概率为 [(n-1)/n]^(t1-t0)。
即样本值保留在样本集中的概率随着时间的增大而变小,这就保证了像素模型在时间上面的延续特性。
2、空间一致性原则:
如果仅仅是保持时间特性显然是不够的,像素的空间一致性也不能被忽略。摄像头的微小抖动及背景中缓慢移动的物体都有可能影响到像素模型的准确性,而通常我们解决这种问题的方法是设定阈值(如帧间差分法),但作者提出了一个更有弹性的方法:
对于一个像素点,它的样本集可以由它现在的像素值进行替换,同时,它周围领域内像素点的样本集也可以由它进行替换。而替换的值及被替换样本集的像素点的选取都是随机的。这意味着什么呢?这意味着像素点不仅可以影响自己的样本集,也可以影响周围像素的样本集,这样,每个像素点的所能影响的范围变成了一个区域,而它对这个区域的影响又是随机的。这样做有什么作用呢?回到我们之前考虑的情况,考虑一个空间坐标点(x,y,z),其在上一帧图像中的位置为(x0, y0)假设摄像头产生微小震动,则原来的空间坐标点的位置在下一幅图片中的位置发生了改变,假设变为第二帧图像的坐标(x1, y1),由于这个位置的改变是微小的,所以很明显(x1, y1)在(x0, y0)的领域里面,即在(x0, y0)的影响范围内,这就保证了像素点在空间上的连续性。而且由于影响的选取是随机的,这就模拟了摄像头随机的抖动方向。

原创文章,转载请直接使用链接。

猜你喜欢

转载自blog.csdn.net/weixin_41987641/article/details/81947468
今日推荐