Vibe背景建模算法

網上很多有趣的博客提到了這個Vibe背景建模方法。本來我自己的課題已經放棄了使用背景建模,但是今天手賤,點開了
後來又看了一篇正兒八經的http://www.cnblogs.com/dwdxdy/p/3527891.html
看了司令的第一段開場白,把我笑哭了。。故滿滿興趣看下去,看看所謂的B哥搞出來的Vibe算法究竟是什麼東東

貌似,Vibe算法的關鍵詞是
“隨機”

司令大哥整篇文章都是爲了吐槽高斯,,看着真是醉了。

Vibe流程如下:
1 背景模型初始化:利用單幀視頻序列初始化背景模型,對於一個像素點,結合相鄰像素點擁有的相近像素值的空間分佈特徵性,隨機選擇它的鄰域點的像素值作爲模型的樣本值。(事實上這時候不能有前景出現,,否則。。嘿嘿。。直接就認錯點了。。這樣就會出現傳說中的Ghost區域)
2 前景檢測過程:背景模型爲每個背景點儲存一個樣本集,然後每個新的像素值和樣本集比較是否屬於背景。計算新的像素值和樣本中的每個樣本值的距離,若距離小於閾值,則近似樣本點數目增加。若距離大於閾值,則認爲產生了新的背景點。
檢測過程一般由三個參數決定,樣本集數目N,閾值min,距離相近判定閾值R,一般取N=20,Min=2,R=20
前面的翻譯可能不太對,乾脆貼個圖

3 背景模型更新策略
1)無記憶更新策略  每次需要更新像素點的背景模型時,以新的像素點取代該像素點樣本集的一個樣本值
2)時間取樣更新策略 並不是每一幀都需要更新處理,而是按照一定的更新率去更新背景模型。當一個像素點判定爲背景,則有1/rate的概率更新,rate是時間採樣因子,一般取16
3)空間鄰域更新策略 針對需要更新的像素點,隨機選取一個該像素點的鄰域的背景模型,用新的像素點更新被選中的鄰域點的背景模型。

4 Vibe的改進方案
1)距離計算:對於一個新的像素點,判斷前景和背景是計算歐氏距離然後做閾值判斷。爲了改進這裏的缺點,可以用一個叫做圓錐模型的計算方法去計算距離,然後用自適應的閾值取代之前的固定閾值,自適應是通過和樣本集的方差關聯來獲得。方差大,證明背景複雜所以要大閾值,反之就是用小閾值。
2)引入整體的概念,彌補像素級分割的不足(事實上就是加入一點對二值化mask的形態學膨脹腐蝕之類的東西)
3)抑制鄰域更新 在updatemask時,計算像素和上一幀的梯度,梯度越大證明變化值越大,可能爲前景點,不要更新
4)檢測閃爍像素點 引入閃爍程度blink level,當同一個點前後兩幀的變化大,blink level就增加15,否則減少1,根據blink level判斷是否爲閃爍點,閃爍點要單獨處理,通常是作爲背景點。
5)增加更新因子,適應不同的背景變化

注:下了個demo,在有微小抖動的貌似效果不太好。。。準備換下測試的視頻段,and換下參數試試看


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章