Mh?x???G(i?1nxi?x)w(xi)(xi?x)h nxi?xG()w(xi)?hi?1 (8)
我们可以看到,如果对所有的采样点xi满足
(1)w(xi)?1
??1 if x?1(2) G(x)??
??0 if x?1 则(8)式完全退化为(1)式,也就是说,我们所给出的扩展的Mean Shift形式在某些情况下会
退化为最基本的Mean Shift形式。
Mean Shift的物理含义
正如上一节直观性的指出,Mean Shift指向概率密度梯度方向,这一节将证明Mean Shift向量Mh?x?是归一化的概率密度梯度。在本节我们还给出了迭代Mean Shift算法的详细描述。
概率密度梯度
对一个概率密度函数f(x),已知d维空间中n个采样点xi,i=1,…,n, f(x)的核函数估计(也称为Parzen窗估计)为,
?(x)?f其中
??xi?x?K??w(xi)i?1?h? ndh?i?1w(xi)n (9)
w(xi)?0是一个赋给采样点xi的权重
K(x)是一个核函数,并且满足?k(x)dx?1
我们另外定义:
核函数K(x)的剖面函数k(x),使得K(x)?k??
x2
2(10);
k(x)的负导函数g(x),即g(x)??k'(x),其对应的核函数G(x)?gx?? (11)
概率密度函数f(x)的梯度?f(x)的估计为:
?x?x2?i?1?x?xi?k?i?h????f(x)??f(x)?nhd?2?i?1w(xi)n'2?w(xi)???
(12)
由上面的定义, g(x)??k'(x),G(x)?g?x?x2?i?1?xi?x?G?i?h???f(x)?nhd?2?i?1w(xi)n2??,上式可以重写为
x2?w(xi)??? (13)
???xi?x2?nn????xi?x?x?xGw(x)????i?G?w(xi)??i?1i?????i?1h2???h????? ?2?n?dnh??xi?x???h?i?1w(xi)?Gw(x)?i??i?1??h????????上式右边的第二个中括号内的那一部分就是(8)式定义的Mean Shift向量,第一个中括号内
?(x),而(9)式定的那一部分是以G(x)为核函数对概率密度函数f(x)的估计,我们记做fG?(x),因此(11)式可以重新写为: ?(x)我们重新记做f义的fK?(x)?2f?(x)M?x? ?f(x)??f?GhKh2由(12)式我们可以得出,
(14)
?(x)12?fKMh?x??h
?2fG(x) (15)
(15)式表明,用核函数G在x点计算得到的Mean Shift向量Mh?x?正比于归一化的用核函
?(x)的梯度,归一化因子为用核函数G估计的x点的概率密数K估计的概率密度的函数fK度。因此Mean Shift向量Mh?x?总是指向概率密度增加最大的方向。
Mean Shift算法 算法步骤
我们在前面已经指出,我们在提及Mean Shift向量和Mean Shift算法的时候指代不同的
概念,Mean Shift向量是名词,指的是一个向量;而Mean Shift算法是动词,指的是一个迭代的步骤。我们把(8)式的x提到求和号的外面来,可以得到下式,
xi?x)w(xi)xihMh?x??i?1n?x
x?xG(i)w(xi)?hi?1?G(n (16)
我们把上式右边的第一项记为mh(x),即
xi?x)w(xi)xihmh(x)?i?1n
xi?xG()w(xi)?hi?1?G(n (17)
给定一个初始点x,核函数G(X), 容许误差?,Mean Shift算法循环的执行下面三步,直至结束条件满足, (1)。计算mh(x) (2)。把mh(x)赋给x
(3)。如果mh(x)?x??,结束循环;若不然,继续执行(1)。
由(16)式我们知道, mh(x)?x?Mh?x?,因此上面的步骤也就是不断的沿着概率密度的梯度方向移动,同时步长不仅与梯度的大小有关,也与该点的概率密度有关,在密度大的地
方,更接近我们要找的概率密度的峰值,Mean Shift算法使得移动的步长小一些,相反,在密度小的地方,移动的步长就大一些。在满足一定条件下,Mean Shift算法一定会收敛到该点附近的峰值,这一收敛性暂时不做证明。
Mean Shift的应用
从前面关于Mean Shift和概率密度梯度的关系的论述,我们可以清楚的看到,Mean Shift算法本质上是一个自适应的梯度上升搜索峰值的方法,如下图所示,如果数据集
n?xi,i?1,...?服从概率密度函数f(x),给定一个如图初始点x,Mean Shift算法就会一步步
的移动,最终收敛到第一个峰值点。从这张图上,我们可以看到Mean Shift至少有如下三方面的应用:(1)聚类,数据集?xi,i?1,...n?中的每一点都可以作为初始点,分别执行Mean Shift算法,收敛到同一个点算作一类;(2)模态的检测,概率密度函数中的一个峰值就是一个模态,
Mean Shift在峰值处收敛,自然可以找到该模态。(3)最优化,Mean Shift可以找到峰值,自然可以作为最优化的方法,Mean Shift算法进行最优化的关键是要把最优化的目标转化成Mean Shift隐含估计的概率密度函数。
图4。Mean Shift算法示意图
Mean Shift算法在许多领域获得了非常成功的应用,下面简要的介绍一下其在图像平滑,图像分割以及物体跟踪中的应用,一来说明其强大的生命力,二来使对上文描述的算法有一个直观的了解。
Mean shift跟踪
我们用一个物体的灰度或色彩分布来描述这个物体,假设物体中心位于x0,则该物体可以表示为
?xs?x0?u?C?k?iq?hi?1?n2????bxs?u?
i?????? (29)
候选的位于y的物体可以描述为
?xs?y?u(y)?Ch?k?ip?hi?1?nh2????b?xis??u?
???? (30)
?u(y)与q?u最相似。 因此物体跟踪可以简化为寻找最优的y,使得p?(y)来度量分布,即 ?u(y)与q?u的最相似性用Bhattacharrya系数?p?(y)???p(y),q???pu(y)q?u ?u?1m (31)
?u?y?0?点泰勒展开可得, 式(31)在p
qu1m1m ??p(y),q???p(y0)qu??pu(y)2u?12u?1pu(y0) (32)
把式(30)带入式,整理可得,
C1m??p(y),q???p(y0)qu?h2u?12?y?xiwk?i??hi?1?n2? ??? (33)
其中,
m
wi???[b(xi)?u]u?1qu pu(y0)对式(33)右边的第二项,我们可以利用Mean Shift算法进行最优化。
连续的自适应的meanshift算法(Continuously Adaptive Mean-Shift算法)
Bradski根据Mean Shift算法的不足,提出了Cam Shift算法。Cam Shift算法,即Continuously Adaptive Mean Shift算法,即连续的自适应Mean Shift。
基本思想:就是对视频图像的多帧进行Mean Shift运算,将上一帧结果作为下一帧的初始值,迭代下去。
该算法采用不变矩对目标的尺寸进行估算,实现了连续自适应地调整跟踪窗口的大小和位置,并将其应用在对连续彩色图像序列中的运动目标的快速跟踪。它主要通过视频图像中运动物体的颜色信息来达到跟踪的目的。
简单点说,Mean Shift是针对单张图片寻找最优迭代结果,而Camshift则是针对视频序列来处理,并对该序列中的每一帧图片都调用Mean Shift来寻找最优迭代结果。正是由于Camshift针对一个视频序列进行处理,从而保证其可以不断调整窗口的大小,如此一来,当目标的大小发生变化的时候,该算法就可以自适应地调整目标区域继续跟踪。 Camshift算法用于追踪,可以简单分为三步: Camshift追踪步骤一:直方图及其反投影
(1)直方图:直方图是一个简单的表,它给出了一幅图像或一组图像中拥有给定数值的像素数量。因此,灰度图像的直方图有256个条目(或称为容器)。0号容器给出值为0的像素数目,1号容器给出值为1的像素个数,以此类推。
(2)直方图反投影:把目标概率分布映射到观测图像的简单方法。其作用是,替换一个输入图像中每一个像素值,使其变成感兴趣区域(ROI)的直方图中对应的概率。
(3)建立颜色概率模型:因为meanshift主要依靠颜色特性追踪的,最容易受到光照等的影响。因此需要把样本中的每个像素从RGB空间转换到HSV空间。统计其H分量的直方图,并对该直方图进行归一化处理,就可以得到肤色在H空间的概率分布,该概率分布就是所需的跟踪模式。 处理步骤: (1)RGB颜色空间对光照亮度变化较为敏感,为了减少此变化对跟踪效果的影响,首先将图像从RGB空间转换到HSV空间。(2)然后对其中的H分量作直方图,在直方图中代表了不同H分量值出现的概率或者像素个数,就是说可以查找出H分量大小为h的概率或者像素个数,即得到了颜色概率查找表。(H色调)。(3)将图像中每个像素的值用其颜色出现的概率对替换,就得到了颜色概率分布图。这个过程就叫反向投影,颜色概率分布