Meanshift,聚类算法

记得刚读研究生的时候,学习的第一个算法就是meanshift算法,因此一直记忆犹新,今天和你们分享一下Meanshift算法,若有错误,请在线交流。html

Mean Shift算法,通常是指一个迭代的步骤,即先算出当前点的偏移均值,移动该点到其偏移均值,而后以此为新的起始点,继续移动,直到知足必定的条件结束.算法

 1. Meanshift推导

给定d维空间Rd的n个样本点 ,i=1,…,n,在空间中任选一点x,那么Mean Shift向量的基本形式定义为:                             函数

 Sk是一个半径为h的高维球区域,知足如下关系的y点的集合,学习

k表示在这n个样本点xi中,有k个点落入Sk区域中.spa

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

如图因此。其中黄色箭头就是Mh(meanshift向量)。htm

再以meanshift向量的终点为圆心,再作一个高维的球。以下图因此,重复以上步骤,就可获得一个meanshift向量。如此重复下去,meanshift算法能够收敛到几率密度最大得地方。也就是最稠密的地方。blog

最终的结果以下:图片

Meanshift推导:get

 把基本的meanshift向量加入核函数,核函数的性质在这篇博客介绍:http://www.cnblogs.com/liqizhou/archive/2012/05/11/2495788.html

那么,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对其聚类,可获得左下角的图。

 

 

http://www.cnblogs.com/liqizhou/archive/2012/05/12/2497220.html

相关文章
相关标签/搜索