運動目標檢測ViBe算法


一、運動目標檢測簡介      

 

       視頻中的運動目標檢測這一塊現在的方法實在是太多了。運動目標檢測的算法依照目標與攝像機之間的關系可以分為靜態背景下運動檢測和動態背景下運動檢測。先簡單從視頻中的背景類型來討論。
        靜態背景下的目標檢測,就是從序列圖像中將實際的變化區域和背景區分開了。在背景靜止的大前提下進行運動目標檢測的方法有很多,這些方法比較側重於背景擾動小噪聲的消除,如:
1.背景差分法
2.幀間差分法
3.光流法
4.混合高斯模型(GMM)
5.碼本(codebook)
還有這些方法的變種,例如三幀差分,五幀差分,或者這些方法的結合。
      運動背景下的目標檢測,相對於靜態背景而言,算法的思路就有所區別了,一般會更加側重於匹配,需要進行圖像的全局運動估計與補償。因為在目標和背景同時運動的情況下,是無法簡單的根據運動來判斷的。運動背景下的運動目標檢測算法也有很多,如
1.塊匹配
2.光流估計
      這些方法總得來在不同的環境下說各有各自的特點吧,也不見得簡單的算法就一定比復雜的要弱。有一些博客已經對這些方法進行了對比和評估,有興趣的同學可以參考這些

    (摘自http://blog.csdn.net/zouxy09/article/details/9622401
      推薦一個牛逼的庫:http://code.google.com/p/bgslibrary/ 里面包含了各種背景減除的方法,可以讓自己少做很多力氣活。
      還有一篇評估的博文http://www.cnblogs.com/xrwang/archive/2010/02/21/ForegroundDetection.html

 

二、GMM算法簡介


      不得不提的是其中的GMM算法(可以參考 Adaptive background mixture models for real-time tracking),這種算法在我平時要用到運動檢測的時候一般都會直接用,原因有兩個,第一,效果確實不錯,噪聲可以很快消除,第二,opencv包含了GMM算法,可以直接調用,非常省事。

      GMM簡單講,將輸入圖像的像素與背景模型進行對比,和背景模型相似性比較高的點視為背景,和背景模型相似性比較低的點視為前景,再利用形態學的方法進行運動目標提取。混合高斯模型是由K個(基本為3到5個)單高斯模型加權組成的。在獲取新的一幀圖像之后,如果當前圖像中的像素點與該像素的K個模型中的某一個匹配度比較高,則視為背景,並將當前幀的像素作為一個新模型,更新已存在的K個模型。如果匹配度比較低,則為前景點。整個混合高斯模型算法主要是有方差和均值兩個參數,對於這兩個參數采取不同的學習機制,直接影響該算法的正確性、穩定性和收斂性。代碼網上到處都有,例如http://blog.csdn.net/pi9nc/article/details/21717669,需要的同學可以去看看。

 

三 、ViBe算法

 

      不過,我今天介紹的主角並不是GMM,而是ViBe算法。在網上各處看到ViBe算法是個很牛逼的算法,據說還把GMM給PK下去了,所以我就拜讀了原文 ViBe: a powerful random technique to estimate the background in video sequences
       ViBe算法是由Olivier Barnich 和 Marc Van Droogenbroeck在2011年提出的一種背景建模方法。該算法采用鄰域像素來創建背景模型,通過比對背景模型和當前輸入像素值來檢測前景,可以細分為三個步驟:
       第一步,初始化單幀圖像中每個像素點的背景模型。假設每一個像素和其鄰域像素的像素值在空域上有相似的分布。基於這種假設,每一個像素模型都可以用其鄰域中的像素來表示。為了保證背景模型符合統計學規律,鄰域的范圍要足夠大。當輸入第一幀圖像時,即t=0時,像素的背景模型

      其中,表示空域上相鄰的像素值,表示當前點的像素值。在N次的初始化的過程中,中的像素點被選中的可能次數為L=1,2,3,…,N。

      第二步,對后續的圖像序列進行前景目標分割操作。當t=k時,像素點的背景模型為,像素值為。按照下面判斷該像素值是否為前景。

這里上標r是隨機選的;T是預先設置好的閾值。當滿足符合背景#N次時,我們認為像素點為背景,否則為前景。

      第三步,背景模型更新方法。ViBe算法的更新在時間和空間上都具有隨機性。
      時間上的隨機性。在N個背景模型中隨機抽取一個,設為圖像,圖2-1表示了圖像的x位置及其八鄰域內的像素。當我們得到新的一幀圖像時,如果圖像中的x位置對應的像素被判斷為背景,則需要被更新。這個抽取的過程體現了時間上的隨機性。
空間上的隨機性。在的八鄰域中隨機抽取一個像素,用的來替換掉,這體現了模型更新空間上的隨機性。

    以上便是更新的過程,即用來更新及其八鄰域。采用八鄰域更新的方法,可以去除由於獲取的視頻細微抖動(攝像機抖動、目標微動)而產生的重影和誤差,讓檢測目標更加准確。

      在一般情況下,背景並不會發生較大的變化,所以每次背景模型更新的個數UpdateNum應該是相近的。因此我們把第一幀背景更新的次數InitNum作為比較值,符合下面公式則對背景模型進行重新初始化,這樣可以避免由於大面積的光照變化導致的誤判。

      視頻中的初始幀可能是包含目標的,常規的背景建模算法往往無法快速消除Ghost區域,這對於前景檢測是不利的。Vibe算法更新模型時利用了該像素值的空間傳播特性,背景模型逐漸向外擴散,這也有利於Ghost區域的更快的識別並且消除。下面以ViBe算法下的交通視頻前景檢測為例

      如圖上圖所示為ViBe算法下前景檢測的效果,紅色矩形框表示了出現的比較顯著的Ghost區域。在第10幀之前,Ghost區域殘留嚴重,隨着模型的不斷更新,Ghost區域不斷消失在第40幀以后,Ghost區域已經完全消失了。說明了Vibe算法在前景檢測和背景模型更新上的優勢。

      代碼地址:http://download.csdn.net/detail/zhuangxiaobin/7360113


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM