1. 程式人生 > >ViBe(Visual Background extractor)背景建模或前景檢測

ViBe(Visual Background extractor)背景建模或前景檢測

作者:星zai


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

描述:

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.  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下載地址: