目标检测之vibe---ViBe(Visual Background extractor)背景建模或前景检测

ViBe算法:ViBe - a powerful technique for background detection and subtraction in video sequences

算法官网:http://www2.ulg.ac.be/telecom/research/vibe/

描述:

ViBe是一种像素级视频背景建模或前景检测的算法,效果优于所熟知的几种算法,对硬件内存占用也少。

Code:

算法执行效率测试程序,windows和linux操作系统下的程序和c/c++文件都可以在作者官网下载,如下:

    • Windows and Linux users: a benchmarking program to evaluate the time needed by ViBe on your platform and on your own sequences! Download an archive zip 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.
    • 当然,在使用ViBe算法时应该遵循算法官网的License。

      算法的主要优势:

    • 内存占用少,一个像素需要作一次比较,占用一个字节的内存;

      无参数法;

      可直接应用在产品中,软硬件兼容性好;

      性能优于混合高斯,参数化方法,SACON等;

      像素级算法,视频处理中的预处理关键步骤;

      背景模型及时初始化;

      具有较好的抗噪能力。

      参考文献:

      Performance

      • An independant evaluation is available in S. Brutzer, B. Hoferlin, and G. Heidemann. Evaluation of background subtraction techniques for video surveillance. In IEEE International Conference on Computer Vision and Pattern Recognition (CVPR), pages 1937-1944, Colorado Spring, USA, June 2011. 
        In their conclusions, they claim: "Considering these aspects, Barnich is a strong favorite, since it is simple and almost parameterless."

      背景差方法实现运动物体检测面临的挑战主要有:必须适应环境的变化(比如光照的变化造成图像色度的变化); 相机抖动引起画面的抖动(比如手持相机拍照时候的移动);图像中密集出现的物体(比如树叶或树干等密集出现的物体,要正确的检测出来);必须能够正确的检测出背景物体的改变(比如新停下的车必须及时的归为背景物体,而有静止开始移动的物体也需要及时的检测出来)。物体检测中往往会出现Ghost区域,Ghost区域也就是指当一个原本静止的物体开始运动,背静差检测算法可能会将原来该物体所覆盖的区域错误的检测为运动的,这块区域就成为Ghost,当然原来运动的物体变为静止的也会引入Ghost区域,Ghost区域在检测中必须被尽快的消除。一个Ghost区域的实例如图Fig.1,在图中可以发现相比于原图,检测的结果中错误的多出现了两个人的形状,这就是Ghost。

      Fig 1

      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区域。

      模型的更新策略

      背景模型的更新就是使得背景模型能够适应背景的不断变化,比如光照的变化,背景物体的变更等等。保守的更新策略:前景点永远不会被用来填充背景模型,会引起死锁,比如初始化的时候如果一块静止的区域被错误的检测为运动的,那么在这种策略下它永远会被当做运动的物体来对待;Blind策略:对死锁不敏感,前景背景都可以来更新背景模型,缺点是缓慢移动的物体会融入背景中无法被检测出来。在本方法中采用的更新策略是保守的更新策略+前景点计数方法。前景点计数:对像素点进行统计,如果某个像素点连续N次被检测为前景,则将其更新为背景点。

      随机的子采样:在每一个新的视频帧中都去更新背景模型中的每一个像素点的样本值是没有必要的,当一个像素点被分类为背景点时,它有1/ φ的概率去更新背景模型。

      具体的更新方法:每一个背景点有1/ φ的概率去更新自己的模型样本值,同时也有1/ φ的概率去更新它的邻居点的模型样本值。更新邻居的样本值利用了像素值的空间传播特性,背景模型逐渐向外扩 散,这也有利于Ghost区域的更快的识别。同时当前景点计数达到临界值时将其变为背景,并有1/ φ的概率去更新自己的模型样本值。

      在选择要替换的样本集中的样本值时候,我们是随机选取一个样本值进行更新,这样可以保证样本值的平滑的生命周期由于是随机的更新,这样一个样本值在时刻t不被更新的概率是 (N-1)/N,假设时间是连续的,那么在dt的时间过去后,样本值仍然保留的概率是

      也可以写作, 

      这就表明一个样本值在模型中是否被替换与时间t无关 ,随机策略是合适的。

      ViBe实验结果

      在实验中,我们和其他的一些检测算法在检测准确率和算法的计算量方面都进行了比较,实验表明我们的方法检测效果明显要好很多,对于光照的变化和相机抖动等的效果都十分稳定,而且计算量非常小,内存占用较少,这就使得该方法能够用于嵌入手持照相机中。一些具体的实验效果和数据如下

      Fig.2检测效果对比

      Fig.3相机的移动

      Fig.4 Ghost区域消融,图中的光亮的地板

        

      Fig.5检测正确率                                                                             Fig.6算法处理速度

      总结

      在这片文章中,我们提出了一个新的背静差算法-ViBe,和以前相比它具有三个不同点。首先,我们提出了一个新的分类模型。其次,我们介绍了ViBe如何初始化,它只需要一帧图像即可完成初始化,而其他的算法通常需要等待数秒去完成初始化,这对于嵌入照相机中的要求实时性比较高的和一些比较短的视频序列很有帮助。 最后,我们提出了自己的更新策略,相比于其他算法将样本值在模型中保存一个固定的时间,我们采用随机的替换更新样本值,经过证明这样可以保证样本值的一个指数衰减的平滑生命周期,并且可以使得背景模型很好的适应视频场景的变化,从而达到更好的检测效果。

      通过一系列实验表明ViBe方法相比于其他的一些检测算法具有计算量小、内存占用少、处理速度快、检测效果好、有更快的Ghost区域消融速度和应对噪声稳定可靠的特点,并且非常适合嵌入照相机等要求计算量小和内存占用少的情境中。

      效果图:

      对应的Code下载地址:

      http://pan.baidu.com/share/link?shareid=409860&uk=3373051938

    • http://www.cnblogs.com/dwdxdy/p/3527891.html  背景建模原理vibe

      http://blog.csdn.net/zouxy09/article/details/9622285 前景检测

    • http://blog.csdn.net/stellar0/article/details/8777283
    • http://www.cnblogs.com/xrwang/archive/2010/02/21/ForegroundDetection.html 前景检测背景建模
    • http://blog.csdn.net/lucky_greenegg/article/details/8997809
    • http://blog.csdn.net/jia_zhengshen/article/details/9763267 简单中文介绍
    • http://www.linuxidc.com/Linux/2013-06/86698p3.htm 运动目标检测 实现c++
    • http://download.csdn.net/download/u013529129/6869713 code
    • http://download.csdn.net/detail/u013529129/6869713
时间: 2024-11-25 19:40:07

目标检测之vibe---ViBe(Visual Background extractor)背景建模或前景检测的相关文章

ViBe(Visual Background extractor)背景建模或前景检测

ViBe算法:ViBe - a powerful technique for background detection and subtraction in video sequences 算法官网:http://www2.ulg.ac.be/telecom/research/vibe/ 描述: ViBe是一种像素级视频背景建模或前景检测的算法,效果优于所熟知的几种算法,对硬件内存占用也少. Code: 算法执行效率测试程序,windows和linux操作系统下的程序和c/c++文件都可以在作者

背景建模与前景检测

背景建模与前景检测(Background Generation And Foreground Detection) 链接:http://www.cnblogs.com/xrwang/archive/2010/02/21/ForegroundDetection.html

学习OpenCV范例(二十四)—ViBe前景检测(二)

最近导师没给什么项目做,所以有那么一点点小时间,于是就研究起了前景检测,既然前景检测有很多种算法,那干脆就把这些模型都学起来吧,以后用到前景检测时至少还有那么几种方法可以选择,上次介绍的是GMM模型,其实GMM模型本身就是一个很不错的模型,现在也很多人在研究,并且做改进,主要是OpenCV有函数调用,用起来非常方便,当我们都在兴高采烈的讨论GMM各种好的时候,B哥不爽了,他说老子是搞前景检测的,怎么可能让你们这么嚣张,而且老子就不按照你那套路来,什么高斯模型,混合高斯模型,我统统不用,就来个简单

常见的目标检测中的背景建模方法

Author: JW. ZHOU 2014/6/13 最近一直在做前景检测方面的研究,刚开始主要是做一些工程性的应用,为了解决工程方面的问题,下了不少功夫,也看了不少最近国内外的文章.一直想做个总结,拖着拖着,终究却写成这篇极不成功的总结. 背景建模或前景检测的算法主要有: 1. Single Gaussian (单高斯模型) Real-time tracking of the human body 2. 混合高斯模型(Mixture of Gaussian Model) An improved

目标检测中背景建模方法

最近一直在做前景检测方面的研究,刚开始主要是做一些工程性的应用,为了解决工程方面的问题,下了不少功夫,也看了不少最近国内外的文章.一直想做个总结,拖着拖着,终究却写成这篇极不成功的总结.      背景建模或前景检测的算法主要有: 1. Single Gaussian (单高斯模型) Real-time tracking of the human body 2. 混合高斯模型(Mixture of Gaussian Model) An improved adaptive background m

opencv-视频处理-实时的前景检测-Vibe算法

vibe算法是一种像素级的前景检测算法,实时性高,内存占有率低,前景检测准确率高.但是会出现"鬼影",当然基于对鬼影的处理,也会有相应的对vibe算法的改进. 把下面三篇文章看明白,基本就会掌握vibe算法的过程: < ViBe: a powerful random technique to estimate the background in video sequences> <Background Subtraction: Experiments and Impr

paper 83:前景检测算法_1(codebook和平均背景法)

前景分割中一个非常重要的研究方向就是背景减图法,因为背景减图的方法简单,原理容易被想到,且在智能视频监控领域中,摄像机很多情况下是固定的,且背景也是基本不变或者是缓慢变换的,在这种场合背景减图法的应用驱使了其不少科研人员去研究它. 但是背景减图获得前景图像的方法缺点也很多:比如说光照因素,遮挡因素,动态周期背景,且背景非周期背景,且一般情况下我们考虑的是每个像素点之间独立,这对实际应用留下了很大的隐患. 这一小讲主要是讲简单背景减图法和codebook法. 一.简单背景减图法的工作原理. 在视频

[综]前景检测GMM

tornadomeet 前景检测算法_4(opencv自带GMM) http://www.cnblogs.com/tornadomeet/archive/2012/06/02/2531705.html 前面已经有3篇博文介绍了背景减图方面相关知识(见下面的链接),在第3篇博文中自己也实现了gmm简单算法,但效果不是很好,下面来体验下opencv自带2个gmm算法. opencv实现背景减图法1(codebook和平均背景法) http://www.cnblogs.com/tornadomeet/

前景检测算法_3(GMM)

摘要 本文通过opencv来实现一种前景检测算法——GMM,算法采用的思想来自论文[1][2][4].在进行前景检测前,先对背景进行训练,对图像中每个背景采用一个混合高斯模型进行模拟,每个背景的混合高斯的个数可以自适应.然后在测试阶段,对新来的像素进行GMM匹配,如果该像素值能够匹配其中一个高斯,则认为是背景,否则认为是前景.由于整个过程GMM模型在不断更新学习中,所以对动态背景有一定的鲁棒性.最后通过对一个有树枝摇摆的动态背景进行前景检测,取得了较好的效果. 关键字:GMM,opencv,前景