meanshift-自己看,勿喷 (超像素分割,空间分割,聚类,深度模型压缩-现有all)

要使得=0,当且仅当=0,可以得出新的圆心坐标:

                          (3) 

 

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

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

 想象一下几十匹马同时拉一辆车的恢宏场面,每匹马都往自己的方向拉,不过,距离越近的马,其力量越大,初中物理告诉我们,结果是合力的方向,如上图的黄色箭头。

    注意:Epanechnikov Kernel求导后实质上就是Uniform Kernel。

2.meanshift在图像上的聚类:

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

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

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

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

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

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

(4)

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

3.3 图像分割领域的具体化

    本质上,mean shift解决任何问题,都是转化成密度估计问题。但具体问题还得具体分析。对于图像它有两种信息,坐标和颜色,前者为spatial 空间后者为range空间,对于单通道图片即灰度值,对于彩色图片即或者效果更好的等。二者是截然不同的属性,决定了不能等同视之。因此,我们使用多元核密度估计(multivariate kernel)。设spatial有2维,range空间,设为维。

    一元核:

    即

    图像分割中使用的多元核:

滤波的结果

 

    物理意义:分别为坐标空间核和颜色空间核的带宽(bandwidth)/尺度,我说不清,看结果吧。
 

 

 

 

 

 

 

 

 

 3.3.3 自适应步长

    可以看出步长与成反比,还是以Normal Kernel为例,越靠近模点,步长越小,反之越大。

    原文证明了,只要是凸函数,单调递减(可以不是哦),那么就能保证它总能收敛到模点,并且是单调递增的(我没看……)。只要步履不停,我们总会遇见,多么美好的世界啊,求遇见。

    3.3 图像分割领域的具体化

    本质上,mean shift解决任何问题,都是转化成密度估计问题。但具体问题还得具体分析。对于图像它有两种信息,坐标和颜色,前者为spatial 空间后者为range空间,对于单通道图片即灰度值,对于彩色图片即或者效果更好的等。二者是截然不同的属性,决定了不能等同视之。因此,我们使用多元核密度估计(multivariate kernel)。设spatial有2维,range空间,设为维。

    一元核:

    即

    图像分割中使用的多元核:

 

滤波的结果

    物理意义:分别为坐标空间核和颜色空间核的带宽(bandwidth)/尺度,我说不清,看结果吧。

    3.4回首OpenCV实现

    第二步,重心计算公式

    我们是对以为中心为边长的区域求重心,其实本应该是:

    用的是Uniform Kernel,也就是说用的是Epanechnikov Kernel

    此时,距离筛选是由核函数实现的,因此我们是对图像中所有的数据点计算重心,而不是落在为中心,为边长的区域内的点求重心。

    OpenCV的实现中, 并不是圆形的,为了循环时程序实现的方便,就用方形近似,但是严格的球体。

    不过方形的也可以写成核函数形式:

    此外,Normal Kernel 的平滑效果固然好,但是计算量大,所以主要还是用Uniform Kernel。原文说大部分场合,Uniform Kernel和Normal Kernel就能取得很好的效果。
 

 

 

 

图像分割加速:原文提到了一种加速方法,先随机选取一部分点作为先头部队,让它们去找模点,找的过程中就会开辟出很多到模点的道路,然后呢,让其余的点插到离它最近的路走过去就好了。此外,还有层级分割的方法,OpenCV的实现应该就是其中一种实现。

    A topological approach to hierarchical segmentation using mean shift. CVPR 2007

    目标跟踪:Kernel-Based Object Tracking, PAMI 03

 

 

 

 

 

 

Reference:

[1] Mean shift: A robust approach toward feature space analysis, PAMI, 2002

[2] mean shift,非常好的ppt ,百度文库链接

[3] Pattern Recognition and Machine Learning, Bishop, 2006,Sec 2.5

[4] Computer Vision Algorithms and Applications, Richard Szeliski, 2010, Sec 5.3

[5] Kernel smoothing,MP Wand, MC Jones ,1994, Chapter 4


mean shift 图像分割 (一): 1 总体思想,2 算法步骤


mean shift 图像分割 (二): 3 算法原理,4 延伸

mean shift 图像分割 (三): 5 非参数密度估计

图像分割—mean shift(OpenCV源码注解)


--------------------- 
作者:TTransposition 
来源:CSDN 
原文:https://blog.csdn.net/ttransposition/article/details/38514271 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值