资源描述
《检测与估值》
结课论文
院 系:
专 业:
年级班级:
学 号:
姓 名:
指导教师:
论文评分:
软件与通信工程学院
通信工程
101班
0103796
郝彩虹
戴利云
2013-6-28
利用Kalman滤波进行轨迹预测
郝彩虹
( 江西财经大学软件与通信工程学院,江西南昌,330013)
摘要:Kalman自从20世纪60年代初问世以来,Kalman滤波器在各个领域都有广泛的应用,随着研究的深入,卡尔曼滤波技术越来越多地应用于各个领域,如航天器的轨道计算、雷达目标跟踪、生产过程的自动控制等.卡尔曼滤波作为一种最优状态估计方法,可以应用于受随机干扰的动态系统。准确地说,卡尔曼滤波器给出了一种递推算法,由实时获得的受噪声污染的离散观测数据,对系统状态进行线性、无偏及最小误差方差的最优估计。该算法已经广泛应用于工业和控制的许多领域,如视频和激光跟踪系统、卫星导航、弹道导弹轨迹估计、雷达和火力控制等。随着最近高速计算机的发展,卡尔曼滤波的应用将更加广泛,特别是在更加复杂的实时应用中。卡尔曼滤波器在机动目标跟踪中具有良好的性能,但以Kalman滤波方法预测的过程需要对目标的运动方程有准确了解而且要求系统的过程与测量噪声为高斯噪声且相互独立,这在实时跟踪过程中都是很难满足的.本文利用基于Matlab编程的Kalman滤波改进算法实现目标预测跟踪,并绘出目标质心轨迹坐标.
关键词:目标跟踪;目标匹配;Kalman滤波;Matlab
Trajectory prediction using Kalman filter
haocaihong
( the university of jiangxicaijingdaxue,jiangxisheng,nanchangshi,330013 )
Abstract:The Kalman filter has been widely used in various fields, such as spacecraft orbit calculation, radar target tracking, automatic control of the production process. Calman filter has a good performance in maneuvering target tracking, it is a kind of optimal estimation and for recursive computation. But the prediction process with Kalman filtering to the equations of motion the objectives of the process and measurement noise in understanding and requirements of the system for the Gauss noise and independent of each other, it is very difficult to meet in the real-time tracking process. In this paper, by using the improved algorithm to achieve the target prediction tracking based on the Kalman filter Matlab programming, and draw the target centroid trajectory coordinates.
Keyword:Target tracking; object matching; Kalman filter; Matlab
引 言
目标跟踪一直是人们关心的热点问题,Kal—man滤波预测凭借其跟踪精度较高在跟踪中备受青睐.运动目标的检测识别与跟踪技术是目迅速发展的一个研究领域,把图像处理技术与Kalman滤波算法结合起来也是目标跟踪的一个研究方向.图像运动目标的识别就是指在视频序列中提取每一帧图像的运动目标的信息.运动目标检测和跟踪的研究内容相当丰富,主要涉及到计算机可视化、机器人视觉、智能控制、模式识别等领域.运动目标分析在高级人机交互、视频会议、自动化工业、安全监控和图像检索方面有着广阔的应用背景和潜在的经济价值,本文就此问题进行研究。本文首先介绍了滤波方程的基本推导。该方案的优势是通过假设某些矩阵非奇异,可以很好地理解卡尔曼滤波的最优性。当然通过应用广为人知的正投交投影方法,有时也称之为新息方法,可以不需要这些假设。然后将该方法进行扩展来处理系统和量测噪声相关的问题,以及有色噪声问题。本书还讨论了针对非线性系统的卡尔曼滤波及其在自适应系统辨识中的应用。此外,介绍了实时应用中的极限或稳态卡尔曼滤波理论、序贯算法和平方根算法等高效计算方法。卡尔曼滤波一个典型的应用是数字跟踪滤波器设计,如αβγ和αβγθ跟踪器。对于白噪声,应用卡尔曼增益的极限值来定义α、β和γ参数,对于有色噪声则为α、β、γ和θ,可以将该跟踪滤波器描述为极限或稳态卡尔曼滤波器。因为最优估计的误差随着时间以指数衰减,从这个角度看,通过这些更有效的预测校正方程得到的状态估计是近似最优的。我们还研究了一种可以得到状态向量各分量滤波方程的解耦方法。
2.算法介绍
2.1 Kalman滤波器简介
在学习卡尔曼滤波器之前,首先看看为什么叫“卡尔曼”。跟其他著名的理论(例如傅立叶变换,泰勒级数等等)一样,卡尔曼也是一个人的名字,而跟他们不同的是,他是个现代人!卡尔曼全名Rudolf Emil Kalman,匈牙利数学家,1930年出生于匈牙利首都布达佩斯。1953,1954年于麻省理工学院分别获得电机工程学士及硕士学位。1957年于哥伦比亚大学获得博士学位。
简单来说,卡尔曼滤波器是一个“optimal recursive data processing algorithm(最优化自回归数据处理算法)”。对于解决很大部分的问题,他是最优,效率最高甚至是最有用的。他的广泛应用已经超过30年,包括机器人导航,控制,传感器数据融合甚至在军事方面的雷达系统以及导弹追踪等等。近年来更被应用于计算机图像处理,例如头脸识别,图像分割,图像边缘检测等等。
2.2 Kalman滤波算法介绍
在这一部分,我们就来描述源于Dr Kalman 的卡尔曼滤波器。下面的描述,会涉及一些基本的概念知识,包括概率(Probability),随即变量(Random Variable),高斯或正态分配(Gaussian Distribution)还有State-space Model等等。
Kalman滤波方法是Rudolf EmilKalman在20世纪60年代初提出的一种时域方法.它基于状态空间模型来解决最优滤波问题,最终将问题归结为计算或求解Riccati方程。Kalman滤波器是一个对动态系统的状态序列进行线性最小方差估计的算法,采用递归滤波的方法,可以任意一点作为观测起点.
状态方程:
式中,向量x(n)表示系统在离散时间n的状态向量,它是不可观测的;矩阵F(n+1,n)成为状态转移矩阵,描述动态系统在时间n的状态到n+1的状态之间的转移,应为已知。而向量 为过程噪声向量,它描述状态转移中间的加性噪声或误差。
观测方程:
式中,向量y(n)表示动态系统在时间n的观测向量, 矩阵C(n)称为观测矩阵(描述状态经过其作用,变成可预测的),要求也是已知的;表示观测噪声向量,其维数与观测向量的相同。过程方程也称为状态方程,为了分析的方便,通常假定过程噪声v1(n)和观测噪声均为零均值的白噪声过程,它们的相关矩阵分别为:
还假设状态的初始值x(0)与 、 ,均不相关,并且噪声向量与也不相关,既有:
2.3算法原理
Kalman滤波原理框图
系统前一时刻状态最优值和系统前一时刻方差
系统当前时刻状态的预测值和系统当前时刻状的态的预测方差
修 正
循环
得到当前时刻系统的最优值更新当前时刻方差
考虑一步预测问题,给定观测值y(1), ...,y(n-1),求观测向量y(n)的最小二乘估计,记作
(1)、新息过程的性质,(n)的新息过程定义为:
式中,向量表示观测数据y(n)的新的信息,简称新息。
新息 具有以下性质:
性质1: n时刻的新息与所有过去的观测数据y(1), ...,y(n-1)正交,即:
性质2:新息过程由彼此正交的随机向量序列{} 组成,即有:
性质3:表示观测数据的随机向量序列{y(1) ,…y(n)}与表示新息过程的随机向量序列{a(1),…a(n)} 一一对应 ,即
以上性质表明:n时刻的新息a(n)是一个与n上课之前的观测数据y(1), ...,y(n-1)不相关,并具有白噪声性质的随机过程,但它却能够提供有关y(n)的新息,这就上信息的内在物理含义。
下面分析新息过程的相关矩阵
在kalman滤波中,并不直接估计观测数据向量的进一步预测,而是先计算状态向量的一步预测
然后再用到下式得到:
将上式代入新息过程的定义式(6),可得到:
这就是新息过程的实际计算公式,条件是:一步预测的状态向量估计业已求出。
定义向量的一步预测误差:
将此式代入式(13),则有
在新息过程的相关矩阵定义式(10)中代入式(14),并注意到观测矩阵C(n)是一已知的确定矩阵故有
式中Q2(n)是观测噪声v2(n)的相关矩阵,而
表示(一步)预测状态误差的相关矩阵
2.4 Kalman滤波算法
最自然的方法是用新息过程序列a(1),…a(n)的线性组合直接构造状态向量的一布预测:
式中W1(k)表示与一步预测项对应的权矩阵,且k为离散时间。现在的问题是如何确定这个权矩阵(1)、状态向量的一布预测,根据正交性原理,最优预测的估计误差:
应该与已知值正交,故有
将式(18)代入(19),并利用新息过程的正交性,得到
由此可以求出权矩阵的表达式:
将式(20)代入式(18),状态向量的一步预测的最小均方估计可表示为
注意到 并利用状态方程(1),易知下式对k=0,1,…,n成立:
将式(22)代入式(21)右边第一项(求和项),可将其化简为:
若定义
并将式(23)和式(24)代入式(21),则得到状态向量一步预测的更新公式:
式(25)在kalman滤波算法中起着关键的作用,因为它表明,n+1时刻的状态向量的一步预测分为非自适应(即确定)部分 和自适应(即校正)部分G(n)a(n)。从这个意义上讲,G(n)称为kalman增益(矩阵)是合适的。
(2)、kalman增益的计算
为了完成kalman自适应滤波算法,需要进一步推导kalman增益的实际计算公式。由定义式(24)知,只需要推导期望项 的具体计算公式即可。
将新息过程的计算公式(13)代入式(22),不难得出:
这里使用了状态向量与观测噪声不相关的事实。进一步地,由正交原理引理知,在最小均方误差准则下求得的一步预测估 与预测误差e(n,n-1)彼此正交,即
因此,由式(26)及式(27)易得:
将式(27)代入式(24),便得到kalman增益的计算公式如下:
式中R(n)是信息过程的相关矩阵,由式(10)定义。
(3)、Riccati方程
由式(28)表示的kalman增益与预测状态误差的相关矩阵K(n,n-1)有关,为了最后完成kalman自适应滤波算法,还需要再推导K(n,n-1)的递推公式。
考察状态向量的预测误差:
将状态方程(1)和状态向量的一步预测更新公式(25)代入式(29)中,有:
将观测方程(2)代入上式,并代入 ,则有:
求式(3)所示状态向量的一步预测误差向量的相关矩阵,容易证明:
式中使用了e(n+1,n),v1(n),v2(n)彼此不相关的事实,以及 和
等关系式。对式(31)的右边进行展开,然后代入式(28)和(29),可以证明:状态向量预测误差的相关矩阵的递推公式为:
若定义 是利用已知的y(1),…,y(n)求得的状态向量的滤波估计,则
定义滤波状态向量的误差向量,可以证明:
因此,Riccati差分方程中的矩阵P(n)事实上是滤波误差状态向量的相关矩阵。
将上面推导得到的式(28)、(16)、(13)、(25)、(33)和(32)依次加以归纳,得到基于一步预测的kalman自适应滤波算法如下。
初始条件:
输入观测向量过程:
观测向量={y(1),…,y(n)}
已知参数:
状态转移矩阵F(n+1,n)
观测矩阵C(n)
过程噪声向量的相关矩阵Q1(n)
观测噪声向量的相关矩阵Q2(n)
计算:n=1,2,3,…
3.Matlab程序设计
3.1算法设计实现
(1)输入目标视频,将目标视频转化为一帧帧图片(设为前景图片),并设定相同大小的图片.
(2)将前景图片与背景图片进行差分运算,以获取检测区域.标注二值图像的连接成分,获取检测对象的图形属性,主要是获取检测目标的质心目标。
(3)计算搜索图片检测区域并提取目标,得到质心和半径最大的目标位置,输入Kalman滤波器.
(4)用Kalman滤波器预测本帧图像中目标质心在下一帧图像中的质心位置.
(5)把得到的最佳匹配位置作为下一次Kalman预测的测量值并以此更新其参数.
(6)当所有图像都经过处理后则结束运算,否则转入步骤(2).
(7)输出跟踪结果,绘出目标质心坐标图.
3.2程序流程图
显示跟踪结果绘出跟踪轨迹
Y
结束
Kalman 滤波
目标
检测
图像 差 分
开始
N
3.3kalman滤波算法的结构图
3.4 Matlab程序
(1)
clear all
close all
duration = 5;
dt = 0.1;
A = [1 dt; 0 1];
B = [dt^2/2; dt];
C = [1 0];
u_t = 10;
x_t = [0; 0];
xHat_t = x_t;
u_t_noiseMag = 0.05;
z_t_noiseMag = 10;
E_x = u_t_noiseMag^2 * [dt^4/4, dt^3/2; dt^3/2, dt^2];
E_z = z_t_noiseMag^2;
EHat_t = E_x;
p_actual = [];
v_actual = [];
z_t = [];
figure (1);
clf
for t = 0:dt:duration
Ex = u_t_noiseMag*randn*B;
x_t = A*x_t + B*u_t + Ex;
Ez = z_t_noiseMag*randn;
zHat_t = C*x_t + Ez;
p_actual = [p_actual; x_t(1)];
z_t = [z_t; zHat_t];
v_actual = [v_actual; x_t(2)];
subplot(2,1,1),plot(0:dt:t, p_actual, '-r.')
subplot(2,1,1),plot(0:dt:t, z_t, '-k.')
subplot(2,1,1),plot(0:dt:t, smooth(z_t),'-g.')
axis([0 duration -30 max(p_actual)])
hold on
end
xlabel({'Time(s)'});
ylabel({'Position(m)'});
title({'Path Tracking without Kalman Filter'});
legend('Estimation','Actual','Measured')
hold on
(2)
xHat_t1 = [];
xHat_t2 = [];
x_t = [0; 0];
E_tminus1 = E_x;
EHat_t_mag = [];
x_predic =[];
E_predic = [];
for t = 1:length(p_actual)
xHat_t = A * xHat_t + B * u_t;
EHat_t = A * EHat_t * A' + E_x;
K_t = EHat_t * C' * inv(C * EHat_t * C' + E_z);
x_t = xHat_t + K_t *(z_t(t) - C*xHat_t);
E_t = (eye(2) - K_t * C)*EHat_t;
xHat_t1 = [xHat_t1; xHat_t(1)];
xHat_t2 = [xHat_t2; xHat_t(2)];
EHat_t_mag = [EHat_t_mag; EHat_t(1)];
end
tt = 0 : dt : duration;
subplot(2,1,2),plot(tt,p_actual,'-r.',tt,z_t,'-k.', tt,xHat_t1,'-g.');
axis([0 duration -30 max(p_actual)])
legend('Actual','Measurement','Estimation')
xlabel({'Time(s)'});
ylabel({'Position(m)'});
title({'Path Tracking with Kalman Filter'});
3.4运行结果
3.结论
本文所指运动目标检测就是判断视频序列中是否存在运动目标,并确定运动目标的位置.运动目标跟踪是指在整个视频序列中监控运动目标的时空变化,如目标的位置、尺寸和形状等。运动目标的检测与跟踪是紧密关联的两个过程, 跟踪始于检测.检测的效果越好,则能给予跟踪 过程的检测对象特征信息就越多,跟踪的效果就越好.本文运用图像处理的方法进行运动物体的检测,然后结合Kalman滤波器实现预测跟踪。基于Kalman滤波器的跟踪过程是估计目标当前时刻和未来任一时刻的状态的过程.通常状态估计是在两种不确定情况下进行的,即目标运动所产生的目标模型的不确定性,以及由干扰、噪声所导致的测量不确定性,这就导致检测与预测跟踪时产生误差。
致谢
在这次论文选题过程中遇到了许多问题,最后在网页上找了一些资料才确定题目。论文行文过程中,寝室同学也帮我分析了一会,这让我开拓了视角,在我遇到困难想放弃的时候给予我最大的支持和鼓励。而同学们的严谨求实的治学态度,踏实坚韧的工作精神,将使我终生受益。再多华丽的言语也显苍白。在此,谨向我的同学致以诚挚的谢意和崇高的敬意。同时感谢大学四年来,软通学院所有老师对我学习上的帮助和生活上的关怀,正是您们的辛勤工作,才使我得以顺利地完成该学的东西。
参考文献
[1]邓自立.卡尔曼滤波与维纳滤波[M].哈尔滨:哈尔滨工业大学出版社,2003:20—89.
[2]张圣勤.MATLAB7.0实用教程[M].北京:机械工业出版社。2006:10—300
[3]张汗灵.MATLAB在图像处理中的应用[M].北京:清华大学出版社,2008:15
[4]刘亚,艾海舟,徐光佑.一种基于背景模型的运动目标检测与跟踪算法[J]。信息与控制, 2002,31(4):315—31
[5]方青,梅晓春,张育平.用于机动目标跟踪的Kalma波器的设计[J].雷达科学与技术,2006,4(1):50—55.
展开阅读全文