转自http://www.cnblogs.com/cfantaisie/archive/2011/06/16/2082267.html
粒子滤波实现物体跟踪的算法原理:

1)初始化阶段-提取跟踪目标特征

该阶段要人工指定跟踪目标,程序计算跟踪目标的特征,比如可以采用目标的颜色特征。具体到Rob Hess的代码,开始时需要人工用鼠标拖动出一个跟踪区域,然后程序自动计算该区域色调(Hue)空间的直方图,即为目标的特征。直方图可以用一个向量来表示,所以目标特征就是一个N*1的向量V。

2)搜索阶段-放狗

好,我们已经掌握了目标的特征,下面放出很多条狗,去搜索目标对象,这里的狗就是粒子particle。狗有很多种放法。比如,a)均匀的放:即在整个图像平面均匀的撒粒子(uniform distribution);b)在上一帧得到的目标附近按照高斯分布来放,可以理解成,靠近目标的地方多放,远离目标的地方少放。Rob Hess的代码用的是后一种方法。狗放出去后,每条狗怎么搜索目标呢?就是按照初始化阶段得到的目标特征(色调直方图,向量V)。每条狗计算它所处的位置处图像的颜色特征,得到一个色调直方图,向量Vi,计算该直方图与目标直方图的相似性。相似性有多种度量,最简单的一种是计算sum(abs(Vi-V)).每条狗算出相似度后再做一次归一化,使得所有的狗得到的相似度加起来等于1.

3)决策阶段

我们放出去的一条条聪明的狗向我们发回报告,“一号狗处图像与目标的相似度是0.3”,“二号狗处图像与目标的相似度是0.02”,“三号狗处图像与目标的相似度是0.0003”,“N号狗处图像与目标的相似度是0.013”...那么目标究竟最可能在哪里呢?我们做次加权平均吧。设N号狗的图像像素坐标是(Xn,Yn),它报告的相似度是Wn,于是目标最可能的像素坐标X = sum(Xn*Wn),Y = sum(Yn*Wn).

4)重采样阶段Resampling

既然我们是在做目标跟踪,一般说来,目标是跑来跑去乱动的。在新的一帧图像里,目标可能在哪里呢?还是让我们放狗搜索吧。但现在应该怎样放狗呢?让我们重温下狗狗们的报告吧。“一号狗处图像与目标的相似度是0.3”,“二号狗处图像与目标的相似度是0.02”,“三号狗处图像与目标的相似度是0.0003”,“N号狗处图像与目标的相似度是0.013”...综合所有狗的报告,一号狗处的相似度最高,三号狗处的相似度最低,于是我们要重新分布警力,正所谓好钢用在刀刃上,我们在相似度最高的狗那里放更多条狗,在相似度最低的狗那里少放狗,甚至把原来那条狗也撤回来。这就是Sampling Importance Resampling,根据重要性重采样(更具重要性重新放狗)。

(2)->(3)->(4)->(2)如是反复循环,即完成了目标的动态跟踪。

  粒子滤波的核心思想是随机采样+重要性重采样。既然我不知道目标在哪里,那我就随机的撒粒子吧。撒完粒子后,根据特征相似度计算每个粒子的重要性,然后在重要的地方多撒粒子,不重要的地方少撒粒子。所以说粒子滤波较之蒙特卡洛滤波,计算量较小。这个思想和RANSAC算法真是不谋而合。RANSAC的思想也是(比如用在最简单的直线拟合上),既然我不知道直线方程是什么,那我就随机的取两个点先算个直线出来,然后再看有多少点符合我的这条直线。哪条直线能获得最多的点的支持,哪条直线就是目标直线。想法非常简单,但效果很好。

转载于:https://www.cnblogs.com/yingying0907/archive/2011/10/22/2221527.html

粒子滤波实现物体跟踪相关推荐

  1. 基于粒子滤波的物体跟踪

    一直都觉得粒子滤波是个挺牛的东西,每次试图看文献都被复杂的数学符号搞得看不下去.一个偶然的机会发现了Rob Hess(http://web.engr.oregonstate.edu/~hess/)实现 ...

  2. 基于粒子滤波的物体跟踪(转)

    作者的这篇文章写的浅显易懂,很容易理解其基本思想. 转自:http://www.cnblogs.com/yangyangcv/archive/2010/05/23/1742263.html 视频显示 ...

  3. 粒子滤波在图像跟踪领域的实践

    文章目录 前言 粒子滤波与卡尔曼滤波的介绍 卡尔曼滤波 粒子滤波 粒子滤波与卡尔曼滤波跟踪对比实验 小结 跋 前言 原文首发于微信公众号「3D视觉工坊」.     前两天在GitChat上总结了自己当 ...

  4. 机器人学习--粒子滤波及其在定位中的应用

    前提基础,先看一下 贝叶斯滤波  和 蒙特卡洛方法 一.什么是粒子滤波? 这里有个基于粒子滤波的物体跟踪 案例说明: 参考:基于粒子滤波的物体跟踪 - yangyangcv - 博客园 如果还是看不懂 ...

  5. 卡尔曼滤波和粒子滤波

    整篇转自:https://blog.csdn.net/zkl99999/article/details/46619771/ 转自http://blog.csdn.net/karen99/article ...

  6. 从卡尔曼滤波到粒子滤波 很详细,很明了。。

    转自http://blog.csdn.net/karen99/article/details/7771743 卡尔曼滤波本来是控制系统课上学的,当时就没学明白,也蒙混过关了,以为以后也不用再见到它了, ...

  7. OpenCV3学习(12.5) opencv实现粒子滤波目标跟踪

    OpenCV高版本已经把粒子滤波的CV方面的condensation算法给去掉了,以前学的condensation算法不能用C++开发还是只能用C版本,(OpenCV3学习(12.4) 粒子滤波Con ...

  8. 【回归预测】基于粒子滤波实现锂离子电池寿命预测附matlab代码

    1 内容介绍 随着现代生产生活对系统设备可靠性.安全性要求的提高,从成本.可靠 性的角度考虑,电子系统正逐步由原来的定期维修变成视情维修(CBM, Condition Based Maintenanc ...

  9. 目标跟踪之粒子滤波---Opencv实现粒子滤波算法

    目标跟踪学习笔记_2(particle filter初探1) 目标跟踪学习笔记_3(particle filter初探2) 前面2篇博客已经提到当粒子数增加时会内存报错,后面又仔细查了下程序,是代码方 ...

最新文章

  1. 使用purge_relay_logs 清理relay log
  2. 6、单机运行环境搭建之 --CentOS-6.4安装MySQL 5.6.10并修改MySQL的root用户密码
  3. PHP全栈开发(五):PHP学习(1.基础语法)
  4. 【C++ Primer | 16】容器适配器全特化、偏特化
  5. 定期定量采购_企业常见的六种采购策略
  6. 14-求两个日期之间的天数
  7. 思科3560交换机端口限速
  8. Git服务器的搭建和使用
  9. ztree 自定义参数_ztree的自定义编辑
  10. Android Studio 下载ndk
  11. Visual C++ 2010 Express中文版如何下载
  12. 【Rust日报】2020-05-05:窥探Zoom, Lambda部署, slip等
  13. css背景图不失真_CSS如何实现这种背景效果?
  14. Maven使用failsafe实现集成测试
  15. Topic 7. 临床预测模型--Cox回归
  16. GitLab配置ssh key:gitlab add an ssh key
  17. java抓取百度搜索结果,一个百度搜索结果内容获取爬虫
  18. ios触摸精灵_ios触摸绘图
  19. ❤️UNITY实战进阶-OBB包围盒详解-6
  20. 文件隐藏的几种简单方法

热门文章

  1. JZOJ 5266. number
  2. JZOJ 3766. 【BJOI2014】大融合
  3. JZOJ 3453【NOIP2013中秋节模拟】连通块
  4. 服务器电源can协议,硬件接口协议之“CAN总线EMC设计”
  5. java集合类详解和使用_Java 集合类详解
  6. 最短路计数(spfa)
  7. linux+卸载+gpm服务,Linux gpm下console中使用鼠标
  8. ansys fluent udf manual 下载_Fluent内置流固耦合01 使用流程
  9. 华为如何拍火烧云_华为手机拍照功能介绍-设置通用功能
  10. Httpster –世界各地最潮的网页设计案例聚合网站