簡單來說,卡爾曼濾波器是一個“optimal recursive data processing algorithm(最最佳化自迴歸資料處理演算法)”。

對於解決很大部分的問題,他是最優,效率最高甚至是最有用的。

他的廣泛應用已經超過30年,包括機器人導航,控制,感測器資料融合甚至在軍事方面的雷達系統以及導彈追蹤等等。

近來更被應用於計算機影象處理,例如頭臉識別,影象分割,影象邊緣檢測等等。

卡爾曼濾波器的介紹:

假設我們要研究的物件是一個房間的溫度。

根據你的經驗判斷,這個房間的溫度是恆定的,也就是下一分鐘的溫度等於現在這一分鐘的溫度(假設我們用一分鐘來做時間單位)。

假設你對你的經驗不是100%的相信,可能會有上下偏差幾度。

我們把這些偏差看成是高斯白噪聲(white Gaussian Noise),也就是這些偏差跟前後時間是沒有關係的而且符合高斯分佈(Gaussian distribution)。

另外,我們在房間裡放一個溫度計,但是這個溫度計也不準確的,測量值會比實際值偏差。

我們也把這些偏差看成是高斯白噪聲。

好了,現在對於某一分鐘我們有兩個有關於該房間的溫度值:你根據經驗的預測值(系統的預測值)和溫度計的值(測量值)。

下面我們要用這兩個值結合他們各自的噪聲來估算出房間的實際溫度值。

假如我們要估算k時刻的實際溫度值。首先你要根據k-1時刻的溫度值,來預測k時刻的溫度。因為你相信溫度是恆定的,所以你會得到k時刻的溫度預測值是跟k-1時刻一樣的,假設是23度,同時該值的高斯噪聲的偏差是5度(5是這樣得到的:如果k-1時刻估算出的最優溫度值的偏差是3,你對自己預測的不確定度是4度,他們平方相加再開方,就是5)。然後,你從溫度計那裡得到了k時刻的溫度值,假設是25度,同時該值的偏差是4度。

由於我們用於估算k時刻的實際溫度有兩個溫度值,分別是23度和25度。究竟實際溫度是多少呢?相信自己還是相信溫度計呢?究竟相信誰多一點,我們可以用他們的協方差(covariance)來判斷。因為Kg=5^2\/(5^2+4^2),所以Kg=0.61,我們可以估算出k時刻的實際溫度值是:23+0.61*(25-23)=24.22度。可以看出,因為溫度計的協方差(covariance)比較小(比較相信溫度計),所以估算出的最優溫度值偏向溫度計的值。

現在我們已經得到k時刻的最優溫度值了,下一步就是要進入k+1時刻,進行新的最優估算。到現在為止,好像還沒看到什麼自迴歸的東西出現。

對了,在進入k+1時刻之前,我們還要算出k時刻那個最優值(24.22度)的偏差。

演算法如下:((1-Kg)*5^2)^0.5=3.12。這裡的5就是上面的k時刻你預測的那個23度溫度值的偏差,得出的3.12就是進入k+1時刻以後k時刻估算出的最優溫度值的偏差(對應於上面的3)。

就是這樣,卡爾曼濾波器就不斷的把協方差(covariance)遞迴,從而估算出最優的溫度值。

他執行的很快,而且它只保留了上一時刻的協方差(covariance)。

上面的Kg,就是卡爾曼增益(Kalman Gain)。他可以隨不同的時刻而改變他自己的值,是不是很神奇!

在航天領域,卡爾曼濾波是一種殿堂級的理論,應用的