此篇为第③篇,多目标跟踪系列文章:
基础demor入门①②;公式推导③④;深入分析初始化参数的影响⑤;
① Matlab Kalman滤波例子——小球跟踪解析 :matlab官方例子,单目标跟踪。匀速模型和匀加速模型
②Matlab Kalman Filter based Multiple object Tracking 官方例子 多目标跟踪_hello world-CSDN博客matlab官方例子,多目标跟踪。注意有匈牙利轨迹分配算法,且其中的距离计算公式为观测与预测的马氏距离,这个来源于1987年的作者的著作中。 
③kalman滤波——公式推导_hello world-CSDN博客_卡尔曼滤波递推公式
理解马氏距离的公式! 理解残差和残差协方差!
④多目标跟踪——阶段性进展_hello world-CSDN博客_多目标跟踪 多目标综述、Kalman滤波公式推导
⑤kalman简单例子——初始化参数对kalman性能的影响_hello world-CSDN博客
⑥多目标跟踪中的目标是否静止判断_hello world-CSDN博客 判断是否静止,如何计算速度
CheckStatic代码原理解析,数学公式推导。
其它优秀的博客参考:
⑦多目标跟踪(MOT)入门 - 知乎 比较好的多目标MOT综述!
⑧《Towards Real-Time Multi-Object Tracking》论文翻译 - 知乎
⑨ 视频轨迹跟踪分析——他山之石_hello world-CSDN博客


word文档位置: 卡尔曼滤波课程,文字实录。-电信文档类资源-CSDN下载

维纳滤波文章参考:维纳滤波——Wiener Filter(一些理解)_hello world-CSDN博客_维纳滤波器

0. 前言

以下来自清华电子系张颢老师的课程,百度云地址为:链接:https://pan.baidu.com/s/1Ft5hYkDpWuvijEeHB7Cy-g    提取码:94x3 
7.1 & 7.2 kalman filtering。文档为课程文字版。配合视频食用更佳。
word文档位置: 卡尔曼滤波课程,文字实录。-电信文档类资源-CSDN下载

两种思想比较重要:①状态空间 ②预测校正

卡尔曼滤波与维纳滤波的根本区别:
①维纳滤波是一个黑箱,用传递函数描述输入到输出的关系(线性),然后从数据出发推导出这个滤波器(最优的线性滤波——维纳滤波)。这里面没有加入先验知识,只依靠统计知识从输入和输出中推断二者的关系。
从数据中孵化出来的东西,从某种意义上来讲,还是比较肤浅。
②先验知识如何在信号处理的过程中体现?如何利用?——先验作为系统的状态来体现。
决定系统输出的关键也许
并不在输入上,而在状态上。状态属于系统内部的特性
要检讨自己的状态模型是否建立的正确

  • 状态方程,状态空间内部也一定有噪声Vn,要克服掉噪声的影响。
  • 允许信号是非平稳的,随时间变化而变化
  • 状态空间的思想与传递函数有着本质的区别。把先验加入到系统中,就通过状态空间来实现。
  • 卡尔曼增益是卡尔曼滤波中非常重要的位置,调节这个增益对我们的估计会产生非常重要的影响。它把残差作为转化。

状态空间真的是一个革命性的变化,大家千万不要小看。他彻底改变了我们信号处理的面貌。已有知识根本没有插足之地,你可能对这件事是有认识的。这个认识无论是来自这个基础的这个自然科学规律,还是来自你在工程事件当中积累的经验,你总之是有认识的,但这个认识在你原有的那个体系,在维纳滤波那个体系下,你会发现用不上。但是有了状态方程,你有的认识就都可以用上。这一点非常本质非常本质。

  • 但是后头的人们发现这个Pn|n递推误差真的非常好。因为你可以在不断的得到目标估计越来越精准的这个值的同时,还能评估估计的效果这是一种性能评估。卡尔曼滤波非常牛,他第一次在信号处理的历史上第一次做出了在线性能评估就每一步的性能他都能评估。每一步的性能他都能评估,他通过这样的递推就能慢慢的。
  • 为什么,没关系?他自己会学习。)就是随着你数据的增多,他自己会慢慢的摸着其中的规律,他会自己摸,慢慢的摸着其中的规律。他会学习,哪怕你的初始值给的的哪怕离提千里都没有关系。他会越来越准确的去接近那个真正的值,刚一开始可能误差是很大。没有问题。慢慢的,目标中抖动就比较小了。
  • 比如打飞机、打鸟…… 打活动靶。我们为什么要预测,预测也是为了有效的进行我一旦框变红了就意味着我判断这个估计误差已经很小。保持一段时间很小说明我锁定命说明我锁定。然后我再打,我打提前量,那就基本上应中率有保证。『打击目标中一定有跟踪和预测的部分!
  • 你肯定不能打那个当前位置,而是要预测,预测他要飞到什么位置才打。

