卡尔曼滤波和粒子滤波
整篇转自:https://blog.csdn.net/zkl99999/article/details/46619771/
转自http://blog.csdn.net/karen99/article/details/7771743
卡尔曼滤波本来是控制系统课上学的,当时就没学明白,也蒙混过关了,以为以后也不用再见到它了,可惜没这么容易,后来学计算机视觉和图像处理,发现用它的地方更多了,没办法的时候只好耐心学习和理解了。一直很想把学习的过程记录一下,让大家少走弯路,可惜总也没时间和机会,直到今天。。。
我一直有一个愿望,就是把抽象的理论具体化,用最直白的方式告诉大家--不提一个生涩的词,不写一个数学公式,像讲故事一样先把道理说明白,需要知道细节的同学可以自己去查所有需要知道的一切。因为学习的过程告诉我,最难的其实是最初和这个理论和应用背景亲和的过程--这些理论它究竟是做什么的,又是怎么做到的。可惜我们能看到的关于这些理论的资料大多数都是公式的堆砌并且假定我们明白许多“基本的道理”,其实这些“基本的道理”往往是我们最难想象和超越的。以卡尔曼滤波为例,让我们尝试一种不同的学习方法。
相信所有学习卡尔曼滤波的同学首先接触的都是状态方程和观测方程,学过控制系统的同学可能不陌生,否则,先被那两个看起来好深奥的公式给吓跑了,关键是还不知道他们究竟是干什么的,什么是状态,什么是观测。。。。。。如果再看到后面的一大串递归推导增益,实在很晕很晕,更糟糕的是还没整明白的时候就已经知道卡尔曼滤波其实已经不够使了,需要extended kalmanfilter 和particle filter了。。。
其实我们完全不用理会这些公式。先来看看究竟卡尔曼滤波是做什么的,理解了卡尔曼滤波,下面的就顺其自然了。
用一句最简单的话来说,卡尔曼滤波是来帮助我们做测量的,大家一定不明白测量干嘛搞那么复杂?测量长度拿个尺子比一下,测量温度拿温度表测一下不就完了嘛。的确如此,如果你要测量的东西很容易测准确,没有什么随机干扰,那真的不需要劳驾卡尔曼先生。但在有的时候,我们的测量因为随机干扰,无法准确得到,卡尔曼先生就给我们想了个办法,让我们在干扰为高斯分布的情况下,得到的测量均方误差最小,也就是测量值扰动最小,看起来最平滑。
还是举例子最容易明白。我最近养了只小兔子,忍不住拿小兔子做个例子嘻嘻。
每天给兔子拔草,看她香甜地吃啊吃地,就忍不住关心一下她的体重增长情况。那么我们就以小兔子的体重作为研究对象吧。假定我每周做一次观察,我有两个办法可以知道兔子的体重,一个是拿体重计来称:或许你有办法一下子就称准兔子的体重(兽医通常都有这办法),但现在为了体现卡尔曼先生理论的魅力,我们假定你的称实在很糟糕,误差很大,或者兔子太调皮,不能老实呆着,弹簧秤因为小兔子的晃动会产生很大误差。尽管有误差,那也是一个不可失去的渠道来得到兔子的体重。还有一个途径是根据书本上的资料,和兔子的年龄,我可以估计一下我的小兔子应该会多重,我们把用称称出来的叫观察量,用资料估计出来的叫估计值,无论是观察值还是估计值显然都是有误差的,假定误差是高斯分布。现在问题就来了,按照书本上说我的兔子该3公斤重,称出来却只有2.5公斤,我究竟该信哪个呢?如果称足够准,兔子足够乖,卡尔曼先生就没有用武之地了呵呵,再强调一下是我们的现状是兔兔不够乖,称还很烂呵呵。在这样恶劣的情景下,卡尔曼先生告诉我们一个办法,仍然可以估计出八九不离十的兔兔体重,这个办法其实也很直白,就是加权平均,把称称出来的结果也就是观测值和按照书本经验估算出来的结果也就是估计值分别加一个权值,再做平均。当然这两个权值加起来是等于一的。也就是说如果你有0.7分相信称出来的体重,那么就只有0.3分相信书上的估计。说到这里大家一定更着急了,究竟该有几分相信书上的,有几分相信我自己称的呢?都怪我的称不争气,没法让我百分一百信赖它,还要根据书上的数据来做调整。好在卡尔曼先生也体会到了我们的苦恼,告诉我们一个办法来决定这个权值,这个办法其实也很直白,就是根据以往的表现来做决定,这其实听起来挺公平的,你以前表现好,我就相信你多一点,权值也就给的高一点,以前表现不好,我就相信你少一点,权值自然给的低一点。那么什么是表现好表现不好呢,表现好意思就是测量结果稳定,方差很小,表现不好就是估计值或观测值不稳定,方差很大。想象你用称称你的哦兔子,第一次1公斤第二次10公斤,第三次5公斤,你会相信你的称吗,但是如果第一次3公斤第二次3.2公斤,第三次2.8公斤,自然我就相信它多一点,给它一个大的权值了。
有了这个权值,下面的事情就很好办了。很显然卡尔曼先生是利用多次观察和估计来达到目的的,我们也只能一步一步地调整我们的观察和估计值,来渐渐达到准确的测量,所以整个算法是递归的,需要多次重复调整的。调整的过程也很简单,就是把实测值(称出来的体重)和估计值(书上得来的体重)比较一下,如果估计值比测量值小,那就把估计值加上他们之间的偏差作为新的估计值,当然前面要加个系数,就是我们前面说的加权系数,这个地方我要写个公式,因为很简单就能说明白
比如我们的观查值是Z,估计值是X, 那么新的估计值就应该是 Xnew = X + K ( Z-X),从这个公式可以看到,如果X估计小了,那么新的估计值会加上一个量K ( Z-X), 如果估计值大了,大过Z了,那么新的估计值就会减去一个量K ( Z-X),这就保证新的估计值一定比现在的准确,一次一次递归下去就会越来越准却了,当然这里面很有作用的也是这个K,也就是我们前面说的权值,书上都把他叫卡尔曼增益。。。(Xnew = X + K ( Z-X) = X ×(1-K) + KZ ,也就是说估计值X的权值是1-k,而观察值Z的权值是k,究竟k 取多大,全看估计值和观察值以前的表现,也就是他们的方差情况了)
发现把一个问题讲明白还真不是件容易的事情,谁听明白了我佩服谁,因为我已经把自己讲糊涂了哈
顺便就把extended kalman filter和particle filter提一下,因为高斯模型有时不适用,于是有了extended kalman filter,而particle filter是用于多个对象的,比如除了兔子我还有只猫,他们的体重有一个联合概率模型,每一个对象就是一个particle。无论是卡尔曼滤波还是particle滤波,都是概率分布传递的过程,卡尔曼传递的是高斯分布,particle filter 传递的是高斯混合分布,每一个峰代表一个动物在我们的例子。
转自:http://www.cnblogs.com/yangyangcv/archive/2010/05/23/1742263.html#undefined
上学的时候每次遇到“粒子滤波”那一堆符号,我就晕菜。今天闲来无事,搜了一些文章看,终于算是理解了。下面用白话记一下我的理解。
某年月,警方(跟踪程序)要在某个城市的茫茫人海(采样空间)中跟踪寻找一个罪犯(目标),警方采用了粒子滤波的方法。
总部根据警犬们发来的味道相似度确定罪犯出现的位置(概率上最大的目标):最简单的决策方法为哪个味道的相似度最高,那个警犬处的人就是目标。
总部根据上一次的决策结果,重新布置下一轮警犬分布(重采样过程)。最简单的方法为:把相似度比较小的地区的警犬抽调到相似度高的地区。
上述,2,3,4过程重复进行,就完成了粒子滤波跟踪算法的全过程。
(2)->(3)->(4)->(2)如是反复循环,即完成了目标的动态跟踪。
转自:http://skpsun.blog.163.com/blog/static/2760055201010251210841/
这里主要讲计算机视觉范畴下的Kalman Filter(KF)和Particle Filter(PF)。
同时,Kalman Filter又是线性的,t时刻的state可以由t-1时刻的state经过一个矩阵相乘得到。
前面提到,噪音是高斯白噪音,白噪音是指其分布和时间不相关。噪音分为两个部分,状态量中的噪音和观测量中的噪音。即分别为下述式(1)的W(t)和和式(2)中V(k)。
所以可以总结, KF和PF相同的是,都分为三个步骤:Prediction,Measurement和Assimilation(或称为correction)。只是每步的实现上不同。
在Prediction阶段,KF利用高斯模型进行预测,而PF采用factored sampling对原Particle重采样。
在Measurement阶段,KF将得到唯一的measurement,而PF将为每一个Particle得到一份measurement。
所以,KF和PF最大的不同就在于对状态概率密度函数的表达方式上。KF采用高斯模型,而PF利用用无参数的点来近似。
1、卡尔曼滤波器:http://www.china-vision.net/blog/user1/6/2006111115624.html
2、Learning OpenCV --- Computer Vision with the OpenCV Library
5、Aly Merchant, Keir Mierle ,A Simple Implementation of the Condensasion Algorithm,2005
卡尔曼滤波和粒子滤波相关推荐
- 卡尔曼滤波、扩展卡尔曼滤波、无迹卡尔曼滤波以及粒子滤波原理
所有滤波问题其实都是求感兴趣的状态的后验概率分布,只是由于针对特定条件的不同,可通过求解递推贝叶斯公式获得后验概率的解析解(KF.EKF.UKF),也可通过大数统计平均求期望的方法来获得后验概率(PF ...
- 【多源融合】滤波融合之卡尔曼滤波与粒子滤波
多源融合之滤波对比 最近在看CSDN滤波方面的知识,但是很多都是激光雷达.视觉.信号处理等方面的大佬们总结的,我也做过卡尔曼滤波和粒子滤波.博主大地测量学与测量工程专业,主要做定位方面的内容,现在从我 ...
- 【SLAM基础入门】贝叶斯滤波、卡尔曼滤波、粒子滤波笔记(2)
基于B站老王的贝叶斯滤波.卡尔曼滤波.粒子滤波 Bilibili 文章目录 第三部分:随机过程的贝叶斯滤波BF 第四部分:卡尔曼滤波KF 第三部分:随机过程的贝叶斯滤波BF 随机过程包含一系列随机变量 ...
- 【SLAM基础入门】贝叶斯滤波、卡尔曼滤波、粒子滤波笔记(1)
贝叶斯滤波.卡尔曼滤波.粒子滤波 (https://www.bilibili.com/video/BV1HT4y1577g?spm_id_from=333.999.header_right.histo ...
- 从卡尔曼滤波到粒子滤波 很详细,很明了。。
转自http://blog.csdn.net/karen99/article/details/7771743 卡尔曼滤波本来是控制系统课上学的,当时就没学明白,也蒙混过关了,以为以后也不用再见到它了, ...
- 关于卡尔曼滤波和粒子滤波最直白的解释
卡尔曼滤波本来是控制系统课上学的,当时就没学明白,也蒙混过关了,以为以后也不用再见到它了,可惜没这么容易,后来学计算机视觉和图像处理,发现用它的地方更多了,没办法的时候只好耐心学习和理解了.一直很想把 ...
- 卡尔曼滤波、粒子滤波【通俗解释】
卡尔曼滤波本来是控制系统课上学的,当时就没学明白,也蒙混过关了,以为以后也不用再见到它了,可惜没这么容易,后来学计算机视觉和图像处理,发现用它的地方更多了,没办法的时候只好耐心学习和理解了.一直很想把 ...
- 粒子滤波到底是怎么得到的?
一.前言 粒子滤波(particle filter)是一种常见的滤波算法,广泛应用于目标跟踪.移动机器人等领域.网络上有不少关于粒子滤波的资料,但大多是直接给出了粒子滤波的相关公式和证明,或较为直观上 ...
- 交互式多模型-粒子滤波IMM-PF—在机动目标跟踪中的应用/matlab实现
交互式多模型-粒子滤波IMM-PF-在机动目标跟踪中的应用/matlab实现 原创不易,路过的各位大佬请点个赞 WX: ZB823618313 交互式多模型-粒子滤波IMM-PF-在机动目标跟踪中的应 ...
最新文章
- 来来来,你可能没见过这么全的实战吧
- Makefile完全解析PART5.使用变量
- 日美“利刃”联合军演
- php实现单个用户禁止重复登录,防止同一用户同时登陆
- python做excel表格代码_python操作excel表格
- (王道408考研操作系统)第四章文件管理-第一节6:文件基本操作
- 一个程序中login.php的代码
- 整理中短期计划和代办事情分析。
- Python判断两个单词的相似度
- 别人加薪你加班,征服老板才是王道
- 几种常用的视频接口(端子)
- OpenAI重磅开源多智能体博弈环境Neural MMO
- 【数字信号】基于matlab GUI DTMF信号生成与检测(带按键音)【含Matlab源码 1086期】
- 规范JavaScript注释
- js分解GIF图片以及合成GIF图片
- RuntimeError: CUDA error: invalid device ordinal
- 入职国企外包第一个星期,实感
- Echarts动态生成图表,图表类型进行切换,长数据区域展示
- HTML代码via浏览器logo,Via浏览器怎么定制首页 几步轻松完成
- Android基础入门教程——4.3.1 BroadcastReceiver牛刀小试
热门文章
- 监督学习和无监督学习(概念)
- SEO,什么是SEO
- 系统u盘怎么改回普通_u盘启动盘恢复成普通u盘u盘操作系统_详细教您怎么把系统装进U盘...
- 多色柱状图用不同柱体颜色反映数据的差异
- Zabbix icmp pinger processes more than 75% busy
- 性能对比|FASS iSCSI vs NVMe/TCP
- requestPayment:fail parameter error: parameter.non…r.signType should be String instead of Undefined
- 【花开朝颜复夕颜】—记火影中挚爱的女忍者
- 最后一天了,四个关键字回顾程序员小跃的2020
- angular中组件changeDetection为ChangeDetectionStrategy.OnPush时的学习