Table of contents
  1. 基本问题
    1. 什么是卡尔曼滤波?
    2. 什么时候使用卡尔曼滤波?
    3. 为什么叫“滤波”
    4. 卡尔曼滤波与普通滤波的区别?
    5. 简单例子
  2. 简单理解

Introduction

This post show how I understand the Kalman filter after learning some tutorials. Only the conception equations are introduced.

基本问题

什么是卡尔曼滤波?

它是一种思想(而非具体算法),用一个变量的过去值和现在的观测值,来最佳估计变量的现在的值。它有许多不同的具体算法形式,被广泛应用于信号处理、数据融合、运动估计、自动控制等领域。

什么时候使用卡尔曼滤波?

卡尔曼滤波应用场景的基础假设是:

  1. 我们有一个方法来观测变量现在的值
  2. 我们同时也可以用变量的过去的值预测现在的值

在一般应用中,我们常常直接使用假设1。但是如果假设2成立的话,我们就会想:不把假设2利用起来实在太可惜了。数学上也有严格证明,结合这两个假设的结果,肯定比单独使用一个要好。卡尔曼滤波正是使用在这种场景中。

相应的,不适用于卡尔曼滤波的场景就是:这个变量不存在时序结构。或者说,即便存在时序结构,它的某个时刻的状态与它之前的状态毫无关系,那么假设1便不成立。

为什么叫“滤波”

上面的说明中,滤波的操作其实已经出现了:把一个变量的真实值,按时间排序形成一个一维的矩阵,用一个滤波器在这个矩阵上从左到右滑动,来对这个序列进行滤波,获得我们计算出的变量值的一维矩阵。 我们可以把这个滤波器表示成[预测方程, 观测方程],就意味着对于每个真实值,我们都用其预测(前一个状态的值) + 观测(此刻状态的值)来计算这个时刻的值,这反映的正是卡尔曼滤波的思想。

卡尔曼滤波与普通滤波的区别?

我们理解了为什么卡尔曼滤波是一种滤波,但肯定不能把所有的滤波都称为卡尔曼滤波。卡尔曼滤波到底卡尔曼在哪呢?卡尔曼滤波结合预测信息观测信息来最优化估计变量的值,而这个结合的过程中考虑了两个信息的不确定性

简单例子

在目标追踪的场景中,一个物体在某帧中的位置,显然与其在上一帧中的位置存在较强的关系。所以我们可以利用这个原理,来尝试优化目标追踪算法得到的检测框。对于每个检测框,我们先评估一下这个检测框的质量,再评估一下通过前一个检测框来预测这一个检测框的质量,然后综合考虑结合它们来更新检测框。

简单理解

image

image

参考源:

[1][2]