1. CamShift思想
Camshift全称是"Continuously Adaptive Mean-SHIFT",即连续自适应的MeanShift算法,是MeanShift算法的改进。CamShift的基本思想是视频图像的所有帧作MeanShift运算,并将上一帧的结果(即Search Window的中心和大小)作为下一帧MeanShift算法的Search Window的初始值,如此迭代下去。
这个过程其实和用MeanShift做跟踪一样,可以参见我的另一篇博文“Meanshift之目标跟踪”,这里把我画的流程图搬过来。
2. cvCamShift( )详解
CamShift号称连续自适应MeanShift,在算法理论上并没有什么区别,甚至在编程的流程上也没什么区别,他们的区别体现在程序内部
int cvCamShift( const void* imgProb, //概率图
CvRect windowIn, //起始跟踪区域
CvTermCriteria criteria, //迭代终止条件
CvConnectedComp* _comp, //可选参数,表示连通域结构体
CvBox2D* box ) //可选参数,存储旋转矩形的坐标,包括中心,尺寸和旋转角
和MeanShift一样,返回值是迭代次数。这里比MeanShift多了一个参数box。
函数原型见 ..\OpenCV249\sources\modules\video\src\camshift.cpp