mean-shift算法概述
- 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 Shift 的基本思想及其扩展
基本Mean Shift
给定d 维空间d
R 中的n 个样本点i x ,i=1,…,n,在x 点的Mean Shift 向量的基本形式定义为:
()()1
i h
h i x S M x x x k ∈≡
-∑ (1)
其中,h S 是一个半径为h 的高维球区域,满足以下关系的y 点的集合,
()()
(){
}2:T
h 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 的模
2
T 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 1 x F x x ⎧<⎪=⎨≥⎪⎩
(4)
单位高斯核函数:
2
()x
N x e
-= (5)
这两类核函数如下图所示.
图2, (a) 单位均匀核函数 (b) 单位高斯核函数
一个核函数可以与一个均匀核函数相乘而截尾,如一个截尾的高斯核函数为,
()2
if ()0 if
x e x N F x x ββ
λλλ-⎧<⎪=⎨
≥⎪⎩ (6)
图 3 显示了不同的,βλ值所对应的截尾高斯核函数的示意图.
图3 截尾高斯核函数 (a) 11N F (b) 0.1
1N F
Mean Shift 扩展形式
从(1)式我们可以看出,只要是落入h S 的采样点,无论其离x 远近,对最终的()h M x 计算的贡献是一样的,然而我们知道,一般的说来,离x 越近的采样点对估计x 周围的统计特性越有效,因此我们引进核函数的概念,在计算()h M x 时可以考虑距离的影响;同时我们也可以认为在这所有的样本点i x 中,重要性并不一样,因此我们对每个样本都引入一个权重系数.
如此以来我们就可以把基本的Mean Shift 形式扩展为:
()1
1
()()()
()()
n
H
i i i i n
H
i i i G
x x w x x x M x G
x x w x ==--≡
-∑∑ (7)
其中: ()()1/2
1/2()H i i G x x H
G H x x ---=-
()G x 是一个单位核函数
H 是一个正定的对称d d ⨯矩阵,我们一般称之为带宽矩阵
()0i w x ≥是一个赋给采样点i x 的权重
在实际应用的过程中,带宽矩阵H 一般被限定为一个对角矩阵22
1diag ,...,d H h h ⎡⎤=⎣⎦,甚至更
简单的被取为正比于单位矩阵,即2
H h I =.由于后一形式只需要确定一个系数h ,在Mean Shift 中常常被采用,在本文的后面部分我们也采用这种形式,因此(7)式又可以被写为:
()1
1
(
)()()()()n
i i i i h n
i i i x x
G 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 1 x G x x ⎧<⎪=⎨≥⎪⎩
则(8)式完全退化为(1)式,也就是说,我们所给出的扩展的Mean Shift 形式在某些情况下会退
化为最基本的Mean Shift 形式.
Mean Shift 的物理含义
正如上一节直观性的指出,Mean Shift 指向概率密度梯度方向,这一节将证明Mean Shift 向量
()h M x 是归一化的概率密度梯度.在本节我们还给出了迭代Mean Shift 算法的详细描述,并
证明,该算法会收敛到概率密度函数的一个稳态点.
概率密度梯度
对一个概率密度函数()f x ,已知d 维空间中n 个采样点i x ,i=1,…,n, ()f x 的核函数估计(也称为Parzen 窗估计)为,
11()
ˆ()()
n
i i i n d
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 k
x
=
(10);
()k x 的负导函数()g x ,即'()()g x k x =-,其对应的核函数()2
()G x g x
= (11)
概率密度函数()f x 的梯度()f x ∇的估计为:
()2
'
1212()ˆˆ()()()
n
i i i i n
d 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 g
x
=,上式可以重写为
()()2
1212112112()ˆ()()
()()2 ()()n
i
i i i n
d i i n i n i i i i i i n d n i i i i i x x
x 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 我们重新记做ˆ()K
f x ,因此(11)式可以重新写为: ˆ()f x ∇=ˆ()K f x ∇=()22ˆ()G
h f x M x h
(14)
由(12)式我们可以得出,
()2ˆ()1ˆ2()
K
h G f x M x h f x ∇= (15)
(15)式表明,用核函数G 在x 点计算得到的Mean Shift 向量()h M x 正比于归一化的用核函数
K 估计的概率密度的函数ˆ()K
f x 的梯度,归一化因子为用核函数G 估计的x 点的概率密度.因此Mean Shift 向量()h M x 总是指向概率密度增加最大的方向.
Mean Shift 算法 算法步骤
我们在前面已经指出,我们在提及Mean Shift 向量和Mean Shift 算法的时候指代不同的
概念,Mean Shift 向量是名词,指的是一个向量;而Mean Shift 算法是动词,指的是一个迭代的步骤.我们把(8)式的x 提到求和号的外面来,可以得到下式,
()11
(
)()()()n
i i i i h n i i i x x
G w x x h
M x x x x G w x h ==-=--∑∑
(16)
我们把上式右边的第一项记为()h m x ,即
11
(
)()()()()n
i i i i h n i i i x x
G w x x h
m 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
(
)()()()n
i j
i i i j n
i j i i x y G w x x h
y x y G w x h =+=-=-∑∑, 1,2,...j = (18) 与j y 对应的概率密度函数估计值ˆ()j
f y 可表示为, 11()ˆ()()
n
i j i i K j n d
i i x y K w x h f y h w x ==-⎛⎫
⎪⎝⎭=∑∑ (19)
下面的定理将证明序列{}j y 和{}
ˆ()j
f y 的收敛性. 定理:如果核函数()K x 有一个凸的,单调递增的剖面函数,核函数()G x 由式(10)和(11)定义,
则序列{}j y 和{}
ˆ()j
f y 是收敛的. 证明:由于n 是有限的,核函数()(0)K x K ≤,因此序列{}
ˆ()j f y 是有界的,所以我们只需要证明{}
ˆ()j
f 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 -=2
2
1111 ()()n i j i j
i n
i d i i x y x 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 +ˆ()j
f y -
2
22
1
11211
()()n
i j i j i i n i d i i x y g x y x w x h h w x ++=+=⎛⎫-⎡⎤
⎪≥--⎢
⎥⎣⎦ ⎪⎝
⎭
∑∑
2
2
1
111211 2()()n
i j T j i j i n i d i i x y g y x y w x h h w x +++=+=⎛⎫-⎡⎤
⎪=-⎢⎥⎣
⎦ ⎪⎝
⎭
∑∑
12
2
2
12111
1
2()()()
j n n
T i
i 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 +ˆ()j
f y -2
2
1
12
1
1()
n i
j n i d i i x y g h
h
w x +=+=⎛⎫≥ ⎪ ⎪⎝
⎭
∑∑
(25)
由于剖面函数()k x 是单调递减的,所以求和项2
10n
i i x g h =⎛⎫
> ⎪ ⎪⎝⎭
∑,因此,只要10j j y y +≠= (25)式的右边项严格大于零,即1ˆ()j f y +ˆ()j
f y >.由此可证得,序列{}
ˆ()j f y 收敛 为了证明序列{}
j y 的收敛性,对于0j y ≠,(25)式可以写为
1ˆ()j f y +ˆ()j
f y -2
2
112
1
1()
n
i j j j
n i d i i x y y y g h
h
w x +=+=⎛⎫
- ⎪≥- ⎪⎝
⎭
∑∑
(26) 现在对于标号j,j+1,…,j+m -1,对(26)式的左右两边分别求和,得到 ˆ()j m f y +ˆ()j
f y -
2
2
1
1
1211
...()
n
i j m j m j m n
i d i i x y y y g h h w x +-++-=+=⎛⎫
- ⎪≥
-+ ⎪⎝
⎭
∑∑
2
2
112
1
1
()
n
i j
j j
n i d i i x y y y g h
h
w x +=+=⎛⎫- ⎪+
- ⎪⎝
⎭
∑∑
22
11211
...()j m j m j j n d i i y y y y M h w x ++--+=⎡⎤≥
-++-⎢⎥⎣
⎦∑
2
2
1
1()
j m j n d i i y y M h
w x ++=≥
-∑
(27)
其中M 表示对应序列{}j y 的所有求和项2
1n
i j
i x y g h =⎛⎫
-
⎪ ⎪⎝
⎭
∑的最小值.
由于{}
ˆ()j f y 收敛,它是一个Cauchy 序列,(27)式意味着{}
j
y 也是一个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 具有如下形式,
2
2
,2s r
s r h h p s r s
r 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 i y x =
2,运用Mean Shift 算法计算,1i j y +,直到收敛.记收敛后的值为,i c y
3.赋值()
,,s r i i i c z 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 r
h h会对最终的平滑结果有一定的影响,图7显示了这两个参数对平要求而直接给定,不同,
s r
h影响更大一些.
滑结果的影响,我们可以看出,
s
图8,原始图和平滑后的图
基于Mean Shift的图像分割与图像平滑非常类似,只需要把收敛到同一点的起始点归为一类,然后把这一类的标号赋给这些起始点,在图像分割中有时还需要把包含象素点太少类去掉,图6(d)显示分割后的灰度值.图8,显示了图5经过分隔后的结果
图8,分割后的结果
物体跟踪
我们用一个物体的灰度或色彩分布来描述这个物体,假设物体中心位于0x ,则该物体可以表示为
()
2
1
ˆi i s n
s u i x x
q
C k b x u h δ=⎛⎫
- ⎪⎡⎤=-⎣
⎦ ⎪⎝
⎭
∑
(29)
候选的位于y 的物体可以描述为
()2
1
ˆ()h
n s s i u h i i x y
p
y C k b x u h δ=⎛⎫
-⎡⎤ ⎪=-⎣
⎦ ⎪⎝
⎭
∑
(30)
因此物体跟踪可以简化为寻找最优的y ,使得ˆ()u p
y 与ˆu q 最相似. ˆ()u p
y 与ˆu q 的最相似性用Bhattacharrya 系数ˆ()y ρ来度量分布,即 [
]ˆ()(),m
u y p y q ρ
ρ=≡= (31)
式(31)在ˆu p
()0ˆy 点泰勒展开可得,
[
]1111(),(22m m
u u u p y q p y ρ==≈∑
(32)
把式(30)带入式,整理可得,
[
]2
111(),22
m
n
h
i
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)。