ViBe是一種像素級的背景建模、前景檢測算法,該算法主要不同之處是背景模型的更新策略,隨機選擇需要替換的像素的樣本,隨機選擇鄰域像素進行更新。在無法確定像素變化的模型時,隨機的更新策略,在一定程度上可以模擬像素變化的不確定性。
背景模型的初始化
初始化是建立背景模型的過程,一般的檢測算法需要一定長度的視頻序列學習完成,影響了檢測的實時性,而且當視頻畫面突然變化時,重新學習背景模型需要較長時間。
ViBe算法主要是利用單幀視頻序列初始化背景模型,對於一個像素點,結合相鄰像素點擁有相近像素值的空間分布特性,隨機的選擇它的鄰域點的像素值作為它的模型樣本值。
優點:不僅減少了背景模型建立的過程,還可以處理背景突然變化的情況,當檢測到背景突然變化明顯時,只需要舍棄原始的模型,重新利用變化后的首幀圖像建立背景模型。
缺點:由於可能采用了運動物體的像素初始化樣本集,容易引入拖影(Ghost)區域。
前景檢測過程
背景模型為每個背景點存儲一個樣本集,然后每個新的像素值和樣本集比較判斷是否屬於背景。
計算新像素值和樣本集中每個樣本值的距離,若距離小於閾值,則近似樣本點數目增加。
如果近似樣本點數目大於閾值,則認為新的像素點為背景。
檢測過程主要由三個參數決定:樣本集數目N,閾值#min和距離相近判定的閾值R,一般具體實現,參數設置為N=20,#min=2,R=20。
背景模型的更新策略
1).無記憶更新策略
每次確定需要更新像素點的背景模型時,以新的像素值隨機取代該像素點樣本集的一個樣本值。
2).時間取樣更新策略
並不是每處理一幀數據,都需要更新處理,而是按一定的更新率更新背景模型。當一個像素點被判定為背景時,它有1/rate的概率更新背景模型。rate是時間采樣因子,一般取值為16。
3).空間鄰域更新策略
針對需要更新像素點,隨機的選擇一個該像素點鄰域的背景模型,以新的像素點更新被選中的背景模型。
ViBe的改進
1).距離計算方法
以圓椎模型代替原來的幾何距離計算方法
以自適應閾值代替原來固定的距離判定閾值,閾值大小與樣本集的方差成正比,樣本集方差越大,說明背景越復雜,判定閾值應該越大。
2).分離updating mask和segmentation mask
引入目標整體的概念,彌補基於像素級前景檢測的不足。針對updating mask和segmentation mask采用不同尺寸的形態學處理方法,提高檢測准確率。
3).抑制鄰域更新
在updating mask里,計算像素點的梯度,根據梯度大小,確定是否需要更新鄰域。梯度值越大,說明像素值變化越大,說明該像素值可能為前景,不應該更新。
4).檢測閃爍像素點
引入閃爍程度的概念,當一個像素點的updating label與前一幀的updating label不一樣時,blinking level增加15,否則,減少1,然后根據blinking level的大小判斷該像素點是否為閃爍點。閃爍像素主要出現在背景復雜的場景,如樹葉、水紋等,這些場景會出現像素背景和前景的頻繁變化,因而針對這些閃爍應該單獨處理,可以作為全部作為背景。
5).增加更新因子
ViBe算法中,默認的更新因子是16,當背景變化很快時,背景模型無法快速的更新,將會導致前景檢測的較多的錯誤。因而,需要根據背景變化快慢程度,調整更新因子的大小,可將更新因子分多個等級,如rate = 16,rate = 5,rate = 1。
參考資料:
ViBe A universal background subtraction algorithm for video sequences
Background Subtraction Experiments and Improvements for ViBe