Kernal-Based Object Tracking---基于核函数的目标跟踪

这篇博文主要实现了2003年发表于PAMI上的文章Kernal-Based Object Tracking,读者可以去读原始的文章了解其中的原理,或者参考本人的博文

   Mean Shift原理  与  最大化巴氏系数和Mean Shift的关系

下面是这个算法的主要流程图:

Kernal-Based Object Tracking---基于核函数的目标跟踪_第1张图片

上述流程图中所提的(17),(19),(22)式在我的博文  巴氏系数和Mean Shift 中可以找到。

另外还要说说该算法的尺度自适应问题。

论文中是这样说的:在上一帧的窗口尺寸的基础上,在当前帧上分三次运行Mean Shift迭代过程,第一次的窗口尺寸比上一帧的尺寸小一点,第二次迭代的窗口尺寸是上一帧的尺寸,第三次的窗口尺寸比上一帧的尺寸大一点。就这样,总共得到了三次运行Mean Shift 算法的最好结果:共有三个巴氏系数。选择其中巴氏系数最大的那个窗口尺寸作为当前帧上的最佳尺寸。同时为了让跟踪窗口的尺寸调整更加平滑,将上述最佳尺寸与上一帧的尺寸做个加权组合(也可以说是一阶滤波)。将滤波后的尺寸作为当前帧上目标的最终尺寸。在我的程序中,实现自适应尺度的Mean Shift 的函数为:

                      int MyScaleAdaptMeanShift3D(...)

也可以通过参数isScaleAdapt来控制是否开启尺度自适应。


下面请看完整代码(基于三维直方图模型):


跟踪效果展示:

Kernal-Based Object Tracking---基于核函数的目标跟踪_第2张图片

你可能感兴趣的:(算法,opencv,目标跟踪,MeanShift,巴氏系数)