一直都覺得粒子濾波是個挺牛的東西,每次試圖看文獻都被複雜的數學符號搞得看不下去。乙個偶然的機會發現了rob hess(實現的這個粒子濾波。從**入手,一下子就明白了粒子濾波的原理。根據維基百科上對粒子濾波的介紹(粒子濾波其實有很多變種,rob hess實現的這種應該是最基本的一種,sampling importance resampling (sir),根據重要性重取樣。下面是我對粒子濾波實現物體跟蹤的演算法原理的粗淺理解:
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
(2)->(3)->(4)->(2)如是反覆迴圈,即完成了目標的動態跟蹤。
根據我的粗淺理解,粒子濾波的核心思想是隨機取樣+重要性重取樣。既然我不知道目標在**,那我就隨機的撒粒子吧。撒完粒子後,根據特徵相似度計算每個粒子的重要性,然後在重要的地方多撒粒子,不重要的地方少撒粒子。所以說粒子濾波較之蒙特卡洛濾波,計算量較小。這個思想和ransac演算法真是不謀而合。ransac的思想也是(比如用在最簡單的直線擬合上),既然我不知道直線方程是什麼,那我就隨機的取兩個點先算個直線出來,然後再看有多少點符合我的這條直線。哪條直線能獲得最多的點的支援,哪條直線就是目標直線。想法非常簡單,但效果很好。
from
基於粒子濾波的物體跟蹤
一直都覺得粒子濾波是個挺牛的東西,每次試圖看文獻都被複雜的數學符號搞得看不下去。乙個偶然的機會發現了rob hess 實現的這個粒子濾波。從 入手,一下子就明白了粒子濾波的原理。根據維基百科上對粒子濾波的介紹 粒子濾波其實有很多變種,rob hess實現的這種應該是最基本的一種,sampling i...
基於粒子濾波的物體跟蹤
一直都覺得粒子濾波是個挺牛的東西,每次試圖看文獻都被複雜的數學符號搞得看不下去。乙個偶然的機會發現了rob hess 實現的這個粒子濾波。從 入手,一下子就明白了粒子濾波的原理。根據維基百科上對粒子濾波的介紹 粒子濾波其實有很多變種,rob hess實現的這種應該是最基本的一種,sampling i...
基於粒子濾波的SLAM GMapping 演算法分析
1 階段 粒子濾波首先根據狀態轉移函式 生成大量的取樣,這些取樣就稱之為粒子,利用這些粒子的加權和來逼近後驗概率密度。2 校正階段 隨著觀測值的依次到達,為每個粒子計算相應的重要性權值。這個權值代表了 的位姿取第個粒子時獲得觀測的概率。如此這般下來,對所有粒子都進行這樣乙個評價,越有可能獲得觀測的粒...