卡爾曼濾波和粒子濾波最直白的解釋

2021-06-23 04:20:32 字數 1760 閱讀 6353

卡爾曼濾波本來是控制系統課上學的,當時就沒學明白,也蒙混過關了,以為以後也不用再見到它了,可惜沒這麼容易,後來學計算機視覺和影象處理,發現用它的地方更多了,沒辦法的時候只好耐心學習和理解了。一直很想把學習的過程記錄一下,讓大家少走彎路,可惜總也沒時間和機會,直到今天。。。

我一直有乙個願望,就是把抽象的理論具體化,用最直白的方式告訴大家--不提乙個生澀的詞,不寫乙個數學公式,像講故事一樣先把道理說明白,需要知道細節的同學可以自己去查所有需要知道的一切。因為學習的過程告訴我,最難的其實是最初和這個理論和應用背景親和的過程--這些理論它究竟是做什麼的,又是怎麼做到的。可惜我們能看到的關於這些理論的資料大多數都是公式的堆砌並且假定我們明白許多「基本的道理」,其實這些「基本的道理」往往是我們最難想象和超越的。以卡爾曼濾波為例,讓我們嘗試一種不同的學習方法。

相信所有學習卡爾曼濾波的同學首先接觸的都是狀態方程和觀測方程,學過控制系統的同學可能不陌生,否則,先被那兩個看起來好深奧的公式給嚇跑了,關鍵是還不知道他們究竟是幹什麼的,什麼是狀態,什麼是觀測。。。。。。如果再看到後面的一大串遞迴推導增益,實在很暈很暈,更糟糕的是還沒整明白的時候就已經知道卡爾曼濾波其實已經不夠使了,需要extended kalmanfilter和particle filter了。。。

其實我們完全不用理會這些公式。先來看看究竟卡爾曼濾波是做什麼的,理解了卡爾曼濾波,下面的就順其自然了。

用一句最簡單的話來說,卡爾曼濾波是來幫助我們做測量的,大家一定不明白測量幹嘛搞那麼複雜?測量長度拿個尺子比一下,測量溫度拿溫度表測一下不就完了嘛。的確如此,如果你要測量的東西很容易測準確,沒有什麼隨機干擾,那真的不需要勞駕卡爾曼先生。但在有的時候,我們的測量因為隨機干擾,無法準確得到,卡爾曼先生就給我們想了個辦法,讓我們在干擾為高斯分布的情況下,得到的測量均方誤差最小,也就是測量值擾動最小,看起來最平滑。

還是舉例子最容易明白。我最近養了只小兔子,忍不住拿小兔子做個例子嘻嘻。

有了這個權值,下面的事情就很好辦了。很顯然卡爾曼先生是利用多次觀察和估計來達到目的的,我們也只能一步一步地調整我們的觀察和估計值,來漸漸達到準確的測量,所以整個演算法是遞迴的,需要多次重複調整的。調整的過程也很簡單,就是把實測值(稱出來的體重)和估計值(書上得來的體重)比較一下,如果估計值比測量值小,那就把估計值加上他們之間的偏差作為新的估計值,當然前面要加個係數,就是我們前面說的加權係數,這個地方我要寫個公式,因為很簡單就能說明白

比如我們的觀查值是z,估計值是x,那麼新的估計值就應該是xnew =  x  + k ( z-x),從這個公式可以看到,如果x估計小了,那麼新的估計值會加上乙個量k ( z-x), 如果估計值大了,大過z了,那麼新的估計值就會減去乙個量k ( z-x),這就保證新的估計值一定比現在的準確,一次一次遞迴下去就會越來越準卻了,當然這裡面很有作用的也是這個k,也就是我們前面說的權值,書上都把他叫卡爾曼增益。。。(xnew  =  x  + k ( z-x) = x ×(1-k) + kz ,也就是說估計值x的權值是1-k,而觀察值z的權值是k,究竟k 取多大,全看估計值和觀察值以前的表現,也就是他們的方差情況了)

發現把乙個問題講明白還真不是件容易的事情,誰聽明白了我佩服誰,因為我已經把自己講糊塗了哈

順便就把extendedkalman filter和particle filter提一下,因為高斯模型有時不適用,於是有了extended kalman filter,而particle filter是用於多個物件的,比如除了兔子我還有只貓,他們的體重有乙個聯合概率模型,每乙個物件就是乙個particle。無論是卡爾曼濾波還是particle濾波,都是概率分布傳遞的過程,卡爾曼傳遞的是高斯分布,particle filter 傳遞的是高斯混合分布,每乙個峰代表乙個動物在我們的例子。

關於卡爾曼濾波和粒子濾波最直白的解釋

相信所有學習卡爾曼濾波的同學首先接觸的都是狀態方程和觀測方程,學過控制系統的同學可能不陌生,否則,先被那兩個看起來好深奧的公式給嚇跑了,關鍵是還不知道他們究竟是幹什麼的,什麼是狀態,什麼是觀測。如果再看到後面的一大串遞迴推導增益,實在很暈很暈,更糟糕的是還沒整明白的時候就已經知道卡爾曼濾波其實已經不...

對無跡卡爾曼濾波 UKF 和粒子濾波 PF 的理解

對無跡卡爾曼濾波 ukf 的總結 ekf通過在工作點附近進行一階泰勒展開來線性化非線性的運動方程和觀測方程。這樣的線性近似在高度非線性的情況下存在較大誤差。而ukf換了乙個線性化的思路。1 選取2n 1個點 sigma點 n為狀態向量的維度。為每個sigma點分配權重。2 用取樣的點計算出下一狀態的...

我對卡爾曼濾波的簡單直白的理解

先用感性的語言來描述一下我的理解 卡爾曼濾波是基於前乙個可信度以及輸入值與 值的偏差來對當前可信度進行計算,得到可信度後計算出當前值。卡爾曼模型認為,輸入值的誤差是呈正態分佈的。貼matlab 具體內容可以看注釋。clear close all hold on grid on axis equal ...