1 简介
在智能监控系统中,通过帧差法对运动物体的识别,定位,利用卡尔曼滤波算法对目标运动进行预测,跟踪,从而控制摄像头转动,跟踪目标物,使目标物体始终出现监控画面的中心.在此采用卡尔曼滤算法,进行目标运动的预估,利用Matlab对其仿真.仿真结果显示跟踪效果非常好,证明采用该算法来跟踪动目标物有效可行,具有一定的研究价值.
2 部分代码
%使用卡尔曼滤波方法对飞行航班进行轨迹预测
%数据来源:
%航 班:CES9937 宁波栎社国际机场飞往成都双流国际机场
%飞行时间:
%说明:取起飞后,前20组数据作为实验数据。对时间点进行近似取值,假设每隔30s上报一次数据
clear;
clc;
%采样点的个数
N=228;
%测试数据:纬度
latitude=load('C:\Users\lenovo\Desktop\基于MATLAB的运动轨迹预测,卡尔曼滤波实现\latitude.txt');
%真实维度值
lat=latitude;
%卡尔曼滤波处理的状态,即估计值
lat_kf=zeros(1,N);
%测报值
lat_z=zeros(1,N);
P=zeros(1,N);
%初始纬度值
lat(1)=29.8131;
%初始值的协方差
P(1)=0.09;
%初始测报值
lat_z(1)=29.8027;
%初始估计状态。假设和初始测报值相同
lat_kf(1)=lat_z(1);
%噪声方差
%系统噪声方差
Q=0.1;
%测量噪声方差
R=0.001;
%方差决定噪声大小
W=sqrt(Q)*randn(1,N);
V=sqrt(R)*randn(1,N);
end
%计算误差
%测量值与真实值之间的偏差
Err_Messure=zeros(1,N);
%kalman估计与真实值之间的偏差
Err_Kalman=zeros(1,N);
for k=1:N
Err_Messure(k)=abs(lat_z(k)-lat(k));
Err_Kalman(k)=abs(lat_kf(k)-lat(k));
end
t=1:N;
%滤波效果图
figure
plot(t,lat,'g-',t,lat_z,'b-',t,lat_kf,'r-');
legend('真实值','观测值','kalman滤波值');
xlabel('测报时间点');
ylabel('纬度值');
%误差分析图
figure
plot(t,Err_Messure,'b-',t,Err_Kalman,'r-');
legend('测报偏差','kalman滤波偏差');
xlabel('测报时间点');
ylabel('纬度偏差值');
3 仿真结果
4 参考文献
[1]张长春, 黄英, & 杨刚. (2009). 卡尔曼滤波在跟踪运动目标中的应用及仿真. 现代电子技术(20), 54-56.
部分理论引用网络文献,若有侵权联系博主删除。
5 MATLAB代码与数据下载地址
见博客主页