粒子滤波初探
对于线性、高斯分布的运动模型,有卡尔曼滤波,那么对于非线性、非高斯的运动模型,粒子滤波器发挥出其优越性,主体思想是通过大量试验,对正确的试验状态予以适当的权重分配,从而实现根据权重增加的方向实现跟踪。
本文与其他描述粒子滤波的博文不同,先以例子引入,让初步了解的人对粒子滤波有一个大致认识。
以视频的目标跟踪为例,解说一下这个粒子滤波跟踪流程。
一、t-1时刻下:假定我们有这么一个视频
二、我们来初始化这个粒子滤波器
- 使上面的屏幕布满粒子
- 初始化每个粒子的权重
三、如果视频中有个人,而且被我们框定作为目标
- 在利用重要性采样计算粒子权重之前,要记住这时候的粒子还是布满整个屏幕的,而且权重一样
四、更新权重
- 这时候,由于我们有了目标,就可以去计算粒子的权重了(我们暂时不去了解如何计算新的权重,反正粒子附近的图像与我们框定的图像内容越相似,其得到的更新权重就越高【想要了解的可看下一篇《粒子滤波初探(二)利用粒子滤波实现视频目标跟踪工程实战》的步骤四】)
- 下图中,颜色越鲜艳的代表该粒子权重越大
五、重采样
- 接下来,很自然的想到,舍弃权重较小的粒子,但是为了维持粒子数不变,自然是要增加一些粒子,这就是重采样
- 于是有了下图
- 粒子群集中到我们框定的目标
六、然后,根据现在的权重分配及给定的状态转移矩阵,预测(生成)出下一时刻即t时刻粒子群的位置
- 假定预测的结果是这个样子
以上都是t-1时刻下操作
七、进入t时刻(我以视频边框*2表示)
- 假定我们的人已经走到这个位置
- 下面4张图,上面两张是t-1时刻下的,下面两张是t时刻的
- 左下是我们的行人移动的位置
- 右下是我们的行人和t-1时刻预测出来的t时刻的粒子位置
- 从右下图可见,我们的预测貌似偏了一些,没关系,下一步将重新计算粒子的权重
八、更新权重
- 跟第四步一样,我们以t-1时刻下我们手动标注的橙色框为目标,重新更新我们粒子的权重
- 粒子还是那些粒子,只不过权重发生变化
九、重采样&&提取位置
- 重采样:去除权重低的粒子,复制权重高的粒子
- 根据重采样后的粒子分布,可以获取大致的目标位置,也就是我们跟踪的成果,如右下图蓝框
十、更新目标
- 这里已经是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