理解粒子滤波(particle filter)

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

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

2)搜索阶段-放狗对象

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

3)决策阶段form

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

4)重采样阶段Resampling循环

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

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

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

相关文章
相关标签/搜索