一、概述
这是我在做手势识别的时候,在解决手势画面提取的时候看的一篇paper,这里关键是使用了动态规划来作为跟踪算法,效果是可以比拟cameshift和kf的,但在occlusion,gaps或者离线tracking的时候做的很好。
二、算法步骤
step1:对于时间的t的frame如X_t的每个pixel(x,y),首先计算出一个score q(t,x,y),称为local score,这个后面会说,score function是由你自己来选择的,然后需要算出一个Q(t,x,y),也就是global score,Q(t,x,y)是截止到时间t的(x,y)处的best tracking的分数总和(个人理解就是最大的score的路径的选择),所以这里用了dp 的思想,也就是对于Q(t,x,y),它的最优值,基本上肯定是由Q(t-1,x‘,y‘)过来的,x‘,y‘是x,y的neighborhood。
这里对照论文的两个公式基本可以看明白,然后论文里面在计算的时候加了L2的正则优化,毕竟优化方法加正则不说说说而已.........原因也很简单,(x,y)和(x‘,y‘)的距离不可能太大,因为物体是连续运动的。
step2:这里就是利用上面的得到的Q(t,x,y)和B(t,x,y)来做 traceback,最后reconstruct出来最好的路径.
用动态规划的跟踪方法有个问题,就是他一般是限定了他的tracking size,不然的话,计算量会很大,所以这里还提出了两个trick
1、一个点(x,y)只有在满足 Q(t,x,y) > max(Q(t,x,y))−T0 的时候才被考虑作为t+1时候的
predecessor,这里T0是一个自己设定的参数
2、利用上面的方法和jump penalty function来做局部调整,这样可以做到一个adaptive的窗口
三、Score function
简而言之就是为你区分image之间的不同的时候选出一个合适function,这里论文中现提出了一个简单的Motion information Scor function,这是计算一个size里面的pixel的value的和。接下来说了Eigenfaces and skin Color Score Function,其实也都只是你在实际场景的时候一个自己的权衡,后一个的关键点就是你可以选择两个score function,最后用一个w权重作为超参数来做就行了
四、总结
后面还讲了利用HMM做recognition和tracking的融合,说实话,没看懂...有机会再看看吧。