理解粒子濾波(particle filter)

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

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

2)搜索階段-放狗對象

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

3)決策階段form

咱們放出去的一條條聰明的狗向咱們發回報告,「一號狗處圖像與目標的類似度是0.3」,「二號狗處圖像與目標的類似度是0.02」,「三號狗處圖像與目標的類似度是0.0003」,「N號狗處圖像與目標的類似度是0.013」...那麼目標究竟最可能在哪裏呢?咱們作次加權平均吧。設N號狗的圖像像素座標是(Xn,Yn),它報告的類似度是Wn,因而目標最可能的像素座標X = sum(XnWn),Y = sum(YnWn).搜索

4)重採樣階段Resampling循環

既然咱們是在作目標跟蹤,通常說來,目標是跑來跑去亂動的。在新的一幀圖像裏,目標可能在哪裏呢?仍是讓咱們放狗搜索吧。但如今應該怎樣放狗呢?讓咱們重溫下狗狗們的報告吧。「一號狗處圖像與目標的類似度是0.3」,「二號狗處圖像與目標的類似度是0.02」,「三號狗處圖像與目標的類似度是0.0003」,「N號狗處圖像與目標的類似度是0.013」...綜合全部狗的報告,一號狗處的類似度最高,三號狗處的類似度最低,因而咱們要從新分佈警力,正所謂好鋼用在刀刃上,咱們在類似度最高的狗那裏放更多條狗,在類似度最低的狗那裏少放狗,甚至把原來那條狗也撤回來。這就是Sampling Importance Resampling,根據重要性重採樣(更具重要性從新放狗)。程序

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

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

相關文章
相關標籤/搜索