0. 前言
直方图反投影的结果是一个概率图,表示在特定图像位置找到给定图像内容的概率。假设我们现在知道一个物体在图像中的大概位置;概率图可用于找到对象的确切位置。目标对象最有可能的位置是在给定窗口内概率最大化的像素。因此,如果我们从初始位置开始并迭代移动,应该可以找到确切的对象位置,这就是均值漂移算法的核心思想。均值偏移算法被广泛应用于视觉跟踪相关应用中。
1. 均值漂移算法
均值漂移算法是一种迭代算法,用于定位概率函数的局部最大值,通过在预定义窗口内查找数据点的质心或加权平均值进行定位。然后算法将窗口中心移动到质心位置并重复该过程直到窗口中心收敛到一个稳定点。OpenCV
可以两种迭代停止标准:最大迭代次数和窗口中心位移值(低于给定值则认为位置已收敛到稳定点),这两个条件存储在 cv::TermCriteria
实例中。cv::meanShift
函数返回已执行的迭代次数,显然,算法执行的结果质量取决于在给定初始位置上提供的概率图的质量。在本节中,我们使用颜色直方图来表示图像,但我们也可以使用其他特征直方图来表示对象,例如,边缘方向直方图等。