最近一直在准备学习目标跟踪,也了解了一些传统的跟踪算法,然后再继续深入学习的时候,碰到了卡尔曼滤波这个东西,这是一种非常经典的算法,即便现在的深度学习中,也常常与之相结合。最早接触卡尔曼滤波应该是我大二的时候了,这么多年已经忘了,而且那时候也不是那么的理解,现在准备进一步理解,这篇文章将尽可能的用通俗的话来说一下个人的理解。
----------------------------------------------------------------------------------------------------------
作用:比如我现在有一个用来测距离的系统,我的预测距离会受到其他因素的影响,这些因素被视为噪声,导致预测与实际距离产生偏移,而通过滤波可以将部分噪声进行滤除,使我们预测的距离和实际距离尽可能的小,即减小误差,这就有些像目标检测中对预测的bbox进行修正,让其与真实框尽可能的匹配的过程。即卡尔曼滤波是可以预测目标下一次出现的位置或状态的一个东西,并且可以对我们预测的距离进行修正。
适用的系统为:线性系统,线性系统需要满足齐次性和可加性,这个部分很容易理解,在大学信号处理课就有学过,这里我不再赘述。
高斯噪声:主要是指系统的噪声符合正态分布
而卡尔曼主要应用系统为:线性高斯系统
我们在学习理想低通滤波器的时候知道,低频部分赋予的权重会大,权值为1,高频部分是我们需要滤除的部分,所以权重为0,那么相应的,对于卡尔曼滤波器来说,我们需要给估计值和观测值赋予不同的权重然后得到我们想要的最优估计值。
-----------------------------------------------------------------------------------------------------------
对于这个公式的理解,我们可以类比成一个小车的运动,假设这个小车是匀加速直线运动,那么我们可以预测车下一时刻的路程P和速度V,比如有:
然后我们将上式再写成矩阵的形式,那么有:
和先验估计公式做下对比
-----------------------------------------------------------------------------------------------------------
其中wk是引入的噪声,那么我们就可以达到最终的先验协方差公式。致于为什么要算这个协方差,我是这样理解的,协方差,他本身是可以体现两个变量X,Y的相关性,比如要给一个公司借贷,那么银行需要对这个公司评估,比如公司高管的学历是变量X,还款能力是Y,那么就需要计算学历和还款能力是相关性,比如判断是不是学历越高,还款能力也越强。所以这里计算协方差,应该也是判断当前系统的状态和上一次系统状态的相关性的大小,数值越大说明越相关。
-----------------------------------------------------------------------------------------------------------
然后我们再来看一下测量方程,就是观测方程,还是以小车为例子,比如我们最终要得到的是距离,所以我们只测距离,那么则有:
上面的Zv=0不是速度为0,只是我们不测他,只测的位置。
那么上式就再可以简写为:
这个就可以得到观测的数据,接下来我们需要进行最重要的一步,对数据进行修正:
-----------------------------------------------------------------------------------------------------------
所以整个的过程就是下面的过程,然后不停的迭代,最终得到我们想要的结果。
上面就是对关于卡尔曼的一些理解了,也算学习笔记进行总结