粒子濾波實現物體跟蹤

粒子濾波實現物體跟蹤的算法原理:

1)初始化階段-提取跟蹤目標特徵

該階段要人工指定跟蹤目標,程序計算跟蹤目標的特徵,比如可以採用目標的顏色特徵。具體到Rob Hess的代碼,開始時需要人工用鼠標拖動出一個跟蹤區域,然後程序自動計算該區域色調(Hue)空間的直方圖,即爲目標的特徵。直方圖可以用一個向量來表示,所以目標特徵就是一個N*1的向量V。

2)搜索階段-放狗

好,我們已經掌握了目標的特徵,下面放出很多條狗,去搜索目標對象,這裏的狗就是粒子particle。狗有很多種放法。比如,a)均勻的放:即在整個圖像平面均勻的撒粒子(uniform distribution);b)在上一幀得到的目標附近按照高斯分佈來放,可以理解成,靠近目標的地方多放,遠離目標的地方少放。Rob Hess的代碼用的是後一種方法。狗放出去後,每條狗怎麼搜索目標呢?就是按照初始化階段得到的目標特徵(色調直方圖,向量V)。每條狗計算它所處的位置處圖像的顏色特徵,得到一個色調直方圖,向量Vi,計算該直方圖與目標直方圖的相似性。相似性有多種度量,最簡單的一種是計算sum(abs(Vi-V)).每條狗算出相似度後再做一次歸一化,使得所有的狗得到的相似度加起來等於1.

3)決策階段

我們放出去的一條條聰明的狗向我們發回報告,“一號狗處圖像與目標的相似度是0.3”,“二號狗處圖像與目標的相似度是0.02”,“三號狗處圖像與目標的相似度是0.0003”,“N號狗處圖像與目標的相似度是0.013”...那麼目標究竟最可能在哪裏呢?我們做次加權平均吧。設N號狗的圖像像素座標是(Xn,Yn),它報告的相似度是Wn,於是目標最可能的像素座標X = sum(Xn*Wn),Y = sum(Yn*Wn).

4)重採樣階段Resampling

既然我們是在做目標跟蹤,一般說來,目標是跑來跑去亂動的。在新的一幀圖像裏,目標可能在哪裏呢?還是讓我們放狗搜索吧。但現在應該怎樣放狗呢?讓我們重溫下狗狗們的報告吧。“一號狗處圖像與目標的相似度是0.3”,“二號狗處圖像與目標的相似度是0.02”,“三號狗處圖像與目標的相似度是0.0003”,“N號狗處圖像與目標的相似度是0.013”...綜合所有狗的報告,一號狗處的相似度最高,三號狗處的相似度最低,於是我們要重新分佈警力,正所謂好鋼用在刀刃上,我們在相似度最高的狗那裏放更多條狗,在相似度最低的狗那裏少放狗,甚至把原來那條狗也撤回來。這就是Sampling Importance Resampling,根據重要性重採樣(更具重要性重新放狗)。

(2)->(3)->(4)->(2)如是反覆循環,即完成了目標的動態跟蹤。

  粒子濾波的核心思想是隨機採樣+重要性重採樣。既然我不知道目標在哪裏,那我就隨機的撒粒子吧。撒完粒子後,根據特徵相似度計算每個粒子的重要性,然後在重要的地方多撒粒子,不重要的地方少撒粒子。所以說粒子濾波較之蒙特卡洛濾波,計算量較小。這個思想和RANSAC算法真是不謀而合。RANSAC的思想也是(比如用在最簡單的直線擬合上),既然我不知道直線方程是什麼,那我就隨機的取兩個點先算個直線出來,然後再看有多少點符合我的這條直線。哪條直線能獲得最多的點的支持,哪條直線就是目標直線。想法非常簡單,但效果很好。

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