meanShift,均值漂移,在聚类、图像平滑、切割、跟踪等方面有着广泛的应用。meanShift这个概念最早是由Fukunage在1975年提出的,其最初的含义正如其名:偏移的均值向量;但随着理论的发展,meanShift的含义已经发生了非常多变化。现在,我们说的meanShift算法,通常是指一个迭代的步骤,即先算出当前点的偏移均值,然后以此为新的起始点,继续移动,直到满足一定的结束条件。
在非常长一段时间内,meanShift算法都没有得到足够的重视,直到1995年还有一篇重要论文的发表。该论文的作者Yizong Cheng定义了一族核函数,使得随着样本与被偏移点的距离不同,其偏移量对均值偏移向量的贡献也不同。其次,他还设定了一个权重系数,使得不相同本点的重要性不一样,这大大扩展了meanShift的应用范围。此外,还有研究人员将非刚体的跟踪问题近似为一个meanShift的最优化问题,使得跟踪能够实时进行。眼下,利用meanShift进行跟踪已经相当成熟。
meanShift算法事实上是一种核密度预计算法,它将每一个点移动到密度函数的局部极大值点处,即,密度梯度为0的点,也叫做模式点。在非參数预计部分(请參考http://blog.csdn.net/carson2005/article/details/7243425),我们提到,多维核密度预计能够表示为:
预计为0。meanShift向量也总是指向密度添加最大的方向,这能够由上式中的分子项来保证,而分母项则体现每次迭代核函数移动的步长,在不包括感兴趣特征的区域内,步长较长,而在感兴趣区域内,步长较短。也就是说,meanShift算法是一个变步长的梯度上升算法,或称之为自适应梯度上升算法。