基于例子滤波的物体跟踪

粒子滤波算法原理及python实现 粒子滤波基础原理及python代码实现 阅读详情

一直都觉得粒子滤波是个挺牛的东西,每次试图看文献都被复杂的数学符号搞得看不下去。一个偶然的机会发现了Rob Hess(http://web.engr.oregonstate.edu/~hess/)实现的这个粒子滤波。从代码入手,一下子就明白了粒子滤波的原理。根据维基百科上对粒子滤波的介绍(http://en.wikipedia.org/wiki/Particle_filter),粒子滤波其实有很多变种,Rob Hess实现的这种应该是最基本的一种,Sampling Importance Resampling (SIR),根据重要性重采样。下面是我对粒子滤波实现物体跟踪的算法原理的粗浅理解:

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的思想也是(比如用在最简单的直线拟合上),既然我不知道直线方程是什么,那我就随机的取两个点先算个直线出来,然后再看有多少点符合我的这条直线。哪条直线能获得最多的点的支持,哪条直线就是目标直线。想法非常简单,但效果很好。

 

扯远了,下面还是说说代码吧。Rob Hess的代码好像是linux上的,我稍微改了下,让Windows+VS2008能跑。main函数在track1.c里,默认是处理附带的视频,当然可以方便的改成从摄像头输入视频(cvCaptureFromCAM)。我用的是opencv2.0,没有测试低于2.0的版本。程序开始后,读入第一帧图像后,需要用鼠标拖动出跟踪目标区域,(然后按回车)。跟踪区域较小时速度较快,跟踪区域大时明显变得很卡。代码还需要gsl库的支持,我用的是gsl1.8,下面提供了gsl1.8安装文件的下载。这里是全部代码和相关的VS2008工程文件

 

Hope you find it useful!


转载自:http://www.cnblogs.com/yangyangcv/archive/2010/05/23/1742263.html

【计算机视觉】基于Kalman滤波器的进行物体的跟踪 Kalman(卡尔曼)滤波是一种高效率的递归滤波器(自回归滤波器), 它能够从一系列的不完全及包含噪声的测量中,估计动态系统的状态。Kalman滤波的一个典型实例是从一组有限的,包含噪声的,对物体位置的观察序列(可能有偏差)预测出物体的位置的坐标及速度。 Kalman滤波器的基本思想是,若有一组强而合理(合理的意思是“限制非常宽松使得这种方法对真实世界中出现的相当多的实际问题都有用”)的假设,给出系统的历史测量值,则可以建立最大化这些早前测量值的后验概率的系统状态模型。 另外,无需存储很长的早前测量历史,我 阅读详情

相关推荐

基于粒子滤波的物体跟踪

一直都觉得粒子滤波是个挺牛的东西,每次试图看文献都被复杂的数学符号搞得看不下去。一个偶然的机会发现了Rob Hess()实现的这个粒子滤波。从代码入手,一下子就明白了粒子滤波的原理。根据维基百科上对粒子滤波的介绍(),粒子滤波其实有很多变种,Rob Hess实现的这种应该是最基本的一种,Sampling Importance Resampling (SIR),根据重要性重采样。该阶段要人工指定跟踪目标,程序计算跟踪目标的特征,比如可以采用目标的颜色特征。

yyytucj的博客 920

粒子滤波简介

粒子滤波基于蒙特卡洛方法,用后验概率中随机抽取的粒子集对目标概率密度函数进行近似。本文将简要介绍如何用粒子滤波进行定位并附上相关代码实例。

YoungGy的专栏 6738

OpenCV-物体跟踪

物体跟踪是指在视频序列中,对某一特定物体进行持续定位的过程。它通常涉及在视频的第一帧中手动或自动选择目标物体,然后在后续帧中跟踪该物体的位置和运动轨迹。

2301_77698138的博客 2335

粒子滤波(Particle Filter)

1.粒子滤波是动态系统非线性非高斯的情况2.粒子滤波无法像卡尔曼滤波求得解析解,需要用蒙特卡洛采样3.采取重要性采样方法近似计算也无法直接求解粒子滤波问题4.序列重要性采样得到t时刻与t...

咔咔响 1万+

基于粒子滤波的物体跟踪zz

一直都觉得粒子滤波是个挺牛的东西,每次试图看文献都被复杂的数学符号搞得看不下去。一个偶然的机会发现了Rob Hess(http://web.engr.oregonstate.edu/~hess/)实现的这个粒子滤波。从代码入手,一下子就明白了粒子滤波的原理。根据维基百科上对粒子滤

1023

粒子滤波

目录 1. 状态空间模型 2. 粒子滤波 2.1 概念 2.2 粒子滤波算法原理 2.3 局限性 3. 代码实现 1. 状态空间模型 状态空间模型是动态时域模型,以隐含着的时间为自变量。状态空间模型在经济时间序列分析中的应用正在迅速增加。其中应用较为普遍的状态空间模型是由Akaike提出并由Mehra进一步发展而成的典型相关(canonical correlation)方法...

满腹的小不甘 8138

详解卡尔曼滤波原理

转载:https://blog.youkuaiyun.com/lybaihu/article/details/54943545   卡尔曼滤波原理及实现 前一段时间,做项目研究了一下卡尔曼滤波,并且在项目当中实现了一个物体跟踪的功能,所以,借着新鲜劲儿,本次博客对卡尔曼滤波进行一次整理。 卡尔曼滤波是什么 卡尔曼滤波能做什么 卡尔曼滤波的工作原理 举个栗子 卡尔曼滤波是什么 卡尔曼滤波适用于估...

dengm155的专栏 5849

粒子滤波算法及其实现

该算法通过使用一组随机采样的状态粒子来表示后验分布,并根据测量更新这些粒子的权重,从而实现状态估计。粒子的权重根据观测数据的似然度进行更新,从而使得具有较高似然度的粒子在状态估计中起更大的作用。重采样:根据粒子的权重,对粒子进行重采样。重采样过程中,具有较高权重的粒子更有可能被选中,而具有较低权重的粒子更有可能被删除。最终,通过粒子滤波算法,我们可以得到一组粒子,其权重反映了后验概率分布的形状,从而实现了状态估计。初始化粒子集合:根据先验分布,使用随机采样方法生成一组粒子,并为每个粒子分配相同的权重。

2301_79326559的博客 455

卡尔曼滤波原理及实现

卡尔曼滤波是什么 卡尔曼滤波适用于估计一个动态系统的最优状态。即便是观测到的系统状态参数含有噪声,观测值不准确,卡尔曼滤波也能够完成对状态真实值的最优估计。网上大多数的教程讲到卡尔曼的数学公式推导,会让人很头疼,难以把握其中的主线和思想。所以我参考了国外一位学者的文章,讲述卡尔曼滤波的工作原理,然后编写了一个基于OpenCV的小程序给大家做一下说明。下面...

weixin_34167819的博客 177

粒子滤波网络信息读后感

粒子滤波 粒子指什么?是指目标状态的一种可能性(一个粒子),滤波就是滤出目标最可能的状态。在估计理论中指由当前和以前的观测值来估计目标当前的状态。粒子滤波的含义是目标状态传播的后验概率可以由若干个粒子近似表示。 http://www.cnblogs.com/yangyangcv/archive/2010/05/23/1742263.html 一直都觉得粒子滤波是个挺牛的东西,每次试图看

聚焦AI技术前沿,深度解析大模型原理与多场景应用,探索最新突破与落地实践,助力行业洞悉趋势,驱动智能转型,赋能千行百业。 904

实战OpenCV之物体跟踪

与传统的跟踪方法相比,基于Transformer的跟踪器可以在复杂的场景下保持较高的跟踪精度,并且对遮挡、光照变化和尺度变化等情况具有更好的鲁棒性。特别是近年来,随着深度学习技术的发展,基于深度学习的物体跟踪方法已经取得了显著的进步,并在许多实际应用中取得了非常好的效果。参数image为输入的图像,参数boundingBox为目标物体的位置和大小,跟踪后会被更新。下面的实战代码实现了一个基于TrackerVit的物体跟踪应用,可以选择从视频文件或摄像头实时捕获视频流,并对选定的目标进行跟踪。

hope_wisdom的技术博客 3646

kalman滤波(OpenCV中的KalmanFilter类)

kalman滤波(OpenCV中的KalmanFilter类)_yuanxue18的博客-优快云博客

pangxing6491的博客 960

DDS(Direct Digital Synthesizer)数字频率合成器

随着数字技术在仪器仪表和通信系统中的广泛使用,可从参考频率源产生多个频率的数 字控制方法诞生了,即直接数字频率合成(DDS)。 直接数字合成(DDS)是一种产生模拟波形(通常是正弦波)的方法,它通过产生数字形式的时变信号,然后进行数模转换。由于DDS设备内的操作主要是数字的,它可以提供输出频率之间的快速切换,良好的频率分辨率,并在广泛的频率频谱上操作。随着设计和工艺技术的进步,今天的DDS设备非常紧凑,功耗很小。 上面是比较书面的语言,其实简单地说就是一个信号发生器模块,主要是产生频率可调的三角波正弦波。

denghuajing的博客 4864

基于EKF的航线轨迹预测(完整代码)

简单地分析了轨迹追踪中基础算法EKF的由来和计算流程,也用简单的例子做了仿真实现,发现了EKF的些许不足,为将来的深入分析和改进提供了思路

tycodehh的博客 2950

清理异常值(MAD:绝对中位差)

清理异常数据: 中位数绝对偏差(MAD):用来描述单变量样本在定量数据中可变的一种标准 在统计学中,绝对中位差是刻画一元数据样本变化的一个鲁棒度量。由公式可以看出,其求解还算简单,给定一个数据样本集,首先求其中位数,然后求原始数据减去中位数的绝对值从而形成一个新的数据样本,再求新的数据样本的中位数即为绝对中位差。比如说有一个数据样本集X={2 3 8 7 9 6 4},这时候数据的中位数是6,原...

spider_man 1万+

【滤波跟踪】基于自适应卡尔曼滤波运动物体跟踪,实际轨迹 滤波轨迹 位置估计值误差附Matlab实现

本文针对运动物体跟踪问题,提出一种基于自适应卡尔曼滤波的跟踪算法。该算法通过自适应地调整卡尔曼滤波器的状态噪声协方差矩阵,有效地提高了滤波精度,降低了位置估计值误差。文章首先分析了自适应卡尔曼滤波算法的原理,然后以实际轨迹数据为例,展示了该算法在运动物体跟踪中的应用效果。最后,通过比较实际轨迹、滤波轨迹和位置估计值误差,验证了自适应卡尔曼滤波算法的优越性。本文还提供了完整的Matlab实现代码,便于读者理解和实践。1. 绪论运动物体跟踪是计算机视觉、机器人技术、自动驾驶等领域的关键技术之一。

m0_57702748的博客 1552

F5 GTM DNS 实战指南:智能DNS的监控与健康检查机制

本文深入解析F5 BIG-IP GTM智能DNS的核心机制,重点阐述其监控与探针两大功能如何协同工作。监控器负责深度检查服务器应用健康,确保服务可用性;探针则实时测量网络路径质量,实现基于延迟的智能流量调度。文章通过实战配置步骤,指导如何构建逻辑架构、建立iQuery通信、配置业务级健康检查及探针,从而构建高可用、高性能的全局负载均衡解决方案。

weixin_29240711的博客 469

【滤波跟踪】自适应卡尔曼滤波运动物体跟踪(实际轨迹 滤波轨迹 位置估计值误差)【含Matlab源码 4622期】

自适应卡尔曼滤波运动物体跟踪(实际轨迹 滤波轨迹 位置估计值误差) 完整的代码,方可运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 914

学习海康VisionMaster之表面缺陷滤波

本文介绍了VisionMaster中表面缺陷滤波技术的应用。该技术通过数学变换抑制背景干扰、增强缺陷特征,适用于电池铝壳、垫圈/螺丝等无纹理背景的表面缺陷检测(划痕、凹坑、异物等)。操作流程包括:图像导入、轮廓定位、位置修正、参数设置(重点讲解滤波核尺寸/数量/标准差等关键参数的调整策略)。文章通过案例演示了如何通过多方向滤波响应识别表面划伤,并指出需结合blob分析进一步优化检测结果。该技术对工业质检具有实用价值,参数设置需结合缺陷特征与背景特性灵活调整。

yuhouxiyang的专栏 2826

R语言机器学习算法实战系列(十一)MLP算法分类器 (Multi-Layer Perceptrons)

本文介绍了多层感知器(MLP)分类算法的原理和计算步骤,并通过R语言实现MLP模型。MLP是一种前馈神经网络,包含输入层、隐藏层和输出层,通过激活函数引入非线性,利用前向传播和反向传播进行训练。文章详细描述了数据预处理、数据切割、模型构建、预测和评估等步骤,并提供了乳腺癌数据集(BreastCancer_clean.csv)的下载链接。通过R包如neuralnet和caret,读者可以逐步实现MLP模型,并评估其分类性能。

专注生信领域 933
上一篇: cvCalcOpticalFlowPyrLK的使用
下一篇: meanShift跟踪算法概述
淡淡的生活
博客等级 码龄16年 341粉丝 8原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值