一直都覺得粒子濾波是個挺牛的東西,每次試圖看文獻都被複雜的數學符號搞得看不下去。乙個偶然的機會發現了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的思想也是(比如用在最簡單的直線擬合上),既然我不知道直線方程是什麼,那我就隨機的取兩個點先算個直線出來,然後再看有多少點符合我的這條直線。哪條直線能獲得最多的點的支援,哪條直線就是目標直線。想法非常簡單,但效果很好。
通俗解釋卡爾曼濾波
在學習卡爾曼濾波器之前,首先看看為什麼叫 卡爾曼 跟其他著名的理論 例如傅利葉變換,泰勒級數等等 一樣,卡爾曼也是乙個人的名字,而跟他們不同的是,他是個現代人!簡單來說,卡爾曼濾波器是乙個 optimal recursive data processing algorithm 最優化自回歸資料處理演...
通俗解釋卡爾曼濾波
假設你有兩個感測器,測的是同乙個訊號。可是它們每次的讀數都不太一樣,怎麼辦?取平均。再假設你知道其中貴的那個感測器應該準一些,便宜的那個應該差一些。那有比取平均更好的辦法嗎?加權平均。怎麼加權?假設兩個感測器的誤差都符合正態分佈,假設你知道這兩個正態分佈的方差,用這兩個方差值,此處省略若干數學公式 ...
卡爾曼濾波和粒子濾波最直白的解釋
卡爾曼濾波本來是控制系統課上學的,當時就沒學明白,也蒙混過關了,以為以後也不用再見到它了,可惜沒這麼容易,後來學計算機視覺和影象處理,發現用它的地方更多了,沒辦法的時候只好耐心學習和理解了。一直很想把學習的過程記錄一下,讓大家少走彎路,可惜總也沒時間和機會,直到今天。我一直有乙個願望,就是把抽象的理...