状态方程、模型,一定有自己的适用范围。

不可能有完美无缺的模型因为模型都是人造,数据才是上帝,上帝视角才能看到完美无缺的世界,我们根本看不到,所以不可能有完美无缺的无尽。再一点,先记住了啊,没有包治百病的药
②没有一个模型是一无是处的。他一定都有自己的适用范围

可能就这模型整个就错了,这看错了,我刚才一说过了,哎呀。瞎了狗眼这个这个看错了看错了这个叫什么呢。这个叫模型失配。模型失配是他们卡尔曼滤波非常怕的一件事,因为一旦模型失配了。你所有的努力全部都白费了,那是一点意义都没有,因为你基本模型不对。

④你见过飞机横向平移,横向平移,有矢量喷管技术的飞机。真的可以做横向平移,意味着什么?那就意味着你加速度有一个突变,加速度有突变就意味着你的短时内匀加速模型瞬间就失效了,所以他马上就可以甩开你这个导弹的追逐

⑤从对抗的角度来说,最好的对抗是什么。最好的对抗,这是从根上颠覆掉你,怎么叫根上颠覆,就是从状态方程,让你的状态方程列的就不对,那往下的故事肯定就没得讲了

⑥为什么这个弹道能算的那么准呢?原因就在于那个他那个方程。那肯定不是这个样子嘛。对对对对对。那肯定不是这个样子。那么那是一个非常复杂的方程列出的他们列出的这个状态方程那写上两排版都不一定能写到就是把各种各样的因素,各种各样的因素能考虑到的全部考虑。因此,他可以有一个精准的对于飞行轨迹,飞行规律的建模。在这个建模的基础上,我们再来做卡尔曼滤波那就得心应手,

1. 公式递推结果

(1)观测 (u1,E1),即Yn+1和观测噪声协方差矩阵。 预测部分为:(u0,E0),预测的结果按照预测矩阵

文章来源: 【翻译】详解卡尔曼滤波原理

① 卡尔曼适合在连续变化的系统中使用,『假定状态是一个连续变化,没有突变』。
②  在跟踪中,GPS也不一定一直有效,比如经过一个隧道等,信号没有了。此时就需要机器人本能的能够预测一段时间,从预测和观测两者来得到一个最优的估计。
③ 可能的Bu的外部控制量的输入,比如加速、减速,加油门、踩刹车等的动作,可以通过Bu的外部控制量来加入到系统中。这里就是加入外部模型的一个地方。

【翻译】详解卡尔曼滤波原理 从这里的参考推断:

所以,相当于是:

冷启动/初始化阶段:在一直有观测数据的输入后,Pn|n调整K不断变小,对观测Y的依赖变小。就越来越不依赖于观测了。

但是这样的问题是:越往后,就只依赖于模型和预测。那么观测就不太重要了!

  • 如果发生了突变,就是模型失配。是一定赶不上的!那此时是卡尔曼致命的问题发生了
  • 也就是飞机/目标,突然启动,突然改变方向,就会发生失配!

2. 推导过程

3. 距离计算公式

Matlab中的距离计算公式不一样,计算的是 distance(实际观测 - 预测位置) = 马氏距离,用预测误差的协方差矩阵来加权的

与上面的代码相对应的公式如下:就是一个马氏距离!


马氏距离的理解:

