kalman滤波——公式推导
此篇为第③篇,多目标跟踪系列文章:
基础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滤波——公式推导相关推荐
- Kalman滤波C语言和C++版本实现
写在前面 Kalman滤波的理论是比较有深度的,涉及到很多公式推导,尤其是用到了很多线性代数的知识. 这篇博客是博主基于工作内容实现的,所以主要偏向于应用,代码也是经过无数次验证了的,是比较稳定的,大 ...
- 理解Kalman滤波的使用
Kalman滤波简介 Kalman滤波是一种线性滤波与预测方法,原文为:A New Approach to Linear Filtering and Prediction Problems.文章推导很 ...
- kalman滤波的解释
文章目录 kalman滤波的解释 背景 信号经过线性变换后的分布 信号的相乘 一维信号 多维信号 贝叶斯估计 状态方程 先验分布 后验分布 总结 kalman滤波的解释 背景 这里的信号都是指服从正态 ...
- OpenCV学习笔记(三十六)——Kalman滤波做运动目标跟踪 OpenCV学习笔记(三十七)——实用函数、系统函数、宏core OpenCV学习笔记(三十八)——显示当前FPS OpenC
OpenCV学习笔记(三十六)--Kalman滤波做运动目标跟踪 kalman滤波大家都很熟悉,其基本思想就是先不考虑输入信号和观测噪声的影响,得到状态变量和输出信号的估计值,再用输出信号的估计误差加 ...
- 时序分析:Kalman滤波(状态空间)
在现实生活中, 数据的出现大多数是以非平稳形式, 这就涉及到了动态数据所构成的时间序列的分解.关于时间序列的分解, PeterJ.Brochwell&RichardA.Davis在其著作< ...
- OpenCV: kalman滤波的代码段
序言:在我的疲劳检测工程 AviTest中!显示框为320*240,使用OpenCV的kalman滤波算法,可以实现简单的锁相追踪-实现对眼球的位置锁定. 代码如下: CvPoint Wishchin ...
- python目标跟踪精度曲线图_Python+opencv3.4+Kalman滤波在视频中跟踪绘制运动目标,Pythonopencv34kalman,卡尔曼滤波,实现,物体,追踪,和,轨迹...
实验环境: Python3.6+OpenCV3.4+pycharm2019 代码实现: 首先是一个 简单的不用kalman滤波的运动目标追踪代码 这里可以根据需要进行摄像头运动目标识别,只要把 cam ...
- 霍普分叉matlab程序,基于MATLAB_GUI的Kalman滤波程序
第1章Kalman滤波理论 1.1 Kalman滤波理论的应用背景 信号是传递和运载信息的时间或空间函数.信号有两类,即确定性信号和随即信号.确定性信号的变化规律是既定的,可以表示为一确定的时间函数或 ...
- 【C#】【引用加原创】C#实现kalman滤波
最近为了项目,同事让我帮他做一个硬件版的kalman滤波器,实现对设备的kalman滤波,以验证他的理论算法. 犹豫了好几天,用dsp吧,我的kalman滤波算法比较简单,有点大材小用.刚好手里有一块 ...
最新文章
- struts2点滴记录
- 如何让.net程序自动运行在管理员权限下
- 人脸识别的时候,一定要穿上衣服!否则 ...
- 机器学习项目(四)疫情期间网民情绪识别
- IDEA部署Tomcat报错[RMI TCP Connection(6)-127.0.0.1]
- wpf treeview调整子菜单间距_完全由C编写,高度可移植,超级牛逼的菜单架构!...
- 网关服务Spring Cloud Gateway(三)
- oopc——7.面向接口编程
- 定期存款可以提前取出来吗_如果银行存款利率涨了,定期存款有必要取出再存吗?...
- 过滤ilist中的重复数据
- 百度定位---适配8.0限制后台定位
- 原来PC界面临洗牌的背后原因是因为存储
- 发布HTML5 2D游戏引擎YEngine2D
- C语言关键字浅析-case
- c语言程序最简单例子,简单C语言程序的例子
- DoS攻击、CC攻击的攻击方式和防御方法
- SAP查询销售订单库存
- 1194:移动路线(简单题日常2)
- MySQL日期和时间函数 整理
- 【数学建模】最小二乘回归+Java代码实现
热门文章
- switch语句作用的类型
- 类库(.net Standard)和类库(.net core)以及类库(.net framework)的区别
- java调用wadl_Java中的WADL:温和的介绍
- 用计算机跑模型是什么意思,计算机科学 – 显性变异和静态心理模型是什么意思?...
- MySQL体系结构与存储引擎
- Baumer工业相机中曝光与增益两种功能的优点和作用以及使用方法
- Mac OS中利用ffmpeg为视频添加字幕
- linux文件中各个颜色代表意思如下:
- 查询android手机端包名,查看android手机原生app包名的方法
- 计算机主机箱安装,教你自己动手更换电脑主机箱,装机不求人!