meanshift均值漂移算法目标跟踪中的经典之经典,在opencv中已经帮我们实现了这个算法,即如下函数
//! updates the object tracking window using meanshift algorithm
int meanShift( InputArray probImage, CV_OUT CV_IN_OUT Rect& window, TermCriteria criteria );
其中,参数1:probImage: probImage是概率分布图(反向投影图)
参数2:window: 需要跟新的窗口(x,y,width,height)
其实说白了,我们希望利用meanshift算法迭代找到probImage图(概率分布图)的重心位置(通过更新window来体现)。
利用meanshift做跟踪的大致步骤:
(1) 计算目标区域的直方图:首先需要框定想要跟踪的目标(如手掌),确定目标有很多种方式,如可以人工通过鼠标选定,或者通过检测算法(如adboost手掌分类器)进行检测从而框定目标区域,之后,计算框定的目标区域的直方图(概率分布图)
(2) 计算新帧的反向投影图:接着,对于新来的一帧图像,基于步骤(1)中得到直方图