kalman滤波——公式推导相关推荐

  1. Kalman滤波C语言和C++版本实现

    写在前面 Kalman滤波的理论是比较有深度的,涉及到很多公式推导,尤其是用到了很多线性代数的知识. 这篇博客是博主基于工作内容实现的,所以主要偏向于应用,代码也是经过无数次验证了的,是比较稳定的,大 ...

  2. 理解Kalman滤波的使用

    Kalman滤波简介 Kalman滤波是一种线性滤波与预测方法,原文为:A New Approach to Linear Filtering and Prediction Problems.文章推导很 ...

  3. kalman滤波的解释

    文章目录 kalman滤波的解释 背景 信号经过线性变换后的分布 信号的相乘 一维信号 多维信号 贝叶斯估计 状态方程 先验分布 后验分布 总结 kalman滤波的解释 背景 这里的信号都是指服从正态 ...

  4. OpenCV学习笔记(三十六)——Kalman滤波做运动目标跟踪 OpenCV学习笔记(三十七)——实用函数、系统函数、宏core OpenCV学习笔记(三十八)——显示当前FPS OpenC

    OpenCV学习笔记(三十六)--Kalman滤波做运动目标跟踪 kalman滤波大家都很熟悉,其基本思想就是先不考虑输入信号和观测噪声的影响,得到状态变量和输出信号的估计值,再用输出信号的估计误差加 ...

  5. 时序分析:Kalman滤波(状态空间)

    在现实生活中, 数据的出现大多数是以非平稳形式, 这就涉及到了动态数据所构成的时间序列的分解.关于时间序列的分解, PeterJ.Brochwell&RichardA.Davis在其著作< ...

  6. OpenCV: kalman滤波的代码段

    序言:在我的疲劳检测工程 AviTest中!显示框为320*240,使用OpenCV的kalman滤波算法,可以实现简单的锁相追踪-实现对眼球的位置锁定. 代码如下: CvPoint Wishchin ...

  7. python目标跟踪精度曲线图_Python+opencv3.4+Kalman滤波在视频中跟踪绘制运动目标,Pythonopencv34kalman,卡尔曼滤波,实现,物体,追踪,和,轨迹...

    实验环境: Python3.6+OpenCV3.4+pycharm2019 代码实现: 首先是一个 简单的不用kalman滤波的运动目标追踪代码 这里可以根据需要进行摄像头运动目标识别,只要把 cam ...

  8. 霍普分叉matlab程序,基于MATLAB_GUI的Kalman滤波程序

    第1章Kalman滤波理论 1.1 Kalman滤波理论的应用背景 信号是传递和运载信息的时间或空间函数.信号有两类,即确定性信号和随即信号.确定性信号的变化规律是既定的,可以表示为一确定的时间函数或 ...

  9. 【C#】【引用加原创】C#实现kalman滤波

    最近为了项目,同事让我帮他做一个硬件版的kalman滤波器,实现对设备的kalman滤波,以验证他的理论算法. 犹豫了好几天,用dsp吧,我的kalman滤波算法比较简单,有点大材小用.刚好手里有一块 ...

最新文章

  1. struts2点滴记录
  2. 如何让.net程序自动运行在管理员权限下
  3. 人脸识别的时候,一定要穿上衣服!否则 ...
  4. 机器学习项目(四)疫情期间网民情绪识别
  5. IDEA部署Tomcat报错[RMI TCP Connection(6)-127.0.0.1]
  6. wpf treeview调整子菜单间距_完全由C编写,高度可移植,超级牛逼的菜单架构!...
  7. 网关服务Spring Cloud Gateway(三)
  8. oopc——7.面向接口编程
  9. 定期存款可以提前取出来吗_如果银行存款利率涨了,定期存款有必要取出再存吗?...
  10. 过滤ilist中的重复数据
  11. 百度定位---适配8.0限制后台定位
  12. 原来PC界面临洗牌的背后原因是因为存储
  13. 发布HTML5 2D游戏引擎YEngine2D
  14. C语言关键字浅析-case
  15. c语言程序最简单例子,简单C语言程序的例子
  16. DoS攻击、CC攻击的攻击方式和防御方法
  17. SAP查询销售订单库存
  18. 1194:移动路线(简单题日常2)
  19. MySQL日期和时间函数 整理
  20. 【数学建模】最小二乘回归+Java代码实现

热门文章

  1. switch语句作用的类型
  2. 类库(.net Standard)和类库(.net core)以及类库(.net framework)的区别
  3. java调用wadl_Java中的WADL:温和的介绍
  4. 用计算机跑模型是什么意思,计算机科学 – 显性变异和静态心理模型是什么意思?...
  5. MySQL体系结构与存储引擎
  6. Baumer工业相机中曝光与增益两种功能的优点和作用以及使用方法
  7. Mac OS中利用ffmpeg为视频添加字幕
  8. linux文件中各个颜色代表意思如下:
  9. 查询android手机端包名,查看android手机原生app包名的方法
  10. 计算机主机箱安装,教你自己动手更换电脑主机箱,装机不求人!