粒子濾波在目標跟蹤的應用

2021-08-02 01:28:35 字數 1254 閱讀 3245

一直都覺得粒子濾波是個挺牛的東西,每次試圖看文獻都被複雜的數學符號搞得看不下去。乙個偶然的機會發現了rob hess(實現的這個粒子濾波。從**入手,一下子就明白了粒子濾波的原理。根據維基百科上對粒子濾波的介紹(粒子濾波其實有很多變種,rob hess實現的這種應該是最基本的一種,sampling importance resampling (sir),根據重要性重取樣。下面是我對粒子濾波實現物體跟蹤的演算法原理的粗淺理解:

該階段要人工指定跟蹤目標,程式計算跟蹤目標的特徵,比如可以採用目標的顏色特徵。具體到rob hess的**,開始時需要人工用滑鼠拖動出乙個跟蹤區域,然後程式自動計算該區域色調(hue)空間的直方圖,即為目標的特徵。直方圖可以用乙個向量來表示,所以目標特徵就是乙個n*1的向量v。

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

我們放出去的一條條聰明的狗向我們發回報告,「一號狗處影象與目標的相似度是0.3」,「二號狗處影象與目標的相似度是0.02」,「三號狗處影象與目標的相似度是0.0003」,「n號狗處影象與目標的相似度是0.013」…那麼目標究竟最可能在**呢?我們做次加權平均吧。設n號狗的影象畫素座標是(xn,yn),它報告的相似度是wn,於是目標最可能的畫素座標x = sum(xn*wn),y = sum(yn*wn).

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

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

粒子濾波目標跟蹤

1 初始化階段 提取跟蹤目標特徵 該階段要人工指定跟蹤目標,程式計算跟蹤目標的特徵,比如可以採用目標的顏色特徵。具體到rob hess的 開始時需要人工用滑鼠拖動出乙個跟蹤區域,然後程式自動計算該區域色調 hue 空間的直方圖,即為目標的特徵。直方圖可以用乙個向量來表示,所以目標特徵就是乙個n 1的...

從meanshift目標跟蹤到粒子濾波

在初學均值漂移演算法的時候,有個總體印象,就是演算法希望通過尋找密度最大的位置作為收斂位置,用白話講,其實就是要找乙個區域內的重心而已,這個重心為什麼不是區域的所有粒子的平均呢?因為每個粒子還帶個權重,這個權重我們用物理力學中的重心公式想想就明白,權重代表每個粒子對重心的貢獻程度,那麼,做個最極端的...

粒子濾波目標跟蹤原理(不帶公式)

參考 1.基本思想 粒子濾波本質上是一種表示概率分布的方法,思想和蒙特卡洛方法近似。蒙特卡洛方法是用頻率來近似概率,而粒子濾波方法中是使用粒子分布的密集程度來近似表示概率分布,這種方法可以形象的表示為向乙個帶磁力的平面拋灑鐵粉,磁力大 概率大 的地方鐵粉就比較密集。同樣的,如果粒子帶權重的話,也可以...