meanshift主要用来做目标跟踪和图像分割。

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

记得刚读研究生的时候,学习的第一个算法就是meanshift算法,所以一直记忆犹新,今天和大家分享一下Meanshift算法,如有错误,请在线交流。

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

1. Meanshift推导

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

Sk是一个半径为h的高维球区域,满足以下关系的y点的集合,

 中的T为转置。。

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

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

meanshift算法相关推荐

  1. OpenCV中MeanShift算法视频移动对象分析

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 MeanShift算法 Mean Shift是一种聚类算法,在数据 ...

  2. 基于Mean-shift算法跟踪对象

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 跟踪对象是计算机视觉领域的重要应用.这在监控系统.国防.自动驾驶汽 ...

  3. matlab中partdata,[转载]meanshift算法

    Mean Shift算法,一般是指一个迭代的步骤,即先算出当前点的偏移均值,移动该点到其偏移均值,然后以此为新的起始点,继续移动,直到满足一定的条件结束. 1. Meanshift推导 给定d维空间R ...

  4. 视频操作_02视频追踪:meanshift算法+Camshift算法

    1.meanshift 1.1原理 meanshift算法的原理很简单.假设你有一堆点集,还有一个小的窗口,这个窗口可能是圆形的,现在你可能要移动这个窗口到点集密度最大的区域当中. 如下图: 最开始的 ...

  5. meanshift算法 java_Meanshift,聚类算法

    记得刚读研究生的时候,学习的第一个算法就是meanshift算法,所以一直记忆犹新,今天和大家分享一下Meanshift算法,如有错误,请在线交流. Mean Shift算法,一般是指一个迭代的步骤, ...

  6. 视频跟踪——meanshift算法

    部分内容转载于: http://blog.csdn.net/google19890102/article/details/51030884 http://www.cnblogs.com/liqizho ...

  7. MeanShift算法理解

    Mean Shift算法,一般是指一个迭代的步骤,即先算出当前点的偏移均值,移动该点到其偏移均值,然后以此为新的起始点,继续移动,直到满足一定的条件结束. 具体步骤:1.在d维空间中,任选一个点,然后 ...

  8. Mean-shift算法的直观理解

    Mean-shift算法的直观理解 0 前言 暑假的时候参加移动计算竞赛打了下酱油,接触到了Mean-shift算法,用于做目标跟踪.在那段时间也在网上查阅了不少关于这个算法的资料,可是总感觉它们都比 ...

  9. 跟踪算法-Meanshift算法

    转载自:http://www.cnblogs.com/liqizhou/archive/2012/05/12/2497220.html   作者:BIGBIGBOAT/Liqizhou 仅供学习参考. ...

最新文章

  1. ICANN敦促业界使用DNSSEC,应对DNS劫持攻击
  2. java随机产生字母排序_Java生成含字母和数字的6位随机字符串
  3. Python 3.6 安装 Shapely
  4. Android ContentProvider介绍
  5. eclipse开发android手机定位
  6. java9 coutdown_Java并发之CountDownLatch
  7. 分支和循环结构的应用(习题)
  8. 前端-requests-flask对应关系 HTTPBasicAuth
  9. Vue秒杀倒计时插件vue2-countdown
  10. 怎么解决图片用PSCC打开后,白色部分全部呈现米黄色?
  11. redis集群报错(error) CLUSTERDOWN Hash slot not served
  12. 杭州最新公交线路一览(91-100)
  13. 移动安全-移动App漏洞检测平台
  14. System.currentTimeMillis()和System.nanoTime()的区别
  15. 第八章 Docker常规安装简介
  16. Altium designer 备注手册
  17. SpringBoot2.x 配合 Redis 操作
  18. KVC与KVO的不同
  19. Ubuntu18.04搭建FTP服务器
  20. Oracle密码过期这样处理一下吧

热门文章

  1. 【机器学习实战】美国波斯顿房价预测
  2. kubernete编排技术五:DaemonSet
  3. 共同学习Java源代码-多线程与并发-FutureTask类(三)
  4. eclipse 更换国内镜像
  5. 第05章 深度卷积神经网络模型
  6. 3dmax的计算机配置,3dMax2018系统最低要求电脑配置
  7. iOS远程推送原理及实现过程
  8. ZeroTierr的moon云服务器搭建和使用
  9. 中间件厂商及相关产品榜
  10. 国外LEAD网站采集你会了吗