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:
Post a Comment