mean-shift概述
mean-shift图像分割
由式 (4) 获得 :
������ = . ������+1
∑������������=1 ������������������������������(||������������������ℎ−������������������������||2)������(||������������������ℎ−������������������������||2) ∑������������=1 ������������������(||������������������ℎ−������������������������||2)������(||������������������ℎ−������������������������||2)
图4 3. 图像分割的细节图片如图 5 所示:
图5
实验小结
根据 mean-shift 算法原理,通过对聚类中心的不断迭代,从而找到相近的类,达到分割 的目的。通过这次实验,进一步理解了图像分割的含义,也充分体现了 mean-shift 算法在图 像分割中的应用。
参考文献
【1】 【2】 【3】
Mean-shift 跟踪算法中核函数窗宽的自动选取——彭宁嵩 杨杰 刘志 张凤超——软 件学报——2005,16(9) Mean-shift 算法的收敛性分析——刘志强 蔡自兴——《《软件学报》》——2007,18 (2) 基于分级 mean-shift 的图像分割算法——汤杨 潘志庚 汤敏 王平安 夏德深
计算机视觉实验三
——利用 mean-shift 进行图像分割
算法简介
mean-shift 是一种非参数概率密度估计的方法。通过有限次的迭代过程,Parzen 窗定义 的概率密度函数能够快速找到数据分布的模式。由于具有原理简单、无需预处理、参数少等 诸多优点,mean-shift 方法在滤波、目标跟踪、图像分割等领域得到了广泛的应用。
基于Mean Shift视频运动目标跟踪
基于Mean Shift视频运动目标跟踪作者:魏保华来源:《计算机光盘软件与应用》2014年第01期摘要:视频监控是安全防范系统的重要组成部分,而视频运动目标检测和跟踪技术则是智能视频监控的关键技术。
Mean Shift算法是一种在一组数据的密度分布中寻找局部极值的稳定的方法,并因其它计算量小,简单易实现而广泛应用于实时跟踪场合。
在离散的数据集上,Mean Shift能很快的找到数据分布最密集的点,本文介绍了使用OpenCV实现Mean Shift的方法,分析其在跟踪方向的优势与不足。
关键词:目标跟踪;OpenCV;Mean;Shift;颜色直方图中图分类号:TP391.41视觉是人类从外界获取信息的主要途径。
运用摄影机和电脑代替人眼对目标进行识别、跟踪和测量,将三维环境信息储存为二维信息,并进一步做图像处理,合成为更适合人眼观察或传送给仪器检测的图像。
计算机视觉试图建立能够从图像或者多维数据中获取…信息‟的人工智能系统。
在这些应用领域中,如何利用计算机把运动目标从有干扰的背景中检测出来并对其进行识别、跟踪、管理等处理是需要研究的关键技术。
1 视频运动目标跟踪20世纪60年代后期,蒙特卡罗方法被引入自动控制领域。
1975年,Fukmaga等人在一篇关于概率密度梯度函数的估计中提出Mean shift。
1995年,Yizong Cheng在“Mean shift mode seeking and clustering”中定义了一族核函数,设定了一个权重系数,扩充了基本Mean Shift算法,扩大了其适用范围。
1999年,Intel公司在均值偏移理论的基础上建立了CAMSHIb'T算法,以及基于此算法的人脸跟踪系统,将均值偏移算法扩展到运动目标跟踪领域中。
基于Mean shift的研究有许多成果发表[1-3]。
2000年,Comaniciu[4-5]等人将Mean Shift作用于非刚性物体的实施跟踪。
meanshift算法简介
怎样找到数据集合中数据最密集的地方呢?
数据最密集的地方,对应于概率密度最大的地方。我们可 以对概率密度求梯度,梯度的方向就是概率密度增加最大 的方向,从而也就是数据最密集的方向。
令
,假设除了有限个点,轮廓函数 的梯度对所
有
均存在 。将 作为轮廓函数,核函数 为:
fh,K
x
2ck ,d n nhd 2 i1
Meanshift算法的概述及其应用
Meanshift的背景
Mean Shift 这个概念最早是由Fukunaga等人于 1975年在一篇关于概率密度梯度函数的估计中提出 来的,其最初含义正如其名,就是偏移的均值向量。
直到20年以后,也就是1995年,,Yizong Cheng发 表了一篇对均值漂移算法里程碑意义的文章。对基 本的Mean Shift算法在以下两个方面做了改进,首先 Yizong Cheng定义了一族核函数,使得随着样本与 被偏移点的距离不同,其偏移量对均值偏移向量的贡 献也不同,其次Yizong Cheng还设定了一个权重系 数,使得不同的样本点重要性不一样,这大大扩大了 Mean Shift的适用范围.另外Yizong Cheng指出了 Mean Shift可能应用的领域,并给出了具体的例子。
• 一维下的无参数估计 设X1,X2, …Xn是从总体中抽出的独立同分布
的样本,X具有未知的密度函数f(x),则f (x)的核估计为:
h为核函数的带宽。常用的核函数如下:
分别是单位均匀核函数 和单位高斯核函数
多维空间下的无参密度估计:
在d维欧式空间X中,x表示该空间中的一个点, 表示该空间中的
核函数,
(5)若
,则停止;否则y0←y1转步骤②。
限制条件:新目标中心需位于原目标中 心附近。
经典Mean Shift算法介绍
经典Mean Shift算法介绍1无参数密度估计 (1)2核密度梯度估计过程 (3)3算法收敛性分析 (4)均值漂移(Mean Shift)是Fukunaga等提出的一种非参数概率密度梯度估计算法,在统计相似性计算与连续优化方法之间建立了一座桥梁,尽管它效率非常高,但最初并未得到人们的关注。
直到1995年,Cheng改进了Mean Shift算法中的核函数和权重函数,并将其应用于聚类和全局优化,才扩大了该算法的适用范围。
1997年到2003年,Comaniciu等将该方法应用到图像特征空间的分析,对图像进行平滑和分割处理,随后他又将非刚体的跟踪问题近似为一个Mean Shift最优化问题,使得跟踪可以实时进行。
由于Mean Shift算法完全依靠特征空间中的样本点进行分析,不需要任何先验知识,收敛速度快,近年来被广泛应用于模式分类、图像分割、以及目标跟踪等诸多计算机视觉研究领域。
均值漂移方法[4]是一种最优的寻找概率密度极大值的梯度上升法,提供了一种新的目标描述与定位的框架,其基本思想是:通过反复迭代搜索特征空间中样本点最密集的区域,搜索点沿着样本点密度增加的方向“漂移”到局部密度极大点。
基于Mean Shift方法的目标跟踪技术采用核概率密度来描述目标的特征,由于目标的直方图具有特征稳定、抗部分遮挡、计算方法简单和计算量小的特点,因此基于Mean Shift的跟踪一般采用直方图对目标进行建模;然后通过相似性度量,利用Mean Shift搜寻目标位置,最终实现目标的匹配和跟踪。
均值漂移方法将目标特征与空间信息有效地结合起来,避免了使用复杂模型描述目标的形状、外观及其运动,具有很高的稳定性,能够适应目标的形状、大小的连续变换,而且计算速度很快,抗干扰能力强,在解决计算机视觉底层任务过程中表现出了良好的鲁棒性和较高的实时处理能力。
1无参数密度估计目标检测与跟踪过程中,必须用到一定的手段对检测与跟踪的方法进行优化,将目标的表象信息映射到一个特征空间,其中的特征值就是特征空间的随机变量。
Mean Shift算法在彩色图像分割中的应用
Mean Shift算法在彩色图像分割中的应用摘要:Mean Shift算法是目前广泛应用于图像分割和计算机视觉中的方法。
论述了该算法应用在彩色图像分割中的原理及过程,并给出实验过程和结果。
关键词:Mean Shift算法;彩色图像分割;数字图像处理0 引言图像分割是图像分析、识别和理解的基础,是从图像处理到图像分析的一个关键步骤。
由于彩色图像提供了比灰度图像更为丰富的信息,彩色图像的分割在近几年越来越引起人们的重视,成为图像技术研究的热点之一。
Mean shift(均值漂移,MS)算法是一种有效的统计迭代算法,最早由Fukunaga在1975年提出。
直到1995年,Cheng改进了MS算法中的核函数和权重函数,并将其应用于聚类和全局优化,扩大了该算法的适用范围。
从1997年到2003年,Comaniciu将该方法应用到图像特征空间的分析,对图像进行平滑和分割处理,并证明了MS算法在满足一定条件下,可收敛到最近的一个概率密度函数的稳态点,因此,MS算法可用来检测概率密度函数中存在的模态。
由于MS算法完全依靠特征空间中的样本点进行分析,不需要任何先验知识,并且收敛速度快,近年来被广泛应用于图像分割和跟踪等计算机视觉领域。
1 Mean Shift算法1.1 Mean Shift算法原理定义:X代表一个d维的欧氏空间,x是该空间中的一个点,用一列向量表示.x的模为‖x‖2=x Tx.R表示实数域.如果一个函数K:K →R存在一个轮廓函数k:[0,∞]→R,即K(x)=c kk(‖x‖2)(1)其中c k>0为标准化常数,且满足:①k是非负的;②k是非增的,即如果a<b那么k(a)≥k(b);③k是分段连续的,并且∫0k(r)dr<∞.则称函数K(x)为核函数。
对概率密度函数f(x),设在d维空间X中有n个采样点x i,i=1,2,…,n,用定义的核函数K(x)和d×d的正对称带宽矩阵H,得到核密度估计表达式为(x)=∑ni=1ω(x i)|H i|-12 K(H-12i(x-x i))=∑ni=1c kωi|H i|-12k(‖x-x i‖2Hi)(2)其中:w(x i)≥0赋给采样点x i的权重,满足∑ω(x i)=1,简记为ωi.‖x-x i‖2H i=(x-x i)TH-1 i(x-x i).核函数K(x)决定了采样点x i与核中心点x之间的相似性度量,带宽矩阵H i决定了核函数的影响范围。
meanshif算法简介PPT课件
Meanshift的背景
Mean Shift 这个概念最早是由 Fukunaga等人于1975年在一篇关于概率密度梯度函 数的估计中提出来的,其最初含义正如其名,就是偏 移的均值向量。
直到20年以后,也就是1995年,,Yizong Cheng 发表了一篇对均值漂移算法里程碑意义的文章。对 基本的Mean Shift算法在以下两个方面做了改进, 首先Yizong Cheng定义了一族核函数,使得随着样 本与被偏移点的距离不同,其偏移量对均值偏移向 量的贡献也不同,其次Yizong Cheng还设定了一个 权重系数,使得不同的样本点重要性不一样,这大大 扩大了Mean Shift的适用范围.另外Yizong Cheng 指出了Mean Shift可能应用的领域,并给出了具体 的例子。
Mean shift向量的物理意义的什么呢?
为了更好地理解这个式子的物理意义,假设上式中g(x)=1 平均的偏移量会指向样本点最密的方向,也 就是概率密度函数梯度方向
下面我们看一下mean shift算法的步骤
mh x
给定一个初始点x,核函数G(x), 容许误差 ,Mean
Shift算法循环的执行下面三步,直至结束条件满足,
若再考虑到
这个表达式就是基于核函数
的概率密度函数的估计
怎样找到数据集合中数据最密集的地方呢?
数据最密集的地方,对应于概率密度最大的地方。我们可 以对概率密度求梯度,梯度的方向就是概率密度增加最大 的方向,从而也就是数据最密集的方向。
令 的梯度对所有 廓函数,核函数
,假设除了有限个点,轮廓函数
均存在 。将
Meanshift的应用
• Mean Shift可以应用在很多领域,比如聚类,图像平 滑,,图像分割。尤其是应用在目标跟踪领域,其跟踪
一种针对视频对象快速移动和遮挡的改进mean—shift跟踪算法
而代替经典 mensi a— f h t算法中单纯用上一帧位置
作 为当前 帧起始位置 的方法 。 这是利用 以往 目标 的
位 置信 息对动 态系 统 的状态 序列 线性 最小 方差进
素 向颜色索 引 的映像 。候选模 型在当前帧 中 以 为 中心 。则候选模 型的概 率密度为
到局部遮 挡时,采用背 景相似度算法 ,对 目标模板和候选模型区域中像素点进行 加权 ,降低背景像素的干扰 , 然后 由 S D算法进行局部匹配 ,对 mensi 算法的跟踪结果进行校正 。经实验表 明,改进算法对发生快速移 S a— f ht 动或受到局部遮挡的 目标 ,能进行有效的跟踪 。 关键 词: 目标跟踪;mensi;快速移动;遮挡 a—hf t
第3 4卷 第 1期
21 00年 1 月
燕 L大 学 学 报
J u n l f n h n Un v r i o r a s a i e st o Ya y
VO .3 NO. 1 1 4 J n. 2 0 a 01
文章编号 :1 0 -9 (0 )0 —0 20 77 1 2 1 0 X 0 10 5 —4
M
N
D( = ∑[ ( ) , 2 。 i ∑ , 一 , ,] )
y u d .cl s .e u r。
第l 期
唐 勇 等 一种针对视频对象快速移动和遮 挡的改进 mensi 跟踪算法 a. f ht
5 3
选取 B a ah ay a系数作 为相似性系 数 : h t c h ry t
阈值为 ,则
) ( ) )墨 = i, = √ ;) (,
行估计,具有计算量小、 可实时计算的特点, 可以 准确预测 目 标的位置和速度, 然而此种迭代运算非
meanshift算法简介
基于核函数G(x)的 概率密度估计
•
用核函数G在 x点计算得到的Mean Shift 向量 正比于归一化的用核函数K估计的概率 密度的函数 的梯度,归一化因子为用核函数 G估计的x点的概率密度.因此Mean Shift向量 总是指向概率密度增加最大的方向.
Mean shift向量的物理意义的什么呢?
2ck ,d
n
2
2ck ,d cg ,d 2 d h cg ,d nh
g i 1
n
n x xi 2 xi g 2 h x xi i 1 x n x x 2 h i g h i 1
为了更好地理解这个式子的物理意义,假设上式中g(x)=1
平均的偏移量会指向样本点最密的方向,也 就是概率密度函数梯度方向
下面我们看一下mean shift算法的步骤
mh x
给定一个初始点x,核函数G(x), 容许误差 ,Mean Shift算法 循环的执行下面三步,直至结束条件满足, •计算mh ( x) •把 mh ( x)赋给 x. •如果 mh ( x) x ,结束循环;若不然,继续执行(1)
0 =1,2…..m i=1,2…..m
(5)若
,则停止;否则y ←y1转步骤②。
0
限制条件:新目标中心需位于原目标中 心附近。
Meanshift跟踪结果
• 转word文档。
• Meanshift优缺点: 优点 ①算法复杂度小; ②是无参数算法,易于与其它算法集 成; ③采用加权直方图建模,对目标小角 度旋转、轻微变形和部分遮挡不敏感等。
MeanShift算法
核函数也称“窗口函数”。
一维空间用到的核函数有高斯(Gaussian)、余弦弧(Cosinus arch)、双指数(Double Exponential)、均匀(Uniform)、三角(Trangle)、依潘涅契科夫(Epanechikov)、双依潘涅契科夫(DoubleEpanechnikov)、及双权(Biweight)函数。
图2.1给出了最常用的几个核函数给定一组一维空间的n个数据点集合令该数据集合的概率密度函数假设为f (x),核函数取值为,那么在数据点x处的密度估计可以按下式计算:上式就是核密度估计的定义。
其中,x为核函数要处理的数据的中心点,即数据集合相对于点x几何图形对称。
核密度估计的含义可以理解为:核估计器在被估计点为中心的窗口内计算数据点加权的局部平均。
或者:将在每个采样点为中心的局部函数的平均效果作为该采样点概率密度函数的估计值。
MeanShift实现:1.选择窗的大小和初始位置.2.计算此时窗口内的Mass Center.3.调整窗口的中心到Mass Center.4.重复2和3,直到窗口中心"会聚",即每次窗口移动的距离小于一定的阈值,或者迭代次数达到设定值。
meanshift算法思想其实很简单:利用概率密度的梯度爬升来寻找局部最优。
它要做的就是输入一个在图像的范围,然后一直迭代(朝着重心迭代)直到满足你的要求为止。
但是他是怎么用于做图像跟踪的呢?这是我自从学习meanshift以来,一直的困惑。
而且网上也没有合理的解释。
经过这几天的思考,和对反向投影的理解使得我对它的原理有了大致的认识。
在opencv中,进行meanshift其实很简单,输入一张图像(imgProb),再输入一个开始迭代的方框(windowIn)和一个迭代条件(criteria),输出的是迭代完成的位置(comp )。
这是函数原型:int cvMeanShift( const void* imgProb, CvRect windowIn,CvTermCriteria criteria, CvConnectedComp* comp )但是当它用于跟踪时,这张输入的图像就必须是反向投影图了。
基于改进的Mean-shift驾驶员人脸跟踪算法研究
人 脸 区域 检 测 及 其 跟踪 则 是实 现 驾 驶 员 实 时 疲 劳 检 测 重 要 的前 提 条件 。1 9 9 8年 , o e R wly等提 出 了基 于 神 经 网络 的人 脸 检 测 方 法 , 次 把 机 器学 习的 方 法 引 入 到 人脸 检 测 领域 , 成 了一 首 完 个行 之 有 效 的 人脸 检 测 系 统 。2 0 0 1年 ,在 V oa等 提 出 基 于 il
特 征 构造 弱分 类 器 , 后根 据样 本 的权 值 分 布 构 造 出 强分 类 器 , 成 人 脸 检 测 分 类 器 ; 然 形 由于 光照 变化 等 因素 的 影 响 , 引入 红 外 主 动 照 明模 式 , 过 隔 离可 见 光照 , 本上 消除 了光 照 变 化对 人 脸 检 测 造 成 的 影 响 ; 对 Me n hf 法 在被 跟踪 目标 通 基 针 a —s i t算
发 生 快速 移 动 时容 易跟踪 失败 的 缺 点 , 进 了 Me n s i 算 法 : 目标 发 生快 速 移 动 时 , 用 S D( u fS u r i 改 a — ht f 当 采 S S m o q a e D f — f r n e 算 法进 行 全 局搜 索 。 以 实 际驾 驶 员人 脸 检 测 与 跟 踪 实验 为 例 进 行 了大 量 实验 , 出的 方 法 比 Me n s i 算 法 的 ee c ) 提 a — ht f
魏 秀金 李 文 书 何 芳 芳 劫 建 富 ( 已 浙江理工大学信息电子学院计算机 系, 浙江 杭 州 3 0 1 ) 10 8
摘 要 为 了 实现 对 驾驶 员人 脸 实 时跟 踪 , 出 了一种 改进 的 Me n s i 算 法 。 首 先 对人 脸 提 取 类 H a 特 征 , 用 类 Ha r 提 a — ht f ar 使 a
mean shift
Mean Shift,我们翻译为“均值飘移”。
其在聚类,图像平滑。
图像分割和跟踪方面得到了比较广泛的应用。
由于本人目前研究跟踪方面的东西,故此主要介绍利用Mean Shift方法进行目标跟踪,从而对MeanShift有一个比较全面的介绍。
(以下某些部分转载常峰学长的“Mean Shift概述”)Mean Shift 这个概念最早是由Fukunaga等人于1975年在一篇关于概率密度梯度函数的估计(The Estimation of the Gradient of a Density Function, with Applications in Pattern Recognition )中提出来的,其最初含义正如其名,就是偏移的均值向量,在这里Mean Shift是一个名词,它指代的是一个向量,但随着Mean Shift理论的发展,Mean Shift的含义也发生了变化,如果我们说Mean Shift算法,一般是指一个迭代的步骤,即先算出当前点的偏移均值,移动该点到其偏移均值,然后以此为新的起始点,继续移动,直到满足一定的条件结束.然而在以后的很长一段时间内Mean Shift并没有引起人们的注意,直到20年以后,也就是1995年,另外一篇关于Mean Shift的重要文献(Mean shift, mode seeking, and clustering )才发表.在这篇重要的文献中,Yizong Cheng对基本的Mean Shift算法在以下两个方面做了推广,首先Yizong Cheng定义了一族核函数,使得随着样本与被偏移点的距离不同,其偏移量对均值偏移向量的贡献也不同,其次Yizong Cheng还设定了一个权重系数,使得不同的样本点重要性不一样,这大大扩大了Mean Shift的适用范围.另外Yizong Cheng指出了Mean Shift可能应用的领域,并给出了具体的例子。
Comaniciu等人在还(Mean-shift Blob Tracking through Scale Space)中把非刚体的跟踪问题近似为一个Mean Shift最优化问题,使得跟踪可以实时的进行。
mean-shift算法matlab代码
一、介绍Mean-shift算法Mean-shift算法是一种基于密度估计的非参数聚类算法,它可以根据数据点的密度分布自动寻找最优的聚类中心。
该算法最早由Dorin Comaniciu和Peter Meer在1999年提出,并被广泛应用于图像分割、目标跟踪等领域。
其原理是通过不断地将数据点向局部密度最大的方向移动,直到达到局部密度的最大值点,即收敛到聚类中心。
二、 Mean-shift算法的优势1. 无需事先确定聚类数量:Mean-shift算法不需要事先确定聚类数量,能够根据数据点的密度自动确定聚类数量。
2. 对初始值不敏感:Mean-shift算法对初始值不敏感,能够自动找到全局最优的聚类中心。
3. 适用于高维数据:Mean-shift算法在高维数据中仍然能够有效地进行聚类。
三、 Mean-shift算法的实现步骤1. 初始化:选择每个数据点作为初始的聚类中心。
2. 计算密度:对于每个数据点,计算其密度,并将其向密度增加的方向移动。
3. 更新聚类中心:不断重复步骤2,直至收敛到局部密度的最大值点,得到最终的聚类中心。
四、 Mean-shift算法的Matlab代码实现以下是一个简单的Matlab代码实现Mean-shift算法的示例:```matlab数据初始化X = randn(500, 2); 生成500个二维随机数据点Mean-shift算法bandwidth = 1; 设置带宽参数ms = MeanShift(X, bandwidth); 初始化Mean-shift对象[clustCent, memberships] = ms.cluster(); 执行聚类聚类结果可视化figure;scatter(X(:,1), X(:,2), 10, memberships, 'filled');hold on;plot(clustCent(:,1), clustCent(:,2), 'kx', 'MarkerSize',15,'LineWidth',3);title('Mean-shift聚类结果');```在代码中,我们首先初始化500个二维随机数据点X,然后设置带宽参数并初始化Mean-shift对象。
(数据科学学习手札14)Mean-Shift聚类法简单介绍及Python实现
(数据科学学习⼿札14)Mean-Shift聚类法简单介绍及Python实现不管之前介绍的K-means还是K-medoids聚类,都得事先确定聚类簇的个数,⽽且肘部法则也并不是万能的,总会遇到难以抉择的情况,⽽本篇将要介绍的Mean-Shift聚类法就可以⾃动确定k的个数,下⾯简要介绍⼀下其算法流程: 1.随机确定样本空间内⼀个半径确定的⾼维球及其球⼼; 2.求该⾼维球内质⼼,并将⾼维球的球⼼移动⾄该质⼼处; 3.重复2,直到⾼维球内的密度随着继续的球⼼滑动变化低于设定的阈值,算法结束具体的原理可以参考下⾯的地址,笔者读完觉得说的⽐较明了易懂:/google19890102/article/details/51030884⽽在Python中,机器学习包sklearn中封装有该算法,下⾯⽤⼀个简单的⽰例来演⽰如何在Python中使⽤Mean-Shift聚类:⼀、低维from sklearn.cluster import MeanShiftimport matplotlib.pyplot as pltfrom sklearn.manifold import TSNEfrom matplotlib.pyplot import styleimport numpy as np'''设置绘图风格'''e('ggplot')'''⽣成演⽰⽤样本数据'''data1 = np.random.normal(0,0.3,(1000,2))data2 = np.random.normal(1,0.2,(1000,2))data3 = np.random.normal(2,0.3,(1000,2))data = np.concatenate((data1,data2,data3))# data_tsne = TSNE(learning_rate=100).fit_transform(data)'''搭建Mean-Shift聚类器'''clf=MeanShift()'''对样本数据进⾏聚类'''predicted=clf.fit_predict(data)colors = [['red','green','blue','grey'][i] for i in predicted]'''绘制聚类图'''plt.scatter(data[:,0],data[:,1],c=colors,s=10)plt.title('Mean Shift')⼆、⾼维from sklearn.cluster import MeanShiftimport matplotlib.pyplot as pltfrom sklearn.manifold import TSNEfrom matplotlib.pyplot import styleimport numpy as np'''设置绘图风格'''e('ggplot')'''⽣成演⽰⽤样本数据'''data1 = np.random.normal(0,0.3,(1000,6))data2 = np.random.normal(1,0.2,(1000,6))data3 = np.random.normal(2,0.3,(1000,6))data = np.concatenate((data1,data2,data3))data_tsne = TSNE(learning_rate=100).fit_transform(data) '''搭建Mean-Shift聚类器'''clf=MeanShift()'''对样本数据进⾏聚类'''predicted=clf.fit_predict(data)colors = [['red','green','blue','grey'][i] for i in predicted]'''绘制聚类图'''plt.scatter(data_tsne[:,0],data_tsne[:,1],c=colors,s=10)plt.title('Mean Shift')三、实际⽣活中的复杂数据我们以之前⼀篇关于K-means聚类的实战中使⽤到的重庆美团商户数据为例,进⾏Mean-Shift聚类:import matplotlib.pyplot as pltfrom sklearn.cluster import MeanShiftfrom sklearn.manifold import TSNEimport pandas as pdimport numpy as npfrom matplotlib.pyplot import stylee('ggplot')data = pd.read_excel(r'C:\Users\windows\Desktop\重庆美团商家信息.xlsx')input = pd.DataFrame({'score':data['商家评分'][data['数据所属期'] == data.iloc[0,0]],'comment':data['商家评论数'][data['数据所属期'] == data.iloc[0,0]],'sales':data['本⽉销售额'][data['数据所属期'] == data.iloc[0,0]]})'''去缺省值'''input = input.dropna()input_tsne = TSNE(learning_rate=100).fit_transform(input)'''创造⾊彩列表'''with open(r'C:\Users\windows\Desktop\colors.txt','r') as cc:col = cc.readlines()col = [col[i][:7] for i in range(len(col)) if col[i][0] == '#']'''进⾏Mean-Shift聚类'''clf = MeanShift()cl = clf.fit_predict(input)'''绘制聚类结果'''np.random.shuffle(col)plt.scatter(input_tsne[:,0],input_tsne[:,1],c=[col[i] for i in cl],s=8)plt.title('Mean-Shift Cluster of {}'.format(str(len(set(cl)))))可见在实际⼯作中的复杂数据⽤Mean-Shift来聚类因为⽆法控制k个值,可能会产⽣过多的类⽽导致聚类失去意义,但Mean-Shift在图像分割上⽤处很⼤。
高斯核函数mean-shift matlab
高斯核函数mean-shift matlab高斯核函数是一种常用的核函数,它广泛应用于图像处理、模式识别、机器学习等领域。
平均漂移(mean-shift)算法是一种基于高斯核函数的非参数密度估计方法,具有较强的适应性和鲁棒性。
平均漂移算法基于传统的核密度估计方法,但它不需要指定数据的概率分布函数。
相反,它使用核函数来估计密度函数。
核函数通常采用高斯核函数,如下所示:$$K(x) = \frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{x^2}{2\sigma^2}}$$$x$表示一个样本点,$\sigma$表示高斯分布的标准差。
平均漂移算法通过迭代来寻找样本点的密度中心,即最高密度的点。
为了找到密度中心,要先选择一个起始点,并使用核函数来计算该点周围所有点的权值。
然后,根据所有点的权值计算权重平均值,以此平移当前点的位置。
不断迭代此过程,直到找到密度中心为止。
1. 选择一个起始点$x_0$。
2. 计算权重$w_i = K(||x_i-x_0||)$,其中$||\cdot||$表示欧几里得距离。
3. 计算权重平均值:$m(x_0) =\frac{\sum_{i=1}^n w_ix_i}{\sum_{i=1}^n w_i}$。
4. 将$x_0$平移到$m(x_0)$,即$x_0 = m(x_0)$。
5. 重复2~4步,直到$m(x_0)$与$x_0$之间的距离小于某个阈值或达到预定的最大迭代次数。
```matlabfunction [center, idx] = mean_shift(data, bandwidth, eps)[n, d] = size(data); % 数据维度center = zeros(n, d); % 每个数据点的密度中心converged = false(n, 1); % 每个数据点是否已经收敛idx = zeros(n, 1); % 数据点所属簇的标签for i = 1:nx = data(i, :); % 取出一个数据点cnt = 0;while ~converged(i) && cnt < 100 % 最多迭代100次cnt = cnt + 1;w = exp(-sum((data-repmat(x, n, 1)).^2, 2)/(2*bandwidth^2)); % 计算所有点的权重x_new = sum(repmat(w, 1, d).*data, 1) / sum(w); % 根据权重计算新的位置if norm(x_new - x) < eps % 如果位置变化很小,认为已经收敛center(i, :) = x_new;idx(i) = find(abs(w-max(w))<eps, 1); % 选择权重最大的簇作为标签converged(i) = true;elsex = x_new;endendend````data`表示数据样本,`bandwidth`表示高斯核函数的标准差,`eps`表示收敛判定的阈值。
Mean Shift 概述
Mean Shift 概述Mean Shift 简介Mean Shift 这个概念最早是由Fukunaga 等人[1]于1975年在一篇关于概率密度梯度函数的估计中提出来的,其最初含义正如其名,就是偏移的均值向量,在这里Mean Shift 是一个名词,它指代的是一个向量,但随着Mean Shift 理论的发展,Mean Shift 的含义也发生了变化,如果我们说Mean Shift 算法,一般是指一个迭代的步骤,即先算出当前点的偏移均值,移动该点到其偏移均值,然后以此为新的起始点,继续移动,直到满足一定的条件结束.然而在以后的很长一段时间内Mean Shift 并没有引起人们的注意,直到20年以后,也就是1995年,另外一篇关于Mean Shift 的重要文献[2]才发表.在这篇重要的文献中,Yizong Cheng 对基本的Mean Shift 算法在以下两个方面做了推广,首先Yizong Cheng 定义了一族核函数,使得随着样本与被偏移点的距离不同,其偏移量对均值偏移向量的贡献也不同,其次Yizong Cheng 还设定了一个权重系数,使得不同的样本点重要性不一样,这大大扩大了Mean Shift 的适用范围.另外Yizong Cheng 指出了Mean Shift 可能应用的领域,并给出了具体的例子.Comaniciu 等人[3][4]把Mean Shift 成功的运用的特征空间的分析,在图像平滑和图像分割中Mean Shift 都得到了很好的应用. Comaniciu 等在文章中证明了,Mean Shift 算法在满足一定条件下,一定可以收敛到最近的一个概率密度函数的稳态点,因此Mean Shift 算法可以用来检测概率密度函数中存在的模态.Comaniciu 等人[5]还把非刚体的跟踪问题近似为一个Mean Shift 最优化问题,使得跟踪可以实时的进行.在后面的几节,本文将详细的说明Mean Shift 的基本思想及其扩展,其背后的物理含义,以及算法步骤,并给出理论证明.最后本文还将给出Mean Shift 在聚类,图像平滑,图像分割,物体实时跟踪这几个方面的具体应用.Mean Shift 的基本思想及其扩展基本Mean Shift给定d 维空间dR 中的n 个样本点i x ,i=1,…,n,在x 点的Mean Shift 向量的基本形式定义为:()()1i hh i x S M x x x k ∈≡-∑ (1)其中,h S 是一个半径为h 的高维球区域,满足以下关系的y 点的集合,()()(){}2:Th S x y y x y x h ≡--≤ (2)k 表示在这n 个样本点i x 中,有k 个点落入h S 区域中.陈姝注:11111111()()kii k k k h i i i i i i x x k M x x x x x x kx x x k k k =====⎛⎫⎛⎫=-=-=-=- ⎪ ⎪⎝⎭⎝⎭∑∑∑∑我们可以看到()i x x -是样本点i x 相对于点x 的偏移向量,(1)式定义的Mean Shift 向量()h M x 就是对落入区域h S 中的k 个样本点相对于点x 的偏移向量求和然后再平均.从直观上看,如果样本点i x 从一个概率密度函数()f x 中采样得到,由于非零的概率密度梯度指向概率密度增加最大的方向,因此从平均上来说, h S 区域内的样本点更多的落在沿着概率密度梯度的方向.因此,对应的, Mean Shift 向量()h M x 应该指向概率密度梯度的方向.图1,Mean Shift 示意图如上图所示, 大圆圈所圈定的范围就是h S ,小圆圈代表落入h S 区域内的样本点i h x S ∈,黑点就是Mean Shift 的基准点x ,箭头表示样本点相对于基准点x 的偏移向量,很明显的,我们可以看出,平均的偏移向量()h M x 会指向样本分布最多的区域,也就是概率密度函数的梯度方向.扩展的Mean Shift核函数首先我们引进核函数的概念.定义:X 代表一个d 维的欧氏空间,x 是该空间中的一个点,用一列向量表示. x 的模2T x x x =.R 表示实数域.如果一个函数:K X R →存在一个剖面函数[]:0,k R ∞→,即()2()K x k x=(3)并且满足:(1) k 是非负的.(2) k 是非增的,即如果a b <那么()()k a k b ≥. (3) k 是分段连续的,并且0()k r dr ∞<∞⎰那么,函数()K x 就被称为核函数.举例:在Mean Shift 中,有两类核函数经常用到,他们分别是, 单位均匀核函数:1 if 1()0 if 1x F x x ⎧<⎪=⎨≥⎪⎩ (4)单位高斯核函数:2()xN x e-= (5)这两类核函数如下图所示.图2, (a) 单位均匀核函数 (b) 单位高斯核函数一个核函数可以与一个均匀核函数相乘而截尾,如一个截尾的高斯核函数为,()2if ()0 ifx e x N F x x ββλλλ-⎧<⎪=⎨≥⎪⎩ (6)图 3 显示了不同的,βλ值所对应的截尾高斯核函数的示意图.图3 截尾高斯核函数 (a) 11N F (b) 0.11N FMean Shift 扩展形式从(1)式我们可以看出,只要是落入h S 的采样点,无论其离x 远近,对最终的()h M x 计算的贡献是一样的,然而我们知道,一般的说来,离x 越近的采样点对估计x 周围的统计特性越有效,因此我们引进核函数的概念,在计算()h M x 时可以考虑距离的影响;同时我们也可以认为在这所有的样本点i x 中,重要性并不一样,因此我们对每个样本都引入一个权重系数. 陈姝注:考虑下particle filtering 中的重要函数,蒙特卡罗采样。
mean_shift算法的原理与实现详解
PDF(x) =
c e
i i
Estimate
Assumed Underlying PDF
Real Data Samples
Kernel Density Estimation
Parzen Windows - Function Forms
1 n P ( x) K ( x - x i ) n i 1
Mean Shift vector
Objective : Find the densest region Distribution of identical billiard balls
Intuitive Description
Region of interest Center of mass
Mean Shift vector
• Applications • Clustering • Discontinuity Preserving Smoothing • Object Contour Detection • Segmentation • Object Tracking
Mean Shift Theory
Intuitive Description
Mean Shift
Theory and Applications
Yaron Ukrainitz & Bernard Sarel
Agenda
• Mean Shift Theory • What is Mean Shift ? • Density Estimation Methods • Deriving the Mean Shift • Mean shift properties
Mean Shift Properties
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Mean Shift 概述Mean Shift 简介Mean Shift 这个概念最早是由Fukunaga 等人[1]于1975年在一篇关于概率密度梯度函数的估计中提出来的,其最初含义正如其名,就是偏移的均值向量,在这里Mean Shift 是一个名词,它指代的是一个向量,但随着Mean Shift 理论的发展,Mean Shift 的含义也发生了变化,如果我们说Mean Shift 算法,一般是指一个迭代的步骤,即先算出当前点的偏移均值,移动该点到其偏移均值,然后以此为新的起始点,继续移动,直到满足一定的条件结束.然而在以后的很长一段时间内Mean Shift 并没有引起人们的注意,直到20年以后,也就是1995年,另外一篇关于Mean Shift 的重要文献[2]才发表.在这篇重要的文献中,Yizong Cheng 对基本的Mean Shift 算法在以下两个方面做了推广,首先Yizong Cheng 定义了一族核函数,使得随着样本与被偏移点的距离不同,其偏移量对均值偏移向量的贡献也不同,其次Yizong Cheng 还设定了一个权重系数,使得不同的样本点重要性不一样,这大大扩大了Mean Shift 的适用范围.另外Yizong Cheng 指出了Mean Shift 可能应用的领域,并给出了具体的例子.Comaniciu 等人[3][4]把Mean Shift 成功的运用的特征空间的分析,在图像平滑和图像分割中Mean Shift 都得到了很好的应用.Comaniciu 等在文章中证明了,Mean Shift 算法在满足一定条件下,一定可以收敛到最近的一个概率密度函数的稳态点,因此Mean Shift 算法可以用来检测概率密度函数中存在的模态.Comaniciu 等人[5]还把非刚体的跟踪问题近似为一个Mean Shift 最优化问题,使得跟踪可以实时的进行.在后面的几节,本文将详细的说明Mean Shift 的基本思想及其扩展,其背后的物理含义,以及算法步骤,并给出理论证明.最后本文还将给出Mean Shift 在聚类,图像平滑,图像分割,物体实时跟踪这几个方面的具体应用.Mean S h ift 的基本思想及其扩展基本Mean Shift给定d 维空间dR 中的n 个样本点i x ,i=1,…,n,在x 点的Mean Shift 向量的基本形式定义为:()()1i hh i x S M x x x k ∈≡−∑(1)其中,h S 是一个半径为h 的高维球区域,满足以下关系的y 点的集合,()()(){}2:Th S x y y x y x h ≡−−≤(2)k 表示在这n 个样本点i x 中,有k 个点落入h S 区域中.我们可以看到()i x x −是样本点i x 相对于点x 的偏移向量,(1)式定义的Mean Shift 向量()h M x 就是对落入区域h S 中的k 个样本点相对于点x 的偏移向量求和然后再平均.从直观上看,如果样本点i x 从一个概率密度函数()f x 中采样得到,由于非零的概率密度梯度指向概率密度增加最大的方向,因此从平均上来说,h S 区域内的样本点更多的落在沿着概率密度梯度的方向.因此,对应的,Mean Shift 向量()h M x 应该指向概率密度梯度的方向.图1,Mean Shift 示意图如上图所示,大圆圈所圈定的范围就是h S ,小圆圈代表落入h S 区域内的样本点i h x S ∈,黑点就是Mean Shift 的基准点x ,箭头表示样本点相对于基准点x 的偏移向量,很明显的,我们可以看出,平均的偏移向量()h M x 会指向样本分布最多的区域,也就是概率密度函数的梯度方向.扩展的Mean Shift 核函数首先我们引进核函数的概念.定义:X 代表一个d 维的欧氏空间,x 是该空间中的一个点,用一列向量表示.x 的模2T x x x =.R 表示实数域.如果一个函数:K X R →存在一个剖面函数[]:0,k R ∞→,即()2()K x k x=(3)并且满足:(1)k 是非负的.(2)k 是非增的,即如果a b <那么()()k a k b ≥.(3)k 是分段连续的,并且()k r dr ∞<∞∫那么,函数()K x 就被称为核函数.举例:在Mean Shift 中,有两类核函数经常用到,他们分别是,单位均匀核函数:1 if 1()0 if 1x F x x ⎧<⎪=⎨≥⎪⎩(4)单位高斯核函数:2()xN x e−=(5)这两类核函数如下图所示.图2,(a)单位均匀核函数(b)单位高斯核函数一个核函数可以与一个均匀核函数相乘而截尾,如一个截尾的高斯核函数为,()2if ()0 ifx e x N F x x ββλλλ−⎧<⎪=⎨≥⎪⎩(6)图3显示了不同的,βλ值所对应的截尾高斯核函数的示意图.图3截尾高斯核函数(a)11N F (b)0.11NFMean Shift 扩展形式从(1)式我们可以看出,只要是落入h S 的采样点,无论其离x 远近,对最终的()h M x 计算的贡献是一样的,然而我们知道,一般的说来,离x 越近的采样点对估计x 周围的统计特性越有效,因此我们引进核函数的概念,在计算()h M x 时可以考虑距离的影响;同时我们也可以认为在这所有的样本点i x 中,重要性并不一样,因此我们对每个样本都引入一个权重系数.如此以来我们就可以把基本的Mean Shift 形式扩展为:()11()()()()()nHi i i i nHi i i Gx x w x x x M x Gx x w x ==−−≡−∑∑(7)其中:()()1/21/2()H i i G x x HG H x x −−−=−()G x 是一个单位核函数H 是一个正定的对称d d ×矩阵,我们一般称之为带宽矩阵()0i w x ≥是一个赋给采样点i x 的权重在实际应用的过程中,带宽矩阵H 一般被限定为一个对角矩阵221diag ,...,d H h h ⎡⎤=⎣⎦,甚至更简单的被取为正比于单位矩阵,即2H h I =.由于后一形式只需要确定一个系数h ,在Mean Shift 中常常被采用,在本文的后面部分我们也采用这种形式,因此(7)式又可以被写为:()11()()()(()ni i i i h ni i i x xG w x x x h M x x x G w x h ==−−≡−∑∑(8)我们可以看到,如果对所有的采样点i x 满足(1)()1i w x =(2) 1 if 1()0 if 1x G x x ⎧<⎪=⎨≥⎪⎩则(8)式完全退化为(1)式,也就是说,我们所给出的扩展的Mean Shift 形式在某些情况下会退化为最基本的Mean Shift 形式.M e an Shift 的物理含义正如上一节直观性的指出,Mean Shift 指向概率密度梯度方向,这一节将证明Mean Shift 向量()h M x 是归一化的概率密度梯度.在本节我们还给出了迭代Mean Shift 算法的详细描述,并证明,该算法会收敛到概率密度函数的一个稳态点.概率密度梯度对一个概率密度函数()f x ,已知d 维空间中n 个采样点i x ,i=1,…,n,()f x 的核函数估计(也称为Parzen 窗估计)为,11()ˆ()()ni i i nd i i x x K w x h f x h w x ==−⎛⎞⎜⎟⎝⎠=∑∑(9)其中()0i w x ≥是一个赋给采样点i x 的权重()K x 是一个核函数,并且满足()1k x dx =∫我们另外定义:核函数()K x 的剖面函数()k x ,使得()2()K x kx=(10);()k x 的负导函数()g x ,即'()()g x k x =−,其对应的核函数()2()G x g x=(11)概率密度函数()f x 的梯度()f x ∇的估计为:()2'1212()ˆˆ()()()ni i i i nd i i x x x x k w x h f x f x h w x =+=⎛⎞−−⎜⎟⎜⎟⎝⎠∇=∇=∑∑(12)由上面的定义,'()()g x k x =−,()2()G x gx=,上式可以重写为()()21212112112()ˆ()()()()2 ()()ni i i i nd i i ni ni i i i i i nd n i i i i i x xx x G w x h f x h w x x x x x x x G w x G w x h h x x h h w x G w x h =+=====⎛⎞−−⎜⎟⎜⎟⎝⎠∇=⎡⎤⎛⎞−⎡−⎤⎛⎞−⎢⎥⎜⎟⎜⎟⎜⎟⎢⎥⎢⎥⎝⎠⎝⎠⎢⎥=⎢⎥−⎛⎞⎢⎥⎢⎥⎜⎟⎢⎥⎝⎠⎢⎥⎣⎦⎣⎦∑∑∑∑∑∑(13)上式右边的第二个中括号内的那一部分就是(8)式定义的Mean Shift 向量,第一个中括号内的那一部分是以()G x 为核函数对概率密度函数()f x 的估计,我们记做ˆ()G f x ,而(9)式定义的ˆ()f x 我们重新记做ˆ()Kf x ,因此(11)式可以重新写为:ˆ()f x ∇=ˆ()K f x ∇=()22ˆ()Gh f x M x h(14)由(12)式我们可以得出,()2ˆ()1ˆ2()Kh G f x M x hf x ∇=(15)(15)式表明,用核函数G 在x 点计算得到的Mean Shift 向量()h M x 正比于归一化的用核函数K 估计的概率密度的函数ˆ()Kf x 的梯度,归一化因子为用核函数G 估计的x 点的概率密度.因此Mean Shift 向量()h M x 总是指向概率密度增加最大的方向.Mean Shift 算法算法步骤我们在前面已经指出,我们在提及Mean Shift 向量和Mean Shift 算法的时候指代不同的概念,Mean Shift 向量是名词,指的是一个向量;而Mean Shift 算法是动词,指的是一个迭代的步骤.我们把(8)式的x 提到求和号的外面来,可以得到下式,()11()()()()ni i i i h n i i i x xG w x x hM x xx x G w x h ==−=−−∑∑(16)我们把上式右边的第一项记为()h m x ,即11()()()()()ni i i i h ni i i x xG w x x hm x x x G w x h ==−=−∑∑(17)给定一个初始点x ,核函数()G X ,容许误差ε,Mean Shift 算法循环的执行下面三步,直至结束条件满足,(1).计算()h m x(2).把()h m x 赋给x(3).如果()h m x x ε−<,结束循环;若不然,继续执行(1).由(16)式我们知道,()()h h m x x M x =+,因此上面的步骤也就是不断的沿着概率密度的梯度方向移动,同时步长不仅与梯度的大小有关,也与该点的概率密度有关,在密度大的地方,更接近我们要找的概率密度的峰值,Mean Shift 算法使得移动的步长小一些,相反,在密度小的地方,移动的步长就大一些.在满足一定条件下,Mean Shift 算法一定会收敛到该点附近的峰值,这一收敛性由下面一小节给出证明.算法的收敛性证明我们用{}j y ,1,2,...j =来表示Mean Shift 算法中移动点的痕迹,由(17)式我们可写为,111()()()()ni ji i i j ni j i i x y G w x x hy x y G w x h =+=−=−∑∑,1,2,...j =(18)与j y 对应的概率密度函数估计值ˆ()jf y 可表示为,11()ˆ()()ni j i i K j nd i i x y K w x h f y h w x ==−⎛⎞⎜⎟⎝⎠=∑∑(19)下面的定理将证明序列{}j y 和{}ˆ()jf y 的收敛性.定理:如果核函数()K x 有一个凸的,单调递增的剖面函数,核函数()G x 由式(10)和(11)定义,则序列{}j y 和{}ˆ()jf y 是收敛的.证明:由于n 是有限的,核函数()(0)K x K ≤,因此序列{}ˆ()j f y 是有界的,所以我们只需要证明{}ˆ()jf y 是严格递增的的,即要证明,对所有j=1,2,…如果1j j y y +≠,那么ˆ()j f y 1ˆ()j f y +<(20)不失一般性,我们可以假设0j y =,由(19)式和(10)式,我们可以得到1ˆ()j f y +ˆ()j f y −=221111()()ni j i ji n i d i i x yx y k k w x h h h w x +==⎡⎤⎛⎞⎛⎞−−⎢⎥⎜⎟⎜⎟−⎜⎟⎜⎟⎢⎥⎝⎠⎝⎠⎣⎦∑∑(21)由于剖面函数()k x 的凸性意味着对所有12,[0,)x x ∈∞且12x x ≠,有'2121()()()()k x k x k x x x ≥+−(22)因为'()()g x k x =−,上式可以写为,2112()()()()k x k x g x x x −≥−(23)结合(21)与(23)式,可以得到,1ˆ()j f y +ˆ()jf y −222111211()()ni j i j i i n i d i i x y g x y x w x h h w x ++=+=⎛⎞−⎡⎤⎜⎟≥−−⎢⎥⎣⎦⎜⎟⎝⎠∑∑2211112112()()ni j T j i j i n i d i i x y g y x y w x h h w x +++=+=⎛⎞−⎡⎤⎜⎟=−⎢⎥⎣⎦⎜⎟⎝⎠∑∑12221211112()()()j n nT ii i i j i n d i i i i x x y x g w x y g w x h h h w x +++===⎡⎤⎛⎞⎛⎞=−⎢⎥⎜⎟⎜⎟⎜⎟⎜⎟⎢⎥⎝⎠⎝⎠⎣⎦∑∑∑(24)由(18)式我们可以得出,1ˆ()j f y +ˆ()jf y −2211211()n ij n i d i i x y g hhw x +=+=⎛⎞≥⎜⎟⎜⎟⎝⎠∑∑(25)由于剖面函数()k x 是单调递减的,所以求和项210nii xg h =⎛⎞>⎜⎟⎜⎟⎝⎠∑,因此,只要10j j y y +≠=(25)式的右边项严格大于零,即1ˆ()j f y +ˆ()j f y >.由此可证得,序列{}ˆ()jf y 收敛为了证明序列{}j y 的收敛性,对于0j y ≠,(25)式可以写为1ˆ()j f y +ˆ()jf y −2211211()ni jj jn i d i i x y y y g hhw x +=+=⎛⎞−⎜⎟≥−⎜⎟⎝⎠∑∑(26)现在对于标号j,j+1,…,j+m-1,对(26)式的左右两边分别求和,得到ˆ()j m f y +ˆ()jf y −22111211...()ni j m j m j m ni d i i x y y y g h h w x +−++−=+=⎛⎞−⎜⎟≥−+⎜⎟⎝⎠∑∑2211211()ni jj jn i d i i x y y y g hhw x +=+=⎛⎞−⎜⎟+−⎜⎟⎝⎠∑∑2211211...()j m j m j j n d i i y y y y M h w x ++−−+=⎡⎤≥−++−⎢⎥⎣⎦∑2211()j m j n d i i y y Mhw x ++=≥−∑(27)其中M 表示对应序列{}j y 的所有求和项21ni ji x y g h =⎛⎞−⎜⎟⎜⎟⎝⎠∑的最小值.由于{}ˆ()j f y 收敛,它是一个Cauchy 序列,(27)式意味着{}jy 也是一个Cauchy 序列,因此,序列{}j y 收敛.Mean Shift 的应用从前面关于Mean Shift 和概率密度梯度的关系的论述,我们可以清楚的看到,Mean Shift算法本质上是一个自适应的梯度上升搜索峰值的方法,如下图所示,如果数据集{},1,...i x i n =服从概率密度函数f(x),给定一个如图初始点x ,Mean Shift 算法就会一步步的移动,最终收敛到第一个峰值点.从这张图上,我们可以看到Mean Shift 至少有如下三方面的应用:(1)聚类,数据集{},1,...i x i n =中的每一点都可以作为初始点,分别执行Mean Shift 算法,收敛到同一个点算作一类;(2)模态的检测,概率密度函数中的一个峰值就是一个模态,Mean Shift 在峰值处收敛,自然可以找到该模态.(3)最优化,Mean Shift 可以找到峰值,自然可以作为最优化的方法,Mean Shift 算法进行最优化的关键是要把最优化的目标转化成Mean Shift 隐含估计的概率密度函数.图4.Mean Shift 算法示意图Mean Shift 算法在许多领域获得了非常成功的应用,下面简要的介绍一下其在图像平滑,图像分割以及物体跟踪中的应用,一来说明其强大的生命力,二来使对上文描述的算法有一个直观的了解.图像平滑与分割一幅图像可以表示成一个二维网格点上p 维向量,每一个网格点代表一个象素,1p =表示这是一个灰度图,3p =表示彩色图,3p >表示一个多谱图,网格点的坐标表示图像的空间信息.我们统一考虑图像的空间信息和色彩(或灰度等)信息,组成一个2p +维的向量(,)s r x x x =,其中s x 表示网格点的坐标,r x 表示该网格点上p 维向量特征.我们用核函数,s r h h K 来估计x 的分布,,s r h h K 具有如下形式,22,2s rs r h h p s r sr C x x K k k h h h h ⎛⎞⎛⎞⎜⎟⎜⎟=⎜⎟⎜⎟⎝⎠⎝⎠(28)其中,s r h h 控制着平滑的解析度,C 是一个归一化常数.我们分别用i x 和i z ,i=1,…,n 表示原始和平滑后的图像.用Mean Shift 算法进行图像平滑的具体步骤如下,对每一个象素点,1,初始化1j =,并且使,1i iy x =2,运用Mean Shift 算法计算,1i j y +,直到收敛.记收敛后的值为,i c y 3.赋值(),,s ri i i cz x y =图5是原始图像,图中40×20白框区域被选中来更好的显示基于Mean Shift 的图像平滑步骤,图6显示了这一区域的平滑步骤,x,y 表示这一区域内的象素点的坐标,图6(a)在一个三维空间显示了各个象素点的灰度值,图6(b)显示各点的移动痕迹,黑点是最终收敛值,图6(c)显示了平滑后的各象素点的灰度值,图6(d)是继续分割后的结果.图5.原始图像图6.(a)原始图像的各象素点灰度值.(b)各象素点的Mean Shift移动路径.(c)平滑后的各象素点的灰度值.(d)分割后的结果图7显示了图5经过平滑后的结果,我们可以看到,草地上的草地纹理被平滑掉了,而图像中边缘仍然很好的保持着..图7平滑后的结果h h是非常重要的参数,人们可以根据解析度的在基于Mean Shift的图像平滑中,式(28)中的,s rh h会对最终的平滑结果有一定的影响,图7显示了这两个参数对平要求而直接给定,不同,s rh影响更大一些.滑结果的影响,我们可以看出,s图8,原始图和平滑后的图基于Mean Shift的图像分割与图像平滑非常类似,只需要把收敛到同一点的起始点归为一类,然后把这一类的标号赋给这些起始点,在图像分割中有时还需要把包含象素点太少类去掉,图6(d)显示分割后的灰度值.图8,显示了图5经过分隔后的结果图8,分割后的结果物体跟踪我们用一个物体的灰度或色彩分布来描述这个物体,假设物体中心位于0x ,则该物体可以表示为()201ˆi i s n s u i x x q C k b x u h δ=⎛⎞−⎜⎟⎡⎤=−⎣⎦⎜⎟⎝⎠∑(29)候选的位于y 的物体可以描述为()21ˆ()h n s s i u h i i x y p y C k b x u h δ=⎛⎞−⎡⎤⎜⎟=−⎣⎦⎜⎟⎝⎠∑(30)因此物体跟踪可以简化为寻找最优的y ,使得ˆ()u py 与ˆu q 最相似.ˆ()u py 与ˆu q 的最相似性用Bhattacharrya 系数ˆ()y ρ来度量分布,即[]ˆ()(),m u y p y q ρρ=≡=(31)式(31)在ˆu p()0ˆy 点泰勒展开可得,[]1111(),(22m mu u u p y q p y ρ==≈∑(32)把式(30)带入式,整理可得,[]2111(),22mn hi i u i C y x p y q w k h ρ==⎛⎞−≈⎜⎟⎜⎟⎝⎠∑(33)其中,1[()m i i u w b x u δ==−∑对式(33)右边的第二项,我们可以利用Mean Shift 算法进行最优化.在Comaniciu 等人的文章中,他们只用平均每帧图像只用4.19次Mean Shift 迭代就可以收敛,他们的结果很显示在600MHz 的PC 机上,他们的程序可以每秒处理30帧352×240象素的图像.下图显示了各帧需要的Mean Shift 迭代次数.图9,各帧需要的Mean Shift迭代次数下图显示了Comaniciu等人的跟踪结果图10,基于Mean Shift的物体跟踪结果结论本文回顾了Mean Shift的发展历史,介绍了它的基本思想,给出了具体的算法步骤,详细证明了它与梯度上升搜索法的联系,并给出Mean Shift算法的收敛性证明,最后给出了Mean Shift在图像平滑,图像分割以及实时物体跟踪中的具体应用,显示Mean Shift强大的生命力.参考文献[1]The Estimation of the Gradient of a Density Function,with Applications in Pattern Recognition (1975)[2]Mean shift,mode seeking,and clustering(1995)[3]Mean Shift:a robust approach toward feature space analysis(2002)[4]Real-time tracking of non-rigid objects using mean shift(2000)[5]Mean-shift Blob Tracking through Scale Space(2003)[6]An algorithm for data-driven bandwidth selection(2003)。