您的位置:首页 > 理论基础

计算机视觉——总结:使用粒子滤波进行目标跟踪

2014-06-25 11:04 465 查看
1. 基本思想
粒子滤波(wiki)本质上是一种表示概率分布的方法,思想和蒙特卡洛方法(wiki)近似。蒙特卡洛方法是用频率来近似概率,而粒子滤波方法中是使用粒子分布的密集程度来近似表示概率分布,这种方法可以形象的表示为向一个带磁力的平面抛洒铁粉,磁力大(概率大)的地方铁粉就比较密集。同样的,如果粒子带权重的话,也可以通过权重的大小来表示概率密度的分布。而后一种带权重的表示方法也被用于粒子滤波跟踪过程中。
而目标跟踪,就是在得到观测(当前帧的图像)之后,对状态(目标的位置)的后验概率的估计。当然,数学原理上是用贝叶斯滤波那一套从头开始推到相当复杂,但是在实际使用的时候,要做各种简化的假设(马尔可夫假设、高斯分布假设等等),最终得到一个比较简单的形式。
2. 基本步骤
一般粒子滤波的步骤简化到最后分为以下三步:
a. 初始化粒子,当前粒子一般权重相等,在目标附近高斯分布
b. 得到新一帧的图像,根据此帧图像,对原来的粒子的权重进行调整,得到一个状态的估计,确定当前目标位置(加权平均,或取权重最大的粒子等)
c. 粒子的演化,回到b
不考虑数学基础(也就是不解决“为什么这样就可以”的问题)的话,其实就是这么简单。
3. 重采样
上述基本的粒子滤波过程有这样一个问题:在粒子演化的过程中,容易出现一个粒子的权重特别大,而其他粒子的权重都特别小,以至于对最终结果都没有影响,这样的话很大一部分的计算量就耗费在了对最终结果没什么影响的粒子上了。这是粒子滤波的一种退化。
解决这一问题的方法有很多,经常用到的就是重采样的方法。
重采样,就是在上述退化现象很严重的时候,重新生成一遍粒子,当然,也可以每一帧图像都重新生成一遍粒子。生成粒子的原则是,以旧粒子的权重为概率生成新粒子,得到新粒子的权重相同。那么,在权重很大的旧粒子附近就会出现很多个新粒子,而在权重较小的旧粒子附近的新粒子就会很少,甚至没有。重采样过后,所有粒子的权重相同,对最终结果的影响也相同,这就解决了粒子滤波的退化问题。
4. 例程
我根据《A color-based particle filter》这篇文章(下载)实现了一个基于颜色直方图特征的粒子滤波跟踪代码。流程是这样的:
a. 确定初始时目标的位置,提取目标的颜色特征,即颜色直方图,8*8*4(H*S*V)
b. 初始化粒子,当前粒子一般权重相等,在目标附近高斯分布
c. 获取新一帧的图像,提取粒子区域的图像特征,即颜色直方图。根据颜色直方图和目标的颜色直方图之间的***距离,确定粒子的权重
d. 根据粒子的权重,以加权平均的方式确定出目标的位置
e. 根据粒子的权重,对粒子进行重采样,回到c
以上步骤中颜色特征可以换成其他图像特征,相应的粒子权重的计算过程也可以进行改变。
具体代码保存在Github,可下载。

转载来自:http://guoyb.com/Tech/32.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: