说明一:

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向量加入核函数,那么,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就是一种搜索算法,和一般的搜算类似,都是用的梯度下降的思路,只要一旦算法收敛到一定的范围之内,就算搜索成功。

下图是一些散步的数据点,由于mean shift是一种robust算法,所以,在图中初始窗口的位置对最终的结果并没有影响。
step1: 选择任意一个窗口,窗口中心是红色点所在位置,窗口大小自己设定。
step2: 根据落入窗口里的数据点来计算mean shift公式的前部分,这里其值设为y(i + 1)。
step3: y(i + 1)与窗口中心y(i)相比较,并设定一个阈值T(T值很小),如果|y(i + 1) - y(i)| > T,则更新窗口中心(y(i) = y(i + 1))。返回step2,否则进入step4.
step4: 结束循环。
实际在聚类的过程中,可以把收敛到同一点的这些都标记相同的值(收敛到不同的点具有不同的标记),那么最终就能得到一个聚类的图像。

说明三:

Mean Shift 跟踪算法

Mean Shift 跟踪算法属于模式搜索与匹配算法。它首先分析目标,提取特定模式;然后,利用启发式算法,在搜索空间中选定候选区域,并将目标模式与候选区域模式相比较;依此,循环迭代,在搜索空间中找到最佳匹配的候选区域,作为要查找的目标。因此,算法有三个关键工作:选择目标模式、确定比较匹配算法,以及寻找启发式搜索策略。下面由此三方面对此算法做简单介绍。

(1)目标模式:颜色的核直方图
Mean Shift 跟踪算法是基于模式匹配的机理,因此,在运行前,需要人为给出目标区域。在一帧图像I中,目标所在的区域为目标区域,用O表示。它以外的区域为背景,用B表示。包含了全部目标,又不可避免的含有少量背景区域的圆形区域T,称为跟踪窗口[18]。

由目标区域O,得到跟踪窗口T。以T的圆心为坐标原点,重新分配图像中各像素点的坐标{xi}, i = 1, 2, ..., n。定义一个映射b: R^2 -> {1, 2, ..., m},它将每个像素的二维坐标,映射到其对应像素颜色值应划分的直方区间m上。颜色值u在目标模型中的概率是通过核函数k计算得到。k是一个凸单调递减函数,它根据像素距离目标中心的距离,给此像素对颜色u概率的贡献设置一个权值,像素距离中心越远,权值越小。以此模拟距离目标中心越远,属于目标的可能性越小,增加了算法的鲁棒性。这样,就得到了Mean Shift 跟踪算法目标的模式表示,目标颜色的核直方图[16, 18]。

跟踪窗口T中包含目标O的核直方图 定义,形式化描述为:

其中,δ是Kronecker delta函数[16],m 是直方图对颜色进行的量化级数,C为m 个“直方”的概率的归一化常数,h 为跟踪窗口T 的半径。

目标模型确定后,便是搜索匹配的候选模型。候选模型的核直方图计算方法相同,先选定候选目标中心y,计算半径为h 的跟踪窗口内的图像的核直方图 Qy = {qi}, i = 1, 2, ..., m。另外,候选的目标中心y 的坐标取值,可以在整个图片的范围,具体搜索策略,后面将继续介绍。

(2)相似度计算:Bhattacharyya 系数

目标模式和候选目标模式都是具有m 个分量的核直方图P 和Q,它们是两个离散的概率分布。而在统计学中,巴氏系数(Bhattachryya coefficient)用来衡量两离散概率分布的可分离误差,误差越大越不宜分离,亦即两者越相似。因此,Mean Shift 跟踪理所当然的选用它作为衡量目标与候选目标相似度的工具。根据Bhattachryya 系数的定义,P 和Q 的相似性 描述如下:

依此,便可以判断目标与候选目标的相似度,并在整个图像范围内找到最优匹配。

(3)搜索策略:Mean Shift 矢量

确定了目标的模型或模式,以及相似度计算方法,下面就需要使用较好的启发式策略在候选空间中寻找最佳匹配的目标。在跟踪问题中,由给出目标区域的帧图像,得到目标模型,接着便要在未来帧图像中寻找最可能的目标区域。因此,目标的搜索匹配空间为整个帧图像。运用启发式策略,就是要尽量避免搜索整个空间,而是使用最便捷、有效的方式得到目标。

Mean Shift 跟踪算法是沿着Mean Shift 矢量方向不断移动核函数中心位置到收敛,以此方式寻找邻近的最佳匹配模式中心y即可。

meanShift优缺点:

meanShift算法用于视频目标跟踪时,采用目标的颜色直方图作为搜索特征,通过不断迭代meanShift向量使得算法收敛于目标的真实位置,从而达到跟踪的目的。

传统的meanShift算法在跟踪中有几个优势:

(1)算法计算量不大,在目标区域已知的情况下完全可以做到实时跟踪;

(2)采用核函数直方图模型,对边缘遮挡、目标旋转、变形和背景运动不敏感。

同时,meanShift算法也存在着以下一些缺点:

(1)缺乏必要的模板更新;

(2)跟踪过程中由于窗口宽度大小保持不变,当目标尺度有所变化时,跟踪就会失败;

(3)当目标速度较快时,跟踪效果不好;

(4)直方图特征在目标颜色特征描述方面略显匮乏,缺少空间信息。

