kalman滤波器各项参数及矩阵的设置

参考博客: https://blog.csdn.net/baimafujinji/article/details/50646814
简单来说,卡尔曼滤波器的实现是一个迭代过程,使用上一次的结果预测当前的值,同时使用观测值修正当前值,得到最优结果。

kalman滤波器各项参数及矩阵的设置_第1张图片
几个重要的公式如下:

kalman滤波器各项参数及矩阵的设置_第2张图片
这里主要是参考一篇论文:Fully Automatic, Real-Time Vehicle Tracking for Surveillance Video,分析其中的卡尔曼滤波器的实现。
这里估计值x是十维的向量,考虑两帧的信息就可以得到包括加速度在内的初始值,之后交由卡尔曼滤波器自己迭代更新。
y是观测值(在论文中是z),由检测结果、背景切割、LK光流法得到,用于修正估计值x。
矩阵F是由相邻帧之间的运动规律得到,例如当前帧的位置和速度的值可以由以下公式得到:

kalman滤波器各项参数及矩阵的设置_第3张图片
矩阵H用来将x转化为y的形式,即各元素的含义相同,维数相同。

矩阵Q是噪声协方差,论文中是对角线上元素为10^-5的矩阵。
矩阵∑(论文中为P)的初始值为单位矩阵,之后由公式迭代更新。
矩阵R也为噪声协方差, 论文中是对角线上元素为10^-1的矩阵。
K是滤波增益阵,它首先权衡预测状态协方差矩阵 Σ 和观测值矩阵R的大小,并以此来觉得我们是更倾向于相信预测模型还是详细观测模型。如果相信预测模型多一点,那么这个残差的权重就会小一点。反之亦然,如果相信观察模型多一点,这个残差的权重就会大一点。不仅如此,滤波增益阵还负责把残差的表现形式从观测域转换到了状态域。例如本题中观测值 Z 仅仅是一个一维的向量,状态 x 是一个二维的向量。所以在实际应用中,观测值与状态值所采用的描述特征或者单位都有可能不同,显然直接用观测值的残差去更新状态值是不合理的。而利用卡尔曼系数,我们就可以完成这种转换。例如,在小车运动这个例子中,我们只观察到了汽车的位置,但K里面已经包含了协方差矩阵P的信息(P里面就给出了速度和位置的相关性),所以它利用速度和位置这两个维度的相关性,从位置的残差中推算出了速度的残差。从而让我们可以对状态值 x 的两个维度同时进行修正。

你可能感兴趣的:(detection,&,tracking)