找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3047|回復(fù): 1
收起左側(cè)

卡爾曼濾波程序注解

[復(fù)制鏈接]
ID:140343 發(fā)表于 2016-9-25 10:54 | 顯示全部樓層 |閱讀模式
clear

N=200;%取200個數(shù)
w(1)=0;
w=randn(1,N);%產(chǎn)生一個1×N的行向量,第一個數(shù)為0,w為過程噪聲(其和后邊的v在卡爾曼理論里均為高斯白噪聲)
x(1)=0;%狀態(tài)x初始值
a=1;%a為狀態(tài)轉(zhuǎn)移陣,此程序簡單起見取1
for k=2:N
    x(k)=a*x(k-1)+w(k-1);  %系統(tǒng)狀態(tài)方程,k時刻的狀態(tài)等于k-1時刻狀態(tài)乘以狀態(tài)轉(zhuǎn)移陣加噪聲(此處忽略了系統(tǒng)的控制量)
end
V=randn(1,N);%測量噪聲
q1=std(V);      
Rvv=q1.^2;        
q2=std(x);      
Rxx=q2.^2; %此方程未用到Rxx      
q3=std(w);      
Rww=q3.^2; %Rvv、Rww分別為過程噪聲和測量噪聲的協(xié)方差(此方程只取一組數(shù)方差與協(xié)方差相同)      
c=0.2;
Y=c*x+V;%量測方差,c為量測矩陣,同a簡化取為一個數(shù)
p(1)=0;%初始最優(yōu)化估計協(xié)方差
s(1)=0;%s(1)表示為初始最優(yōu)化估計
for t=2:N
    p1(t)=a.^2*p(t-1)+Rww;%p1為一步估計的協(xié)方差,此式從t-1時刻最優(yōu)化估計s的協(xié)方差得到t-1時刻到t時刻一步估計的協(xié)方差
    b(t)=c*p1(t)/(c.^2*p1(t)+Rvv);%b為卡爾曼增益,其意義表示為狀態(tài)誤差的協(xié)方差與量測誤差的協(xié)方差之比(個人見解)
    s(t)=a*s(t-1)+b(t)*(Y(t)-a*c*s(t-1));%Y(t)-a*c*s(t-1)稱之為新息,是觀測值與一步估計得到的觀測值之差,此式由上一時刻狀態(tài)的最優(yōu)化估計s(t-1)得到當(dāng)前時刻的最優(yōu)化估計s(t)  
p(t)=p1(t)-c*b(t)*p1(t);%此式由一步估計的協(xié)方差得到此時刻最優(yōu)化估計的協(xié)方差
end
t=1:N;
plot(t,s,'r',t,Y,'g',t,x,'b');%作圖,紅色為卡爾曼濾波,綠色為量測,藍色為狀態(tài)
%整體來說,此卡爾曼程序就是一個循環(huán)迭代的過程,給出初始的狀態(tài)x和協(xié)方差p,得到下一時刻的x和p,循環(huán)帶入可得到一系列的最優(yōu)的狀態(tài)估計值,此方法通常用于目標(biāo)跟蹤和定位。
%本人研究方向與此有關(guān),有興趣可以交流下



在cnki上下篇kalman目標(biāo)跟蹤的碩士論文吧,很多的,當(dāng)然期刊也可以,不過一般情況下碩士論文講的能詳細點,然后找準(zhǔn)一篇仔細研讀,這樣子基本上理論就沒啥問題了,編程就用MATLAB,用C很麻煩,很多算法都沒有得自己從頭編,matlab集成了很多的算法的,只要找出來調(diào)用就行了。

這里給你說下kalman跟蹤的思路吧:

0.如果你的視頻是實際錄得話,為防止檢測到偽目標(biāo),首先要對輸入的圖像進行濾波,簡單的有中值均值濾波。

1.對視頻序列采用背景差分或幀間差分就可以得到運動區(qū)域了,這里重點就是背景建模,如果嫌麻煩也就別看什么單高斯或多高斯的了,直接找一個空幀(沒有運動目標(biāo))當(dāng)背景就OK了,差分后就有了運動區(qū)域,然后二值化方便以后的處理。然后視有沒有陰影而進行陰影去除的工作。

2.上邊這步也就是檢測出了運動區(qū)域,按你的檢測出來是要給邊邊畫圈,這個在matlab上好好研究研究怎樣提取目標(biāo)邊緣的點,在原位圖圖上把邊緣的點改變成一個同像素值就行了,這樣檢測就完了。

3.跟蹤,首先得找到目標(biāo)的中心,因為目標(biāo)不只是一個像素,必須有一個中心來表示它的坐標(biāo)位置,這個方法自己想啦,什么取均值求外接矩形中心啊都可以的,然后每一幀都這么做就有一系列的中心坐標(biāo)了。

4.Kalman,Kalman的作用還是以濾波為主,相當(dāng)于把第三步的那些坐標(biāo)都當(dāng)成信號序列,用Kalman濾波,邊檢測邊濾波,kalman主要記住那5個公式,知道它的遞推過程就基本能編出來了,至于濾波器參數(shù)就在參考文獻里找吧,編出來kalman部分的程序沒多少行的,別怕。

5.如果是多目標(biāo)跟蹤的話就進行目標(biāo)匹配的工作,相當(dāng)于每幀都檢測出兩個目標(biāo),你要知道最新一幀中的每個分別對應(yīng)的是前邊幀的哪個目標(biāo)。

上邊這些給你一個大體的思路,你根據(jù)自己的任務(wù)選擇做哪些工作,這個題目不難的,要有信心。


回復(fù)

使用道具 舉報

ID:165291 發(fā)表于 2024-5-16 09:21 | 顯示全部樓層
看不懂。。。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表