粒子滤波初探(一)利用粒子滤波实现视频目标跟踪的大致流程

粒子滤波初探


对于线性、高斯分布的运动模型,有卡尔曼滤波,那么对于非线性、非高斯的运动模型,粒子滤波器发挥出其优越性,主体思想是通过大量试验,对正确的试验状态予以适当的权重分配,从而实现根据权重增加的方向实现跟踪。

本文与其他描述粒子滤波的博文不同,先以例子引入,让初步了解的人对粒子滤波有一个大致认识。

以视频的目标跟踪为例,解说一下这个粒子滤波跟踪流程。

 一、t-1时刻下:假定我们有这么一个视频

粒子滤波初探(一)利用粒子滤波实现视频目标跟踪的大致流程_第1张图片

二、我们来初始化这个粒子滤波器

  • 使上面的屏幕布满粒子
  • 初始化每个粒子的权重

 粒子滤波初探(一)利用粒子滤波实现视频目标跟踪的大致流程_第2张图片

三、如果视频中有个人,而且被我们框定作为目标

  • 在利用重要性采样计算粒子权重之前,要记住这时候的粒子还是布满整个屏幕的,而且权重一样

 粒子滤波初探(一)利用粒子滤波实现视频目标跟踪的大致流程_第3张图片粒子滤波初探(一)利用粒子滤波实现视频目标跟踪的大致流程_第4张图片

四、更新权重

  • 这时候,由于我们有了目标,就可以去计算粒子的权重了(我们暂时不去了解如何计算新的权重,反正粒子附近的图像与我们框定的图像内容越相似,其得到的更新权重就越高【想要了解的可看下一篇《粒子滤波初探(二)利用粒子滤波实现视频目标跟踪工程实战》的步骤四
  • 下图中,颜色越鲜艳的代表该粒子权重越大

粒子滤波初探(一)利用粒子滤波实现视频目标跟踪的大致流程_第5张图片

五、重采样

  • 接下来,很自然的想到,舍弃权重较小的粒子,但是为了维持粒子数不变,自然是要增加一些粒子,这就是重采样
  • 于是有了下图
  • 粒子群集中到我们框定的目标

 粒子滤波初探(一)利用粒子滤波实现视频目标跟踪的大致流程_第6张图片

六、然后,根据现在的权重分配及给定的状态转移矩阵,预测(生成)出下一时刻即t时刻粒子群的位置

  • 假定预测的结果是这个样子

粒子滤波初探(一)利用粒子滤波实现视频目标跟踪的大致流程_第7张图片

以上都是t-1时刻下操作

 

七、进入t时刻(我以视频边框*2表示)

  • 假定我们的人已经走到这个位置
  • 下面4张图,上面两张是t-1时刻下的,下面两张是t时刻的
  • 左下是我们的行人移动的位置
  • 右下是我们的行人和t-1时刻预测出来的t时刻的粒子位置
  • 从右下图可见,我们的预测貌似偏了一些,没关系,下一步将重新计算粒子的权重

 粒子滤波初探(一)利用粒子滤波实现视频目标跟踪的大致流程_第8张图片

八、更新权重

  • 跟第四步一样,我们以t-1时刻下我们手动标注的橙色框为目标,重新更新我们粒子的权重
  • 粒子还是那些粒子,只不过权重发生变化

粒子滤波初探(一)利用粒子滤波实现视频目标跟踪的大致流程_第9张图片

九、重采样&&提取位置

  • 重采样:去除权重低的粒子,复制权重高的粒子
  • 根据重采样后的粒子分布,可以获取大致的目标位置,也就是我们跟踪的成果,如右下图蓝框

粒子滤波初探(一)利用粒子滤波实现视频目标跟踪的大致流程_第10张图片

 十、更新目标

  • 这里已经是t时刻的末端:
  • 我们以此刻蓝框的内容作为我们的目标,以便t+1时刻用以更新粒子权重
  • 我们以粒子群从t-1时刻到t时刻重采样后(即从橙色框移动到蓝色框的运动方向),作为粒子群下一次运动方向的依据,预测(生成)出t+1时刻粒子群的位置,接下来的步骤同第六步
  • 到这里,t时刻结束,进入t+1时刻

到这里,一共十步,大致把这个粒子滤波的目标跟踪流程理了一遍。


下一篇:粒子滤波初探(二)利用粒子滤波实现视频目标跟踪工程实战 ,有可运行代码,是个人根据几位先驱做作出的努力翻译到opencv2.49下的,并做出了一些修正,希望各位指出不足和作出修正


参考资料:

https://blog.csdn.net/guoyunlei/article/details/78183530

https://blog.csdn.net/gwplovekimi/article/details/80359512

https://blog.csdn.net/yang_xian521/article/details/6928131

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

你可能感兴趣的:(Opencv,python机器学习)