meanshift算法

转自http://blog.csdn.net/lu597203933/article/details/17042331
可参考http://blog.csdn.net/carson2005/article/details/7337432
http://wenku.baidu.com/view/995c9c1fff00bed5b9f31d88.html?re=view
https://en.wikipedia.org/wiki/Mean_shift
http://blog.csdn.net/ttransposition/article/details/38514127

  • 原理说明:

      meanShift,均值漂移,在聚类、图像平滑、分割、跟踪等方面有着广泛的应用。meanShift这个概念最早是由Fukunage在1975年提出的,其最初的含义正如其名:偏移的均值向量;但随着理论的发展,meanShift的含义已经发生了很多变化。如今,我们说的meanShift算法,一般是指一个迭代的步骤,即先算出当前点的偏移均值,然后以此为新的起始点,继续移动,直到满足一定的结束条件。
      在很长一段时间内,meanShift算法都没有得到足够的重视,直到1995年另一篇重要论文的发表。该论文的作者Yizong Cheng定义了一族核函数,使得随着样本与被偏移点的距离不同,其偏移量对均值偏移向量的贡献也不同。其次,他还设定了一个权重系数,使得不同样本点的重要性不一样,这大大扩展了meanShift的应用范围。此外,还有研究人员将非刚体的跟踪问题近似为一个meanShift的最优化问题,使得跟踪可以实时进行。目前,利用meanShift进行跟踪已经相当成熟。
      给定d维空间Rd的n个样本点 ,i=1,…,n,在空间中任选一点x,那么Mean Shift向量的基本形式定义为:
               这里写图片描述

    Sk是一个半径为h的高维球区域,满足以下关系的y点的集合,
           这里写图片描述
    k表示在这n个样本点xi中,有k个点落入Sk区域中.

      以上是官方的说法,即书上的定义,我的理解就是,在d维空间中,任选一个点,然后以这个点为圆心,h为半径做一个高维球,因为有d维,d可能大于2,所以是高维球。落在这个球内的所有点和圆心都会产生一个向量,向量是以圆心为起点落在球内的点位终点。然后把这些向量都相加。相加的结果就是Meanshift向量。

      在二维情况下更易于理解,如图所示,其中黄色箭头就是Mh(meanshift向量)。
    这里写图片描述

      再以meanshift向量的终点为圆心,再做一个高维的球。如下图所以,重复以上步骤,就可得到一个meanshift向量。如此重复下去,meanshift算法可以收敛到概率密度最大得地方。也就是最稠密的地方。
    这里写图片描述
      最终的结果如下:
    这里写图片描述
    Meanshift推导:

    把基本的meanshift向量加入核函数,核函数的性质在这篇博客介绍:http://www.cnblogs.com/liqizhou/archive/2012/05/11/2495788.html
    http://blog.csdn.net/carson2005/article/details/7243425
    那么,meanshift算法变形为
           这里写图片描述          (1)

      解释一下K()核函数,h为半径,Ck,d/nhd 为单位密度,要使得上式f得到最大,最容易想到的就是对上式进行求导,的确meanshift就是对上式进行求导.
    这里写图片描述 (2)
    令:
                  这里写图片描述
    K(x)叫做g(x)的影子核,名字听上去听深奥的,也就是求导的负方向,那么上式可以表示:
    这里写图片描述

对于上式,如果采用高斯核,那么,第一项就等于fh,k
         这里写图片描述
第二项就相当于一个meanshift向量的式子:
         这里写图片描述
那么(2)就可以表示为这里写图片描述
  下图分析的构成,如图所以,可以很清晰的表达其构成。
         这里写图片描述
  要使得这里写图片描述=0,当且仅当这里写图片描述=0,可以得出新的圆心坐标:
                 这里写图片描述              (3)

上面介绍了meanshift的流程,但是比较散,下面具体给出它的算法流程。

  1.选择空间中x为圆心,以h为半径为半径,做一个高维球,落在所有球内的所有点xi
  2.计算这里写图片描述,如果这里写图片描述<ε(人工设定),退出程序。如果这里写图片描述>ε, 则利用(3)计算x,返回1.

  • 2.meanshift在图像上的聚类:

      真正大牛的人就能创造算法,例如像meanshift,em这个样的算法,这样的创新才能推动整个学科的发展。还有的人就是把算法运用的实际的运用中,推动整个工业进步,也就是技术的进步。下面介绍meashift算法怎样运用到图像上的聚类核跟踪。

      一般一个图像就是个矩阵,像素点均匀的分布在图像上,就没有点的稠密性。所以怎样来定义点的概率密度,这才是最关键的。

      如果我们就算点x的概率密度,采用的方法如下:以x为圆心,以h为半径。落在球内的点位xi 定义二个模式规则。

      (1)x像素点的颜色与xi像素点颜色越相近,我们定义概率密度越高。

      (2)离x的位置越近的像素点xi,定义概率密度越高。

      所以定义总的概率密度,是二个规则概率密度乘积的结果,可以(4)表示

                 这里写图片描述      (4)

      其中:代表空间位置的信息,离远点越近,其值就越大,表示颜色信息,颜色越相似,其值越大。如图左上角图片,按照(4)计算的概率密度如图右上。利用meanshift对其聚类,可得到左下角的图。
                 这里写图片描述

      另附网上别人整理的文档和用例,感觉挺详细的Mean-Shift原理概述.pdf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值