通过定义概率密度梯度的估计为概率密度估计的梯度,并采用非参数核密度估计方法来估计概率密度,经过一些数学推导可以得出:某个点的均值漂移向量正比于该点的概率密度梯度的估计和该点的概率密度估计的比值。该方法可以用来寻找概率密度的众数,这些众数位于概率密度梯度为零的地方。该方法可以在不估计概率密度的情况下直接定位到这些众数,因为均值漂移向量指向概率密度上升最快的方向,通过不断地迭代更新均值漂移向量就可以定位到这些众数。在用均值漂移算法搜寻概率密度众数的过程中,均值漂移向量具有自适应的步长,即,概率密度小的地方步长大,而概率密度大的地方步长小,因此,均值漂移算法可以看成是一种自适应的梯度上升方法。均值漂移算法由两步组成:第一步,计算当前点所在的窗口内的样本点的均值漂移向量;第二步,根据均值漂移向量移动窗口。上述两步交替进行迭代直到收敛到稳定点,即,概率密度梯度为零的点,也就是概率密度的众数。
此算法最初于1975年由福永圭之助(Keinosuke Fukunaga,美国)和L.D.霍斯泰特勒(Larry D. Hostetler,美国)提出,用于解决模式识别中的聚类和数据过滤问题。此算法用于聚类时,通过从每一个样本点开始进行迭代,每次迭代都在当前样本点位置加上均值漂移向量来更新样本点的位置,直到收敛到一个不动点,即,均值漂移向量为零的点,这个点就是该样本点的聚类中心位置。1995年,程益宗(音译,Yizong Cheng,美国)对其进行了扩展,主要包括三个方面:一是允许采用非平坦的核函数,二是样本点可以带有权重,三是漂移操作可以在样本点的任意子集上进行。这些扩展增加了均值漂移算法的灵活性和适用范围。在2002年和2003年,D.科马尼丘(Dorin Comaniciu,美国)和P.米尔(Peter Meer,美国)将扩展了的均值漂移算法引入到计算机视觉领域,分别用来解决图像分割、图像平滑和物体跟踪等问题。