卡尔曼滤波理解

1 原理理解

1.1 比较严谨的理解

卡尔曼滤波是一种估计算法,核心思想是在不确定系统中估计出最优状态, 使系统整体误差最小。

基本应用场景是:系统有一个预测值和一个观测值, 这个时候就可以用卡尔曼滤波对这2个结果进行一个融合估计。

卡尔曼滤波分为2个步骤: 预测和更新

预测:

在这里插入图片描述

更新:
在这里插入图片描述
其中:

  • A A A是转态转移矩阵, B B B是控制矩阵, μ \mu μ是控制变量, x x x是状态变量
  • P P P是状态变量协方差矩阵, Q Q Q为处理噪声协方差矩阵
  • H H H是观测矩阵, R R R是观测噪声协方差矩阵, z z z是观测变量
  • K k K_k Kk是卡尔曼增益

预测是根据上一时刻( k - 1 时刻) 的后验估计值 x ^ k − 1 {\hat{x}}_{k-1} x^k1来估计当前时刻( k 时刻) 的状态,得到 k 时刻的先验估计值 x ^ k − {\hat{x}}_k^{-} x^k;

更新是根据当前时刻的测量值来更正预测阶段估计值,得到当前时刻的后验估计值, 同时更新协方差矩阵, 以便下一次的迭代估计。

1.2 通俗理解

可能很多人一看到复杂的公式就懵了, 觉得卡尔曼滤波好难。 其实理解之后会发现, 它的思想特别简单而朴素。这可能就是所谓的大道至简吧。

为了便于更多人的理解, 我将试着用大白话的方式进行解读。
卡尔曼滤波实际上解决了这样一个问题: 假设对某一个系统, 你有一个观测结果, 然后基于建模你也有一个预测结果,那么你很自然会想到要把这2个结果进行一个融合, 从而得到一个更靠谱的结果。 那怎么融合呢,最简答的可能是加权平均, 你可以根据经验觉得谁更靠谱就多信任谁一点, 那这个加权系数你就可以根据经验确定下来了。 实际中你确实可以这么做, 但是效果不见得好。 那卡尔曼滤波其实就是提出了一种更好的加权融合的方案, 它根据协方差(考虑单变量就是方差, 更便于理解)来决定谁更靠谱, 直观来说, 就是方差越小, 那么它就更靠谱(想象一下, 对高斯分布, 方差为0意味着什么, 意味着没有不确定性啊, 100%的肯定呀, 那当然靠谱了)。 并且这个加权系数是动态确定的, 那灵活性就更高了, 有时候观测值更靠谱, 有时候预测值更靠谱, 卡尔曼滤波都能适应这种情况。 更重要的是, 它还是有扎实的理论保证的, 保证让你的每次卡尔曼滤波的估计结果的方差都是小于观测方差和预测方差的, 从而就保证了卡尔曼滤波的方差是越来越小的。 这点同样很重要, 因为我们的卡尔曼滤波是一个迭代估计的过程, 这一点能保证卡尔曼滤波结果是朝着越来越好的方向房展的。 这也就是为什么卡尔曼滤波性能如此强大的关键原因, 随着迭代的进行, 卡尔曼滤波的结果会越来越好。

关于公式的得来, 这里也做一个通俗的解释:公式中最重要的一项是把观测结果和预测结果进行一个加权求和, 这从直观上很好理解, 但是其实背后是有严谨的数学理论支撑的。我们有一个观测, 有一个预测,那么我们最好的估计结果是什么呢?其实应该是在这2者共同的区间内, 代表这2个事件同时发生,那当然就更有把握说这个预测结果是更好的, 那这在数学上是什么呢? 是2个概率密度函数相乘呀。 如果2个过程都是高斯分布的话, 根据极大似然法, 很容易就推导出后验估计结果 以及方差。 它的后验估计结果形式刚好就是加权求和的形式。

2 卡尔曼滤波的使用方法

在应用卡尔曼滤波时有几个值需要事先给出, 一般是通过经验值得到。

  • 1 状态转移矩阵 A A A
    如在跟踪中, 我们一般假设运动模型为匀速直线运动, 这时候转移矩阵 A A A就可以确定出来。
    矩阵 B 矩阵B 矩阵B可以没有,如果有外部控制变量,则需要。 如在跟踪中, 如果假定运动模型为匀加速直线运动, 那么就需要了。

  • 2 状态变量协方差矩阵 P P P
    这个也是需要通过经验值给出。 初始值是一个对角阵, 不确定性越大, 给与更大的值。P会随着卡尔曼滤波过程不断自动更新, 初始值没那么敏感。

  • 3 处理噪声协方差矩阵Q
    衡量的是状态变量的不确定性误差, 是一个对角阵, 不确定性越大, 给与更大的值。Q是固定的, 不会更新。

  • 4 观测矩阵 H H H
    这个是为了把状态空间变量映射到观测空间。 如在目标跟踪中, 我们通常是认为观测值等于状态空间中相应的值。

  • 5 观测误差协方差矩阵 R R R
    衡量的是对观测结果的不确定误差,是一个对角阵,不确定性越大, 给与更大的值。 R是固定的,不会更新。

3 在目标跟踪任务中的应用

在目标跟踪任务中卡尔曼滤波可以用于目标的匹配和关联。具体来说, 在跟踪任务中, 我们有一个检测器, 检测器可以检测到每帧中包含的目标,这是我们的观测值。 同时我们有一个先验估计值(对第一帧来说, 取先验估计等于观测值。 对于其他帧来说,当前帧的先验估计就等于上一帧的卡尔曼估计结果), 那么根据卡尔曼滤波的原理, 我们可以得到一个卡尔曼的估计结果。 当检测下一帧的时候, 我们就可以把卡尔曼估计结果和检测结果进行一个匹配(如一个简单的方式是通过Iou匹配), 从而把目标的ID给关联上。

具体应用案例可参考: 详解多目标跟踪(MOT)算法中的Kalman滤波

4 参考

1 图解卡尔曼滤波及匹配算法进行多目标跟踪
2 卡尔曼滤波原理解析与人脸追踪实例

  • 1
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值