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

仅供学习参考。

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

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

1. 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

那么,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-Python 目标跟踪(一)《Meanshift算法、Camshift算法》

    作者:RayChiu_Labloy 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 目录 Meanshift算法 Meanshift算法原理: 追踪一个运动的物体大致流程 ...

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

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

  3. opencv python 多帧降噪算法_OpenCV-Python中用于视频跟踪的Meanshift和Camshift算法介绍...

    学习目标 在本章中, 我们将学习用于跟踪视频中对象的Meanshift和Camshift算法. Meanshift Meanshift背后的直觉很简单,假设你有点的集合.(它可以是像素分布,例如直方图 ...

  4. 视频跟踪——meanshift算法

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

  5. 传统目标跟踪——MeanShift算法

    目录 一.均值漂移(MeanShift) 二.流程 三.代码 3.1 meanshift+固定框的代码 3.2 优化:meanshift+鼠标选择 3.3 meanshift+自己实现函数 四.补充知 ...

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

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

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

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

  8. 目标跟踪:CamShift算法

    1.前言 camshift利用目标的颜色直方图模型将图像转换为颜色概率分布图,初始化一个搜索窗的大小和位置,并根据上一帧得到的结果自适应调整搜索窗口的位置和大小,从而定位出当前图像中目标的中心位置. ...

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

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

最新文章

  1. 第6章:可维护性软件构建方法 6.2可维护性设计模式
  2. 关于数据库内“表”的几点
  3. Linux与win2003下修改mac地址方法
  4. 文巾解题 1179. 重新格式化部门表
  5. iOS 禁止手势滑动翻页
  6. 计算机图形图像项目教程素材,案例任务驱动法在图形图像教学中的运用
  7. 暴风集团被强制退市 暴风影音APP还在更新:0.99元VIP上线
  8. 启动go服务_go微服务框架go-micro深度学习 rpc方法调用过程详解
  9. c语言实现sbrk函数,菜鸟随笔(2)---brk()与sbrk()函数的学习与使用
  10. 根据call/jmp操作数偏移检测内核是否被rootkit控制
  11. mdl文件是c语言,mdl文件扩展名,mdl文件怎么打开?
  12. 电容器选型指南-电子元器件选型指导系列
  13. Linux命令行安装图形化界面
  14. 华为储存服务器许可证,华为存储配件,华为维保服务,华为服务器
  15. PHP站长工具箱网站源码下载,在线小工具网站源码,独立后台管理,可自主添加工具
  16. PHP 中openssl_pkey_get_private函数获取私钥返回 FALSE 的问题
  17. 如何从初级程序员变成高级程序员?
  18. 查看进程是否是由于linux OOM killer机制杀死的方法
  19. Python实现自动挂机脚本(基础篇)
  20. 电子制造业生产车间物料怎么管?方法有哪些

热门文章

  1. ASLR 的关闭与开启(适用于 Windows7 及更高版本)
  2. Servlet电子商城项目(入门级一)
  3. WebStorm 2018.2.3 x64 的安装与破解
  4. Safari无痕浏览影响localStorage
  5. HTC 重力感应传感器编程资料总结
  6. 计算机读不了硬盘分区,电脑开机后读不到硬盘怎么办
  7. 【数字IC验证快速入门】22、SystemVerilog项目实践之AHB-SRAMC(2)(AHB协议基本要点)
  8. 不可知敏捷:精益敏捷转型成功的关键
  9. scrapy爬虫时遇到Couldnt bind Too many open files
  10. java鸡兔同笼:鸡兔同笼,鸡与兔,一共35只,共有94条脚,问,一个鸡有多少只,兔有多少只?