跟踪算法-Meanshift算法
转载自: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的流程,但是比较散,下面具体给出它的算法流程。
- 选择空间中x为圆心,以h为半径为半径,做一个高维球,落在所有球内的所有点xi
- 计算,如果<ε(人工设定),推出程序。如果>ε, 则利用(3)计算x,返回1.
2.meanshift在图像上的聚类:
真正大牛的人就能创造算法,例如像meanshift,em这个样的算法,这样的创新才能推动整个学科的发展。还有的人就是把算法运用的实际的运用中,推动整个工业进步,也就是技术的进步。下面介绍meashift算法怎样运用到图像上的聚类核跟踪。
一般一个图像就是个矩阵,像素点均匀的分布在图像上,就没有点的稠密性。所以怎样来定义点的概率密度,这才是最关键的。
如果我们就算点x的概率密度,采用的方法如下:以x为圆心,以h为半径。落在球内的点位xi 定义二个模式规则。
(1)x像素点的颜色与xi像素点颜色越相近,我们定义概率密度越高。
(2)离x的位置越近的像素点xi,定义概率密度越高。
所以定义总的概率密度,是二个规则概率密度乘积的结果,可以(4)表示
(4)
其中:代表空间位置的信息,离远点越近,其值就越大,表示颜色信息,颜色越相似,其值越大。如图左上角图片,按照(4)计算的概率密度如图右上。利用meanshift对其聚类,可得到左下角的图。
跟踪算法-Meanshift算法相关推荐
- opencv-Python 目标跟踪(一)《Meanshift算法、Camshift算法》
作者:RayChiu_Labloy 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 目录 Meanshift算法 Meanshift算法原理: 追踪一个运动的物体大致流程 ...
- 基于Mean-shift算法跟踪对象
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 跟踪对象是计算机视觉领域的重要应用.这在监控系统.国防.自动驾驶汽 ...
- opencv python 多帧降噪算法_OpenCV-Python中用于视频跟踪的Meanshift和Camshift算法介绍...
学习目标 在本章中, 我们将学习用于跟踪视频中对象的Meanshift和Camshift算法. Meanshift Meanshift背后的直觉很简单,假设你有点的集合.(它可以是像素分布,例如直方图 ...
- 视频跟踪——meanshift算法
部分内容转载于: http://blog.csdn.net/google19890102/article/details/51030884 http://www.cnblogs.com/liqizho ...
- 传统目标跟踪——MeanShift算法
目录 一.均值漂移(MeanShift) 二.流程 三.代码 3.1 meanshift+固定框的代码 3.2 优化:meanshift+鼠标选择 3.3 meanshift+自己实现函数 四.补充知 ...
- OpenCV中MeanShift算法视频移动对象分析
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 MeanShift算法 Mean Shift是一种聚类算法,在数据 ...
- matlab中partdata,[转载]meanshift算法
Mean Shift算法,一般是指一个迭代的步骤,即先算出当前点的偏移均值,移动该点到其偏移均值,然后以此为新的起始点,继续移动,直到满足一定的条件结束. 1. Meanshift推导 给定d维空间R ...
- 目标跟踪:CamShift算法
1.前言 camshift利用目标的颜色直方图模型将图像转换为颜色概率分布图,初始化一个搜索窗的大小和位置,并根据上一帧得到的结果自适应调整搜索窗口的位置和大小,从而定位出当前图像中目标的中心位置. ...
- 视频操作_02视频追踪:meanshift算法+Camshift算法
1.meanshift 1.1原理 meanshift算法的原理很简单.假设你有一堆点集,还有一个小的窗口,这个窗口可能是圆形的,现在你可能要移动这个窗口到点集密度最大的区域当中. 如下图: 最开始的 ...
最新文章
- 第6章:可维护性软件构建方法 6.2可维护性设计模式
- 关于数据库内“表”的几点
- Linux与win2003下修改mac地址方法
- 文巾解题 1179. 重新格式化部门表
- iOS 禁止手势滑动翻页
- 计算机图形图像项目教程素材,案例任务驱动法在图形图像教学中的运用
- 暴风集团被强制退市 暴风影音APP还在更新:0.99元VIP上线
- 启动go服务_go微服务框架go-micro深度学习 rpc方法调用过程详解
- c语言实现sbrk函数,菜鸟随笔(2)---brk()与sbrk()函数的学习与使用
- 根据call/jmp操作数偏移检测内核是否被rootkit控制
- mdl文件是c语言,mdl文件扩展名,mdl文件怎么打开?
- 电容器选型指南-电子元器件选型指导系列
- Linux命令行安装图形化界面
- 华为储存服务器许可证,华为存储配件,华为维保服务,华为服务器
- PHP站长工具箱网站源码下载,在线小工具网站源码,独立后台管理,可自主添加工具
- PHP 中openssl_pkey_get_private函数获取私钥返回 FALSE 的问题
- 如何从初级程序员变成高级程序员?
- 查看进程是否是由于linux OOM killer机制杀死的方法
- Python实现自动挂机脚本(基础篇)
- 电子制造业生产车间物料怎么管?方法有哪些
热门文章
- ASLR 的关闭与开启(适用于 Windows7 及更高版本)
- Servlet电子商城项目(入门级一)
- WebStorm 2018.2.3 x64 的安装与破解
- Safari无痕浏览影响localStorage
- HTC 重力感应传感器编程资料总结
- 计算机读不了硬盘分区,电脑开机后读不到硬盘怎么办
- 【数字IC验证快速入门】22、SystemVerilog项目实践之AHB-SRAMC(2)(AHB协议基本要点)
- 不可知敏捷:精益敏捷转型成功的关键
- scrapy爬虫时遇到Couldnt bind Too many open files
- java鸡兔同笼:鸡兔同笼,鸡与兔,一共35只,共有94条脚,问,一个鸡有多少只,兔有多少只?