由于其计算速度快,对目标变形和遮挡有一定的鲁棒性,所以,在目标跟踪领域,meanShift算法目前依然受到大家的重视。但考虑到其缺点,在工程实际中也可以对其作出一些改进和调整;例如:

(1)引入一定的目标位置变化的预测机制,从而更进一步减少meanShift跟踪的搜索时间,降低计算量;

(2)可以采用一定的方式来增加用于目标匹配的“特征”;

(3)将传统meanShift算法中的核函数固定带宽改为动态变化的带宽;

(4)采用一定的方式对整体模板进行学习和更新。

mean shift 跟踪算法相关推荐

  1. mean shift聚类matlab,meanshift目标跟踪源程序 meanshift跟踪算法MATLAB源码 - 下载 - 搜珍网...

    压缩包 : MeanShift+深入详细(MatLab源码).rar 列表 MeanShift+深入详细(MatLab源码)/meanshift文章.PPT.word文档.基于meanshift的跟踪 ...

  2. Mean shift目标跟踪算法

    文档下载链接https://download.csdn.net/download/OEMT_301/12089925 Mean shift作为一种跟踪算法经常被用到.它是一种无参数密度估计寻找局部极值 ...

  3. 基于MeanShift的目标跟踪算法及实现

    from: http://blog.csdn.net/jinshengtao/article/details/30258833 一.简介 首先扯扯无参密度估计理论,无参密度估计也叫做非参数估计,属于数 ...

  4. 基于特征点匹配的自适应目标跟踪算法

    基于特征点匹配的自适应目标跟踪算法 2016-01-29 13:11 摘 要:由于实际场景复杂多变,目标在运动过程中往往会出现形变.遮挡等问题,增加了跟踪的难度.为了解决上述问题,提出一种基于特征点匹 ...

  5. 基于MeanShift的目标跟踪算法及实现(转载)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/jinshengtao/article/details/30258833 这次将介绍基于MeanShi ...

  6. 机器学习(十)Mean Shift 聚类算法

    Mean Shift 聚类算法 原文地址:http://blog.csdn.net/hjimce/article/details/45718593  作者:hjimce 一.mean shift 算法 ...

  7. OTB数据集和VOT数据集融合跟踪算法接口示例

    OTB数据集和VOT数据集自己存数据接口参考代码: 一.OTB数据集(不使用tracker_benchmark_v1.0) 1.OTB数据结果最基本的格式 type为目标框类型: res为目标框的所在 ...

  8. 目标跟踪算法_Camshift函数(学习笔记)

    在这一节中,主要讲目标跟踪的一个重要的算法Camshift,因为它是连续自使用的meanShift,所以这2个函数opencv中都有,且都很重要.为了让大家先达到一个感性认识.这节主要是看懂和运行op ...

  9. 几种自动目标跟踪算法的比较研究

    摘 要:复杂背景目标跟踪是近年来自动目标识别(ATR)领域的一个研究热点,在军事.医疗.安全等多个领域具有广泛的应用前景.ATR的研究内容主要包括目标的检测分类.特征提取和目标定位识别等.本文对当前流 ...

  10. C++ OpenCV视频操作之CamShift跟踪算法

    前言 CamShift算法,全称是 Continuously AdaptiveMeanShift,顾名思义,它是对Mean Shift 算法的改进,能够自动调节搜索窗口大小来适应目标的大小,可以跟踪视 ...

最新文章

  1. 计算机考研数据结构重点
  2. 使用golang的for打印三角形
  3. 纵向表格_Excel如何把横向数据变纵向?教你一键快速实现
  4. struts2处理.do后缀的请求
  5. 如何用 CSS 和 D3 创作一个抽象的黑白交叠动画
  6. 3.1.3 覆盖与交换
  7. 记录前端浏览器常见错误SyntaxErro或GET http://xxx/xxx (Not Found)等
  8. Eclipse Neon 配置C/C++开发环境
  9. Asp.Net MVC4.0 官方教程 入门指南之一-- 入门介绍
  10. 线段树(单点更新(模板)) 之 hdu 1166
  11. python argparse 解析命令行参数
  12. cytoscape使用方法_关于这种“网络模块”和“模块饼图”的可视化方法
  13. Spring整合MyBatis框架
  14. Java菜鸟学习编写第一个java程序HelloWorld
  15. CSS背景图片居中置顶
  16. php 改变页面背景颜色,PHP改变背景颜色
  17. JVM 性能调整的一些基本概念
  18. vivo x9s支持html,vivo X9s屏幕材质_vivo X9s屏幕分辨率-太平洋IT百科
  19. 使用Outlook 2007待办事项栏
  20. 尼姆游戏-取硬币游戏

热门文章

  1. 环境可靠性测试,气候环境类可靠性试验,可靠性测试标准
  2. AgentWeb简易使用
  3. securecrt通过ssh连接板子: 密钥交换失败,没有兼容的加密程序
  4. 统计学与概率论的区别
  5. c语言等号与符号优先级,【C语言】符号优先级
  6. 第五章:项目范围管理 - (5.4 创建 WBS )
  7. 算法学习笔记(5) 传递闭包
  8. 谈如何整定PID参数
  9. 模拟电路47(有源滤波器2-二阶低通滤波器)
  10. DllMain 用法