【opencv實踐】easy卡爾曼濾波上:淺談

前言

前幾天有個小夥伴問我卡爾曼濾波,但奈何才疏學淺,我也不會.不過在幾天惡補之後,我覺得我可以跟大家來聊一聊卡爾曼濾波啦。

在網上逛了很多相關的文章,也在幾本書上找到相關內容看了一下,逛了一圈之後除了個別很獨到的見解之外,很多其實講來講去都那麼點東西。文中有些地方也引用了一些別人的說法,因爲說的太好了,我都註明出處了。

這篇文我們先輕鬆愉快簡單的聊一聊卡爾曼濾波,來幫助奠定一下對它的認識,後面會連續出它的數學公式以及一個實踐應用。

正文

說起卡爾曼濾波,我先想起來的就是opencv中的均值濾波啊,高斯濾波啊,中值濾波啊等等,想來以爲卡爾曼濾波也是一種濾波操作。

但後來在一套非常簡短易懂的無人駕駛科普視頻裏,看到它說用卡爾曼濾波進行預測。身邊也有視覺組的同學提到用卡爾曼濾波進行目標檢測的預測。

那既然卡爾曼濾波是用來預測的,爲啥不叫卡爾曼預測,非得叫卡爾曼濾波呢?其實,卡爾曼濾波就是一種降噪的濾波算法,只不過它可以起到一定的預測效果。

那卡爾曼濾波算法處理的對象是誰呢?

從最高層面上說處理的是動態模型(dynamic model),而動態模型有可以細分爲:

離散狀態分佈模型,處理這類模型我們用的就是機器學習裏我看不下去的那個隱馬爾科夫模型(HMM)進行處理。

比如輸入法,你輸入一個字,輸入法會給你推薦下一個字,這就可以用HMM機器學習來做(當然,可能還有其他複雜的東西)。

線性高斯模型,處理這類模型,我們就用大名鼎鼎的我稍微能看懂一丟丟的卡爾曼濾波算法來處理了。這類模型數據是線性的,噪聲分佈是高斯分佈的。

再有就是非線性非高斯模型了,處理這類模型,我們可以用擴展卡爾曼濾波來做。

卡爾曼濾波問世之後,他的創作者魯道夫.E.卡爾曼在一次訪問NASA埃姆斯研究中心時,發現這種方法能幫助解決阿波羅計劃的軌道預測問題,最終,飛船正確駛向月球,完成了人類歷史上的第一次登月。

來看看大佬長什麼樣子:
在這裏插入圖片描述

那我們可以想想飛行器登月這個不可思議的神話故事,飛行器飛向太空,不停的用各種傳感器來測量自己的位置,希望自己在預定軌道上。
但由於傳感器的噪聲影響,雖然它一直在測量和調整,但仍有可能慢慢偏離預定軌道(更何況是在漫長的太空飛行中,偏離一點也會有很大區別)。

所以飛行器用傳感器測量了當前Xk時刻它的當前位置(由於傳感器噪聲所以不準確),卡爾曼濾波算法根據上一次Xk-1時刻的傳感器測量值,來預測了下一次Xk的飛行器可能的位置分佈(但肯定也不準)。

再將Xk時間的模型預測值和傳感器測量值進行了融合,從而濾掉傳感器的噪聲,進而得到更爲準確的位置座標。

說了這麼多,你能理解卡爾曼濾波爲啥在叫濾波的時候,又說它可以預測了吧?

但是你肯定還不能體會到卡爾曼濾波的妙處:

假設你有兩個傳感器甚至多個,測的是同一個信號。可是它們每次的讀數都不太一樣,怎麼辦?

—— 取平均。
再假設你知道其中貴的那個傳感器應該準一些,便宜的那個應該差一些。那有比取平均更好的辦法嗎?

——加權平均。

假設你只有一個傳感器,但是你還有一個數學模型。模型可以幫你算出一個值,但也不是那麼準。怎麼辦?
—— 把模型算出來的值,和傳感器測出的值,(就像兩個傳感器那樣),取加權平均,也就是卡爾曼濾波。

出自知乎知友Kent Zeng

好了,下面我們看一篇文章裏總結的圖解:
出自鏈接:
【SLAM】卡爾曼濾波:究竟濾了誰?
首先通過上一時刻的狀態預測得到當前時刻的狀態分佈(圖a),然後通過傳感器得到測量數據(圖b加粗)。

在這裏插入圖片描述
結合測量數據調整更新,得到當前時刻最終的狀態分佈(圖c加粗)。然後通過控制數據,接着預測下一時刻的狀態分佈(圖d加粗)。
在這裏插入圖片描述

獲取下一時刻的測量數據之後(圖e加粗),綜合得到下一時刻估計的狀態分佈(圖f加粗)。

在這裏插入圖片描述

我們可以看到,測量值和預測值都是高斯分佈,高斯分佈到底是啥:

一個標準一維高斯鐘形曲線方程如下所示:
在這裏插入圖片描述
而且預測過程是迭代的,漸進的,我們通過上一時間預測當前時間狀態,再由當前狀態預測下一狀態。

實際中,真真正正的服從高斯分佈的噪聲是很少存在的,但我們將卡爾曼濾波應用到大部分噪聲中是都有很好效果的。

最後呢,我在文末給大家羅列並介紹一下參看的資料,大家有興趣可以翻看一下,也可以看我出的後續的數學以及應用方面的博文,也就是:

【opencv實踐】easy卡爾曼濾波中:數學原理加簡單例子

【opencv實踐】easy卡爾曼濾波下:opencv實踐應用

作者介紹

在這裏插入圖片描述

參考:

文章:
卡爾曼濾波(Kalman filtering)小結:

濾波算法(四)—— 卡爾曼濾波算法

對Kalman(卡爾曼)濾波器的理解

mpu6050姿態解算與卡爾曼濾波(2)卡爾曼濾波

高斯噪聲和高斯白噪聲相關介紹

圖解卡爾曼濾波

【SLAM】卡爾曼濾波:究竟濾了誰?
書籍:
《統計學習方法》第十章隱馬爾科夫模型
《學習opencv3》第17章跟蹤
《視覺SLAM十四講》第十講:後端

這三本書大家沒有的可以去公衆號【行走的機械人】回覆【卡爾曼濾波書籍】領取電子版。也可以回覆【電子書資源】,裏面有好幾G的電子書,包括這三本。

視頻教程:

徐亦達機器學習:Kalman Filter 卡爾曼濾波【2015年版-全集】

詳解卡爾曼濾波

卡爾曼濾波硬核原理解析

【帥器學習/柏欣】卡爾曼濾波

如果大家覺得有幫助,就請點個贊再走叭!如果有不明白的地方或者表述錯誤的地方,歡迎評論區留言。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章