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等;
像素級演算法,視頻處理中的預先處理關鍵步驟;
背景模型及時初始化;
具有較好的抗噪能力。
參考文獻:
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. M. 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 "freepatentsonline" web site
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