背景建模与前景检测(五)——ViBe
【给力恋爱资-源】【扣:⒈01⒍.x.⒐⒌2б】 ViBe算法:ViBe
- a powerful technique for background detection and subtraction in video sequences
描述:ViBe是一种像素级视频背景建模或前景检测的算法,效果优于所熟知的几种算法,对硬件内存占用也少。
archive [15 MB]?to evaluate the time needed by ViBe on your platform (Windows or Linux [Wine]), and on your own sequences.
A program for Windows and Linux.?Download an archive?zip archive [16 MB]?to use ViBe on Windows (or under?Wine?in Linux).The program allows you to: (1) save the result for your own images, (2) change the few parameters of ViBe to experiment with, and (3) reproduce our results.
Linux: link a C-C++ object file to your own code.?We provide the object (compiled) code of ViBe for non-commercial applications. Under
Linux, download the32 bits zip file, or the?64 bits zip file. Details on?this page. 算法的主要优势:
·?内存占用少,一个像素需要作一次比较,占用一个字节的内存;
·?无参数法;
·?可直接应用在产品中,软硬件兼容性好; ·?性能优于混合高斯,参数化方法,SACON等; ·?像素级算法,视频处理中的预处理关键步骤; ·?背景模型及时初始化; ·?具有较好的抗噪能力。 ·?O. Barnich?and?M. Van
Droogenbroeck.?ViBe:
A
universal
background
subtraction
algorithm for video sequences. In?IEEE Transactions on Image Processing, 20(6):1709-1724, June 2011. Also available on?the
University site?in PDF format:?, and?HTML
format. This paper contains a very?detailed pseudo-code description of the complete algorithm.?
Van Droogenbroeck?and O. Paquot.?Background Subtraction: Experiments and Improvements for ViBe. In?Change
Detection Workshop (CDW), Providence, Rhode Island, June 2012. Available on?the University site?in PDF format:?, and?HTML format.?
·?O. Barnich?and?M.
Van Droogenbroeck.?ViBe: a powerful random technique to estimate the background in video sequences. In?International Conference on Acoustics, Speech, and Signal Processing (ICASSP 2009), pages 945-948, April 2009. Available as a?IEEE publication?or on?the University site.?
·?Patent description at the \ ?背景差方法实现运动物体检测面临的挑战主要有:必须适应环境的变化(比如光照的变化造成图像色度的变化);相机抖动引起画面的抖动(比如手持相机拍照时候的移动);图像中密集出现的物体(比如树叶或树干等密集出现的物体,要正确的检测出来);必须能够正确的检测出背景物体的改变(比如新停下的车必须及时的归为背景物体,而有静止开始移动的物体也需要及时的检测出来)。物体检测中往往会出现Ghost区域,Ghost区域也就是指当一个原本静止的物体开始运动,背静差检测算法可能会将原来该物体所覆盖的区域错误的检测为运动的,这块区域就成为Ghost,当然原来运动的物体变为静止的也会引入Ghost区域,Ghost区域在检测中必须被尽快的消除。一个Ghost区域的实例如图Fig.1,在图中可以发现相比于原图,检测的结果中错误的多出现了两个人的形状,这就是Ghost。 ViBe算法详解: 一、ViBe检测方法
? ViBe是本篇论文中所提出的一个检测方法,相比于其他方法它有很多的不同和优点。具体的思想就是为每个像素点存储了一个样
本集,样本集中采样值就是该像素点过去的像素值和其邻居点的像素值,然后将每一个新的像素值和样本集进行比较来判断是否属于背景点。该模型主要包括三个方面:模型的工作原理;模型的初始化方法;像素的分类过程;模型的更新策略。 二、模型的工作原理
背景物体就是指静止的或是非常缓慢的移动的物体,而前景物体就对应移动的物体。所以我们可以把物体检测看出一个分类问题,也就是来确定一个像素点是否属于背景点。在ViBe模型中,背景模型为每个背景点存储了一个样本集,然后将每一个新的像素值和样本集进行比较来判断是否属于背景点。可以知道如果一个新的观察值属于背景点那么它应该和样本集中的采样值比较接近。
具体的讲,我们记v(x):x点处的像素值;M(x)={V1,V2,…VN}为x处的背景样本集(样本集大小为N);SR(v(x)):以x为中心R为半径的区域,如果M(x) [{SR(v(x))∩ {v1,v2, . . . , vN}}]大于一个给定的阈值#min,那么就认为x点属于背景点。 三、模型的初始化方法
初始化就是建立背景模型的过程。通用的检测算法的初始化需要一定长度的视频序列来完成,通常要耗费数秒的时间,这极大的影戏的检测的实时性,对于手持相机实时拍照来讲并不合适。ViBe的初始化仅仅通过一帧图像即可完成。ViBe初始化就是填充像素的样本集的过程但是由于在一帧图像中不可能包含像素点的时空分布信息,我们利用了相近像素点拥有相近的时空分布特性,具体来讲就是:对
于一个像素点,随机的选择它的邻居点的像素值作为它的模型样本值。M0(x)
= {v0(y | y ∈NG(x))},t=0初始时刻,NG(x)即为邻居点 。这种初始化方法优点是对于噪声的反应比较灵敏,计算量小速度快,可以很快的进行运动物体的检测,缺点是容易引入Ghost区域。 四、像素的分类过程
?假定当前帧为第 t 帧,pt(x)表示第 t 帧图像 x 像素的像素值。借用论文中的一幅图进行讲解(图中所用符号跟我所用的略有点不同),如图1。下面根据图的讲解都是针对x点一个像素的分析。图中的p1到p6都是x像素的样本集中的值,pt(x)为当前像素值。那图中的横坐标C1和纵坐标C2是什么呢?第一次看论文的时候我也很疑惑。我们假定我们处理的图像每个像素是RGB格式的,即一个像素值由R,G,B三个值表示,那么图1的坐标其实还隐藏了C3,即C1,C2,C3表示的正是三个通道值,如果是灰度图的话下面的图就要画成一维一条直线了。接下来我们选定一个半径R(如图1所示的R),在距pt(x)值半径R距离(这个距离即笛卡尔坐标距离,坐标就是RGB通道值)范围内的样本值有p2,p4,在半径R范围内的样本值总数计为#,那么下图#=2。
当##min的值时,x这个像素就被标记为前景像素。依次处理所有像素,就能得出前景图像了。其中#min这个值也是预先设定的,论文中给出的值是2。 五、模型的更新策略