Aug 31, 2009

particle filter in tracking (pf_colortracker 代码阅读), CVTracker-Kevin-Aswin-Yang-UMCP

1. 定义如下两个概率
p(z_{n+1}|z_n)
状态转移,粒子滤波的一个好处在于这个概率不需要为线性高斯(卡尔曼滤波器要求线性高斯)。若为线性高斯,则为
z_{n+1}=A z_n + R r, \quad r\sim N(0,I)
先定义 Covariance matrix C, 在 matlab 中,做 Cholesky factorization, R = chol(C)'.
Cov[Rr]=R E[r*r'] R' = C
其二输出概率
p(x_n|z_n)
在 tracking 中,有一个 fixed or adaptive template T_0, 当前状态下区域为 T_{z_n},选取 feature f,定义 features 的距离为 D(f1,f2), 则 likelihood 可以为
p(x_n|z_n) \propto \exp\{-D^2(f(T_0),f(T_{z_n}))/(2 \sigma^2)\}
若选取颜色直方图,可以使用 Bhattacharyya distance[1]

2. pf_colortracker Matlab 代码
  • 定义 7D 状态,(x, x', y, y', 3 parameters of ellipse)
  • 定义 A, r
  • 给定目标位置,采用 fixed template, 提取 template 的 color histogram
  • 粒子初始化,给定 z_fixed, 取一定粒子,z_0 = z_fixed + R0 * randn (R0 和状态转移时 R 是不同的,为什么),此时 weight = const
  • 从第一帧开始,粒子滤波
  • 输出,计算 (z_n, w_n) 的 weighted mean,作为结果

3. 粒子滤波过程
参见 [2], 粒子初始化后,对应 p647 图第二排,所以从第三排开始循环
  • 计算 Likelihood, w 相乘 likelihood,再归一化
  • 此时对应 z_n^l, w_n^l, l indexing particles
  • sampling from (13.119), 参见 p646 中一段话,首先选择 components by sampling from discrete distribution, (z_n^l, w_n^l),然后每个 component (现在是可重复的) 再根据状态转移进行采样(这样保证每个粒子都是不同的)
  • 代码里面循环内最后一个步骤是 sampling components,即第二排,这个不能作为结果

4. 更多的 likelihood 和 状态转移见[3]

5. Visual Tracking and Recognition Using Appearance-Adaptive Models in Particle
Filters
by Merl
考虑了
  • Adaptive observation model.
  • Adaptive state transition model. (包含 Adaptive number of particles)
  • Handling occlusion.


[1] Visual Tracking using Sensor Fusion with Particle Filter
[2] Bishop 书 p647 图,公式(13.119)
[3] Pixels and Particles Sequential Monte Carlo for Image Analysis

CVTracker-Kevin-Aswin-Yang-UMCP
这是 Visual tracking and recognition using appearance-adaptive models in particle filters
的代码,见 D:\lib
有一 linux 版本,没多大问题,可能要增加一些头文件。
用在 trecvid 上效果似乎不好。可能一些参数没调好。

0 comments: