文档库 最新最全的文档下载
当前位置:文档库 › meanshift公式

meanshift公式

meanshift公式
meanshift公式

meanshift 公式

第一步:rect (含有四个参数:矩形框的左上点坐标,矩形框的宽和高) 矩形框的中心坐标:

_(1)(3)/2

_(2)(4)/2

tic x rect rect tic y rect rect =+=+

第二步:矩形框的高为a ,宽为b (a 为行数,b 为列数) (1)/2

(2)/2

y a y b ==

带宽

(1)^2(2)^2(/2)^2(/2)^2h y y a b =+=+

计算矩形区域每一点的权重矩阵(模板帧)

111212122

21211...111...1_............11...1b b

a a ab

a a a a a a m wei a a a ------=

---

m_wei 是一个axb 的矩阵其中 11(1/2)^2(1/2)^2

11(/2)^2(/2)^2

a b a a b -+--=-

+

(/2)^2(/2)^2

11(/2)^2(/2)^2

ij i a j b a a b -+--=-

+

((1,),(1,))i a j b ∈∈

归一化系数C 为矩阵m_wei 中每个元素相加的和的倒数

11

1

(/2)^2(/2)^21(/2)^2(/2)^2a b

i j C i a j b a b ===

-+--+∑∑ 第三步:rgb 颜色空间量化为16x16x16bins

矩形框区域内每个像素点中的RGB 分量为q_R,q_B,q_G

____*256*16161616

q R q G q B

q temp =

++ 求出的q_temp 用来作为的是hist1矩阵的列向量下标形式为

1(_1)1q temp hist +

第四步:计算权重矩阵

111213141516140961......hist h h h h h h h =

hist1为1行4096列的矩阵 其中 11m hist

中的 _1m q temp =+

((1,4096))m ∈

当计算矩形区域中的第一个像素时

1_(1,1)111_(1,1)q temp hist hist m wei +=+ 计算矩形区域中的坐标为(i,j )的像素时

1_(,)111_(,)((1,),(1,))

q temp i j hist hist m wei i j i a j b +=+∈∈

也就是说,q_temp 决定着hist1中的第一行第几列不为零,而hist1为q_temp 中权重值相同的像素加到同一列上去。

第五步:计算文件夹中的.jpg 文件的个数,开始循环处理 第六步:设定偏移量的范围,确定迭代的条件 第七步:处理当前帧的权重矩阵并归一化

矩形框区域内每个像素点中的RGB 分量为q_R,q_B,q_G

____1*256*16161616

q R q G q B

q temp =

++ 求出的q_temp 用来作为的是hist1矩阵的列向量下标形式为

1_1(,)12q temp i j hist +

1112

13

14

15

16140962......hist h h h h h h h =

hist2为1行4096列的矩阵

其中 12m hist

中的 _1(,)1m q temp i j =+

((1,4096))m ∈

当计算矩形区域中的第一个像素时

1_1(1,1)122_(1,1)q temp hist hist m wei +=+

计算矩形区域中的坐标为(i,j )的像素时

1_1(,)122_(,)((1,),(1,))

q temp i j hist hist m wei i j i a j b +=+∈∈

也就是说,q_temp1决定着hist2中的第一行第几列不为零,而hist2为q_temp1中权重值相同的像素加到同一列上去。 第八步:计算比值

111214096...w w w w =

1(1,4096))i w i =

第九步:计算偏移量,更新坐标

1int32(_1(,))1

1int32(_1(,))1__(int 32(_1(,))1)

__(int 32(_1(,))1)*[(1)0.5,(2)0.5])*[(1)0.5,(2)0.5]((1,),(1,))

u q temp i j u q temp i j sum w sum w w u q temp i j sum w sum w w xw xw w u q temp i j i y j y xw xw w i y j y i a j b ++=++=+=++----=+----∈∈

/_Y xw sum w =

(1)(1)(2)

(2)(2)(1)

rect rect Y rect rect Y =+=+

改变rect 中的参数,判断是否满足迭代条件,若不符合则按照上述步骤继续迭代 第十步:更新矩形区域中心位置,更新跟踪轨迹结果

[_;_(1)(3)/2]

[_;_(2)(4)/2]

tic x tic x rect rect tic y tic y rect rect =+=+

meanshift 的基本形式:

给定的d 维空间d

R 中的n 个样本点,1,2,3...,i x i n =,在x 点的meanshift 向量的基本形式定义为:

1

()()i k

h i x s M x x x k ∈=

-∑ 其中,k s 是一个半径为h 的高维球区域,满足以下关系的y 点的集合,

{}():()()^2T h s x y y x y x h =--≤,k 表示在这n 个样本点i x 中有k 个点落入k s 区域中。

meanshift 的核函数

X 为d 维的欧式空间,x 为空间中的一点属于X

^2,T x x x x R =∈

k 为剖面函数

()(^2)K x k x =

k 是非负的,k 是非增的,即如果a b <,那么()()k a k b ≥,k 是分段连续的,并且

()k r dr ∞

<∞?

核函数也叫窗口函数,在核估计中起到平滑的作用。常用的核函数有:Uniform ,Epannechnikov ,Gaussian 等。本文算法只用到了Epannechnikov ,它数序定义如下:

引入权重系数是因为所有的样本点i x 中重要性不一样

引入核函数是因为离x 越近的采样点对估计x 周围的统计性越有效,可以考虑距离的影响 扩展的meanshift 形式:

1

1

1/2

1/2()()()

()()()()(())

n

H

i i i i n

H

i i i H i i G

x x w x x x M x G

x x w x G x x H

G H x x ==----=

--=-∑∑

G (x )是一个单位核函数

H 是一个正定的对称dxd 矩阵(带宽矩阵) 目标模型描述:

假设其中有n 个像素用{},1,2,3...,i z i n =表示其位置,对选中的区域灰度颜色空间均匀划分,得到由m 个相等的区间构成的灰度直方图 目标模型的(

1,2,....,)u q u m =概率密度可表示为:

*1

*1

*0000(^2)[()]

1

(^2)

()^2()^2

(

)^0.5

^2^2

n

u i i i n

i

i i i i q C k z b z u C k z

x x y y z x y δ===-=

-+-=+∑∑

*i z 表示以目标中心为原点的归一化像素的位置

00(,)x y 为目标的中心坐标,k 是核函数()E K x 的截断函数,常选用Epanechikov 核函数。 ()i b z 表示i z 处像素属于哪个直方图区间,u 为直方图的颜色索引

[()]i b z u δ-函数的作用是判断目标区域中像素i z 处的灰度值是否属于直方图中第u 个单元,

等于为1 ,否则为0.C 是归一化系数。 Epannechnikov 核函数:

()(1^2),1

E K x C x x =-≤

()0,E K x =其他

x 的模:^2T x x x =(x 为欧式空间x 中的一个点,用一个列向量表示)

x 指在m 维空间中两个点之间的真实距离,或者向量的自然长

度候选模型描述:

在第t 帧时,第t-!帧的目标中心位置为0f ,以0f 为搜索窗口的中心得到候选目标的中心位置坐标 f,计算当前帧的候选目标区域直方图,该区域的像素用{},1,2,3...,i z i n =表示,则概率密度为:

1

()(

^2)[()]n

i

u i i f z P f C k b z u h

δ=-=-∑ h 为核函数窗口大小 相似性度量:

Bhattacharyya 系数作为相似性函数(对两个统计样本的重叠量的近似计算)

1

(,)m

u p q ρ==

计算巴氏系数涉及到对两个样本的重叠部分进行基本形式的积分。

Bhattacharyya 系数用来度量两个统计样本的重叠度。该系数可以用来度量两个样本集的可分性。

计算Bhattacharyya 系数包含了一个基本的关于两个样本集重合度的积分运算。两个样本集中的定义域被分成了事前定义的几份,这种划分可以体现在下面的定义中:

1

n

i Bhattacharyya ==

a ,

b 代表样本,n 代表划分的数目,

i

a ∑和i

b ∑分别代表两个样本集中在第i 个划分中的

样本之和。对于两个样本集来说,如果相同划分中的样本数越多,样本和越大,则该式的值越大。划分数的选择取决于每一个样本集中的样本数;太少的划分将因为过高估计了重叠区域而减小精度,而太多的划分将会因为在该本该有重叠的区域没有恰好重叠而减小精度(最精细的划分将会使每一个相同的区间中都没有重叠)。

迭代过程:

均值漂移的过程即为目标位置搜索的过程,将相似性函数进行泰勒展开使相似函数最大

111(,)(^2)

22[()]m n

i i u i m

i i u f z C p q w k h w b z u ρ===-≈=-∑

在第一个式子中只有第二部分随f 变化

其极大化过程就可以通过候选区域中心向真实区域中心的meanshift 迭代方程完成

1

11

'()(

^2)(^2)()()

n

k i

i k i i k k n

k i i

i f z w f z g h

f f f z w

g

h g x k x =+=--=+

-=-∑∑ meanshift 方法就是从k f 起向两个模型相比颜色变化最大的方向不断移动,直到最后两次移动距离小于阈值,即找到当前帧的目标位置并且以此作为下一帧的起始搜索窗口中心,如此

重复。

计算目标的新位置:

01101

(

^2)(^2)m

i

i i i m

i

i i y x x w g h

y y x w g h ==-=-∑∑

传统meanshift跟踪算法流程

传统meanshift 跟踪算法实现流程 一、 Meanshift 算法流程图 视频流 手动选定跟踪目标 提取目标灰度加权直方图特征hist1 提取候选目 标区域 提取候选目标的灰度加权直方图特征hist2 均值漂移得到均值漂移向量及新的候选区域位 置 是否满足迭代结束条件 第二帧之后图像 第一帧图像 得到当前帧目标位置 是 否 图1 meanshift 流程图 二、 各模块概述 1、 手动选定目标区域:手动框出目标区域,并把该区域提取出来作为目标模板 区域; 2、 提取目标灰度加权直方图特征hist1; 2.1构造距离权值矩阵m_wei ; 使用Epanechnikov 核函数构造距离加权直方图矩阵:设目标区域中像素

点(,)i j 到该区域中心的距离为dist ,则 _(,)1/m wei i j dist h =-,这里h 是核函数窗宽,h 为目标区域中离区域中心 最远的像素点到中心的距离:若所选目标区域为矩形区域,区域的半宽度为 x h ,半高度为y h ,则22()x y h sqrt h h =+; 2.2得到归一化系数C ; 1/C M =,其中M 是m_wei 中所有元素值之和; 2.3计算目标的加权直方图特征向量hist1; 若图像为彩色图像,则把图像的,,r g b 分量归一化到[0,15]之间(分量值与16取余,余数即为归化后的分量值),然后为不同的分量值赋予不同的权值得到每个像素点的特征值_q temp : _256*16*q t e m p r g b = ++ 对于像素点(,)i j ,设其特征值为_q temp ,则另 1(_1)1(_1)_(,)hist q temp hist q temp m wei i j +=++; 若图像是灰度图像,则直接利用每个像素的灰度值作为每个像素的特征值,然后统计得到hist1; 把一维数组hist1归一化:11*hist hist C =;归一化后的数组hist1即为目标的加权直方图特征向量; 3、 从第二帧开始的图像,通过迭代的方式找到该帧图像中目标的位置; 3.1提取候选目标区域:以上一帧图像中目标的位置或上一次迭代得到的目标位置为中心提取出目标模板区域大小的区域; 3.2提取候选目标区域的加权直方图特征向量hist2:提取方法同步骤2.3; 计算候选目标区域的特征值矩阵_1q temp : _1 (,)256*(,) 16*(,)q t e m p i j r i j g i j b i j =++; 3.3均值漂移到新的目标区域; 3.3.1计算候选目标区域相对于目标区域的均值漂移权值w : ( 1()/2()),2(2w s q r t h i s t i h i s t i h i s t =≠ 2() 0h i s t i =时,()0;w i = 3.3.2 根据每个像素点所占的均值漂移权值计算漂移矩阵xw : 11(_1(,)1)*[(1),(2)]a b i j xw xw w q temp i j i y j y ===++--∑∑ 3.3.2得到权值归一化后的均值漂移向量Y :

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 维空间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 点的集合,

基于meanshift的目标跟踪算法——完整版

基于Mean Shift的目标跟踪算法研究 指导教师:

摘要:该文把Itti视觉注意力模型融入到Mean Shift跟踪方法,提出了一种基于视觉显著图的Mean Shift跟踪方法。首先利用Itti视觉注意力模型,提取多种特征,得到显著图,在此基础上建立目标模型的直方图,然后运用Mean Shift方法进行跟踪。实验证明,该方法可适用于复杂背景目标的跟踪,跟踪结果稳定。 关键词:显著图目标跟踪Mean Shift Mean Shift Tracking Based on Saliency Map Abstract:In this paper, an improved Mean Shift tracking algorithm based on saliency map is proposed. Firstly, Itti visual attention model is used to extract multiple features, then to generate a saliency map,The histogram of the target based on the saliency map, can have a better description of objectives, and then use Mean Shift algorithm to tracking. Experimental results show that improved Mean Shift algorithm is able to be applied in complex background to tracking target and tracking results are stability. 1 引言 Mean Shift方法采用核概率密度来描述目标的特征,然后利用Mean Shift搜寻目标位置。这种方法具有很高的稳定行,能够适应目标的形状、大小的连续变化,而且计算速度很快,抗干扰能力强,能够保证系统的实时性和稳定性[1]。近年来在目标跟踪领域得到了广泛应用[2-3]。但是,核函数直方图对目标特征的描述比较弱,在目标周围存在与目标颜色分布相似的物体时,跟踪算法容易跟丢目标。目前对目标特征描述的改进只限于选择单一的特征,如文献[4]通过选择跟踪区域中表示目标主要特征的Harris点建立目标模型;文献[5]将初始帧的目标模型和前一帧的模型即两者的直方图分布都考虑进来,建立混合模型;文献[6]提出了以代表图像的梯度方向信息的方向直方图为目标模型;文献[7-8]提出二阶直方图,是对颜色直方图一种改进,是以颜色直方图为基础,颜色直方图只包含了颜色分布信息,二阶直方图在包含颜色信息的前提下包含了像素的均值向量和协方差。文献[9]提出目标中心加权距离,为离目标中心近的点赋予较大的权值,离目标中心远的点赋予较小的权值。文献[4-9]都是关注于目标和目标的某一种特征。但是使用单一特征的目标模型不能适应光线及背景的变化,而且当有遮挡和相似物体靠近时,容易丢失目标;若只是考虑改进目标模型,不考虑减弱背景的干扰,得到的效果毕竟是有限的。 针对上述问题,文本结合Itti 提出的视觉注意模型[5],将自底向上的视觉注意机制引入到Mean Shift跟踪中,提出了基于视觉显著图的Mean Shift跟踪方法。此方法在显著图基础上建立目标模型,由此得到的目标模型是用多种特征来描述的,同时可以降低背景对目标的干扰。 2 基于视觉显著图的Mean Shift跟踪方法

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的重要文献才发表.在这篇重要的文献中,Yizong Cheng对基本的Mean Shift算法在以下两个方面做了推广,首先Yizong Cheng定义了一族核函数,使得随着样本与被偏移点的距离不同,其偏移量对均值偏移向量的贡献也不同,其次Yizong Cheng还设定了一个权重系数,使得不同的样本点重要性不一样,这大大扩大了Mean Shift的适用范围.另外Yizong Cheng 指出了Mean Shift可能应用的领域,并给出了具体的例子. Comaniciu等人把Mean Shift成功的运用的特征空间的分析,在图

像平滑和图像分割中Mean Shift 都得到了很好的应用. Comaniciu 等在文章中证明了,Mean Shift 算法在满足一定条件下,一定可以收敛到最近的一个概率密度函数的稳态点,因此Mean Shift 算法可以用来检测概率密度函数中存在的模态. Comaniciu 等人还把非刚体的跟踪问题近似为一个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 区域中.

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 算法一定会收敛到该点附近的峰值,这一收敛性由下面一小节给出证明。 4.3 传统的 Mean Shift 跟踪算法 Mean Shift 算法可以通过自动或半自动的方式来初始化被跟踪的目标。半自动是指在初始帧,手动选定感兴趣的目标区域;自动方式是通过目标检测方法得到待跟踪的目标区域。目标区域就是核函数的作用区域,其大小即为核函数的带宽(又名“尺度”)。本文研究的是彩色视频,采用Mean Shift 算法跟踪目标时,目标特征通常选用目标的颜色特征。实时处理需要满足低计算量的要求,可以将图像在某种颜色空间下的每个子空间划分为k 个相等的区间,即k 个bin 。以RGB 空间为例,特征空间中总的bin 数应该是m=k3。然后计算出图像的颜色

经典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无参数密度估计 目标检测与跟踪过程中,必须用到一定的手段对检测与跟踪的方法进行优化,将目标的表象信息映射到一个特征空间,其中的特征值就是特征空间的随机变量。假定特征值服从已知函数类型的概率密度函数,由目标区域内的数据估计密度函数的参数,通过估计的参数得到整个特征空间的概率密度分布。参数密度估计通过这个方法得到视觉处理中的某些参数,但要求特征空间服从已知的概率

MeanShift-图像分割方法

摘要 在图像处理和计算机视觉里,图像分割是一个十分基础而且很重要的部分,决定了最终分析结果的好坏。图像分割问题的典型定义就是如何在图像处理过程中将图像中的一致性区域和感兴趣对象提取出来。 MeanShift 图像分割方法是一种统计迭代的核密度估计方法。MeanShift算法以其简单有效而被广泛应用,但该方法在多特征组合方面和数据量较大的图像处理上仍存在不足之处,本文针对这些问题对该算法的结构进行了优化。本文利用图像上下文信息对图像进行了区域合并以此来对输入数据进行了压缩;并实现特征空间中所有特征量的优化组合。 最后,总结了本文的研究成果。下一步需要深入的研究工作有:(1)考虑分割的多尺度性,实现基于Mean Shift算法的多尺度遥感图像分割;(2)考虑利用Gabor滤波器来提取纹理特征,或将更多的特征如形状等特征用于MeanShift遥感图像分割中。 关键词: Mean Shift, 图像分割, 遥感图像, 带宽

ABSTRACT mage segmentation is very essential and critical to image processing and computer vision, which is one of the most difficult tasks in image processing, and determines the quality of the final result of analysis. In image segmentation problem, the typical goal is to extract continuous regions and interest objects in the case of image processing. The Mean Shift algorithm for segmentation is a statistical iterative algorithm based on kernel density estimation. Mean Shift algorithm has been widely applied for its simplicity and efficiency. But the algorithm has some deficiencies in feature combination and image processing for large data. According to the deficiencies of the Mean Shift algorithm, this paper optimizes the structure of the algorithm for segmentation. Firstly, this paper introduces a method of data compressing by merging the nearest points with similar properties into consistency regions. Secondly, We optimize the combination of features. At last, after concluding all research work in this paper, further work need to be in-depth studied: (1) Consider multi-scale factors of remote sensing, and realize multi-scale remote sensing image segmentation based on Mean Shift algorithm. (2) Consider extracting textures features by using Gabor filter, or use more features such as shape features to segment remote sensing images based on Mean Shift algorithm. KEY WORDS: Mean Shift, image segmentation, remote sensing images, bandwidth,

meanshift 聚类

MeanShift聚类 分类:计算机视觉2012-03-23 14:021423人阅读评论(0)收藏举报算法优化存储c Mean shift主要用在图像平滑和图像分割(那个跟踪我现在还不清楚),先介绍一下平滑的原理: 输入是一个5维的空间,2维的(x,y)地理坐标,3维的(L,u,v)的颜色空间坐标,当然你原理也可以改写成rgb色彩空间或者是纹理特征空间。 先介绍一下核函数,有uniform的,也有高斯的核函数,不管是哪个的,其基本思想如下:简单的平滑算法用一个模板平均一下,对所有的像素,利用周围的像素平均一下就完事了,这个mean shift的是基于概率密度分布来的,而且是一种无参的取样。有参的取样就是假设所有的样本服从一个有参数的概率分布函数,比如说泊松分布,正态分布等等,高中生都知道概率公式里面是有参数的,在说一下特征空间是一个5维的空间,距离用欧几里德空间就可以了,至少代码里就是这样实现的,而本文的无参取样是这样的:在特征空间里有3维的窗口(想象一下2维空间的窗口),对于一个特征空间的点,对应一个5维的向量,可以计算该点的一个密度函数,如果是有参的直接带入该点的坐标就可以求出概率密度了,基于窗函数的思想就是考虑它邻近窗口里的点对它的贡献,它假设密度会往密集一点的地方转移,算出移动之后的一个5维坐标,该坐标并会稳定,迭代了几次之后,稳定的地方是modes。这样每一个像素点都对应一个这么一个modes,用该点的后3维的值就是平滑的结果了,当然在算每个点的时候,有些地方可能重复计算了,有兴趣的化你可以参考一下源代码,确实是可以优化的。总结一下mean shift的平滑原理就是在特征空间中向密度更高的地方shift(转移)。 其次是怎么利用mean shift分割图像.先对图像进行平滑,第2步利用平滑结果建立区域邻接矩阵或者区域邻接链表,就是在特征空间比较近的二间在2维的图像平面也比较接近的像素算成一个区域,这样就对应一个区域的邻接链表,记录每个像素点的label值。当然代码中有一个传递凸胞的计算,合并2个表面张力很接近的相邻区域,这个我还没想怎么明白,希望比较清楚的朋友讲一讲。最后还有一个合并面积较小的区域的操作,一个区域不是对应一个modes值嘛,在待合并的较小的那个区域中,寻找所有的邻接区域,找到距离最小的那个区域,合并到那个区域就ok了。 Mean-Shift分割原理 Mean-Shift是一种非参数化的多模型分割方法,它的基本计算模块采用的是传统的模式识别程序,即通过分析图像的特征空间和聚类的方法来达到分割的目的。它是通过直接估计特征空间概率密度函数的局部极大值来获得未知类别的密度模式,并确定这个模式的位置,然后使之聚类到和这个模式有关的类别当中。下面对Mean-Shift算法进行简介。 设S是n维空间X中的一个有限集合,K表示X空间中λ球体的一个特征函数,则其表达式为:

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 ) 但是当它用于跟踪时,这张输入的图像就必须是反向投影图了。 为什么必须是反向投影图呢?首先我们要理解什么是反向投影图。 简单理解它其实实际上是一张概率密度图。经过反向投影时的输入是一个目标图像的直方图(也可以认为是目标图像),还一个输入是当前图像就是你要跟踪的全图,输出大小与全图一样大,它上像素点表征着一种概率,就是全图上这个点是目标图像一部分的概率。如果这个点越亮,就说明这个点属于物体的概率越大。现在我们明白了这原来是一张概率图了。当用meanshift跟踪时,输入的原来是这样一幅图像,那也不难怪它可以进行跟踪了。 半自动跟踪思路:输入视频,用画笔圈出要跟踪的目标,然后对物体跟踪。用过opencv的都知道,这其实是camshiftdemo的工作过程。 第一步:选中物体,记录你输入的方框和物体。 第二步:求出视频中有关物体的反向投影图。

聚类算法Kmeans与梯度算法Meanshift

Kmeans与Meanshift、EM算法的关系 Kmeans算法是一种经典的聚类算法,在模式识别中得到了广泛的应用,基于Kmeans的变种算法也有很多,模糊Kmeans、分层Kmeans等。 Kmeans和应用于混合高斯模型的受限EM算法是一致的。高斯混合模型广泛用于数据挖掘、模式识别、机器学习、统计分析。Kmeans的迭代步骤可以看成E步和M步,E:固定参数类别中心向量重新标记样本,M:固定标记样本调整类别中心向量。K均值只考虑(估计)了均值,而没有估计类别的方差,所以聚类的结构比较适合于特征协方差相等的类别。 Kmeans在某种程度也可以看成Meanshitf的特殊版本,Meanshift是一种概率密度梯度估计方法(优点:无需求解出具体的概率密度,直接求解概率密度梯度。),所以Meanshift可以用于寻找数据的多个模态(类别),利用的是梯度上升法。在06年的一篇CVPR文章上,证明了Meanshift方法是牛顿拉夫逊算法的变种。Kmeans和EM算法相似是指混合密度的形式已知(参数形式已知)情况下,利用迭代方法,在参数空间中搜索解。而Kmeans和Meanshift相似是指都是一种概率密度梯度估计的方法,不过是Kmean 选用的是特殊的核函数(uniform kernel),而与混合概率密度形式是否已知无关,是一种梯度求解方式。PS:两种Kmeans的计算方法是不同的。 Vector quantization也称矢量量化:指一个向量用一个符号K来代替。比如有10000个数据,用Kmeans 聚成100类即最有表征数据意义的向量,使得数据得到了压缩,以后加入的数据都是用数据的类别来表示存储,节约了空间,这是有损数据压缩。数据压缩是数据聚类的一个重要应用,也是数据挖掘的主要方法。 混合高斯模型是一系列不同的高斯模型分量的线性组合。在最大似然函数求极值时,直接求导存在奇异点的问题,即有时一个分量只有一个样本点,无法估计其协方差,导致其似然函数趋于无穷,无法求解。另一个问题是,用代数法求得的解是不闭合的,即求解的参数依赖于参数本身的值,变成一个鸡生蛋,蛋生鸡的问题。这些问题看似无解,但是可以使用迭代的方法如EM,k均值等,预先设置一些参数,然后迭代求解。PS:也有用基于梯度的方法求解的。在求解混合模型时,有一个重要的概念即模型的可辨识性(如果无论样本的数量为多少都无法求出模型参数的唯一解,则称模型是不可辨识的),这是EM算法的前提。在实际应用时,由于EM算法的复杂度比K均值高,所以一般先用K均值大致收敛到一些点,然后用EM算法。EM算法求解混合模型的固然有效,但不能保证找到最大使然函数的最大值。 EM算法是求解具有隐变量的概率模型的最大似然函数的解的常用方法。当样本集是样本与隐变量一一对应时,数据集称为完整数据集,可以直接求解模型参数,但很多时候只知道样本,不知道其对应的隐变量,这是非完整数据集。所以求解模型参数的关键是隐变量的后验概率,由后验概率可以推出完整数据集用于求解参数。增量式的EM算法,每次只更新一个点,收敛速度更快。上述方法可以看成是无监督学习。 PS:EM是一个似然函数下界最大化解法,保证了解法的收敛性。 Opencv之KMEANS篇 Opencv中的K-means适用于数据预处理,但图像分割的消耗的时间太长并且效果不怎么好,使用空间信息后,图像的分割后受空间的影响很大(同一类的数据如果分布较远,不是高斯型的,就会错分),

Matlab实例之MeanShift的跟踪算法程序

MeanShiftCluster.m %testDistCluters clear clc profile on nPtsPerClust = 250; nClust = 3; totalNumPts = nPtsPerClust*nClust; m(:,1) = [1 1]'; m(:,2) = [-1 -1]'; m(:,3) = [1 -1]'; var = .6; bandwidth = .75; clustMed = []; %clustCent; x = var*randn(2,nPtsPerClust*nClust); %*** build the point set for i = 1:nClust x(:,1+(i-1)*nPtsPerClust:(i)*nPtsPerClust) = x(:,1+(i- 1)*nPtsPerClust:(i)*nPtsPerClust) + repmat(m(:,i),1,nPtsPerClust); end tic [clustCent,point2cluster,clustMembsCell] = MeanShiftCluster(x,bandwidth); toc

numClust = length(clustMembsCell); figure(10),clf,hold on cVec = 'bgrcmykbgrcmykbgrcmykbgrcmyk';%, cVec = [cVec cVec]; for k = 1:min(numClust,length(cVec)) myMembers = clustMembsCell{k}; myClustCen = clustCent(:,k); plot(x(1,myMembers),x(2,myMembers),[cVec(k) '.']) plot(myClustCen(1),myClustCen(2),'o','MarkerEdgeColor','k','MarkerFaceColor',cVec(k ), 'MarkerSize',10) end title(['no shifting, numClust:' int2str(numClust)]) testMeanShift.m %testDistCluters clear clc profile on nPtsPerClust = 250; nClust = 3; totalNumPts = nPtsPerClust*nClust; m(:,1) = [1 1]'; m(:,2) = [-1 -1]'; m(:,3) = [1 -1]'; var = .6; bandwidth = .75;

meanshift公式

meanshift 公式 第一步:rect (含有四个参数:矩形框的左上点坐标,矩形框的宽和高) 矩形框的中心坐标: _(1)(3)/2 _(2)(4)/2 tic x rect rect tic y rect rect =+=+ 第二步:矩形框的高为a ,宽为b (a 为行数,b 为列数) (1)/2 (2)/2 y a y b == 带宽 (1)^2(2)^2(/2)^2(/2)^2h y y a b =+=+ 计算矩形区域每一点的权重矩阵(模板帧) 111212122 21211...111...1_............11...1b b a a ab a a a a a a m wei a a a ------= --- m_wei 是一个axb 的矩阵其中 11(1/2)^2(1/2)^2 11(/2)^2(/2)^2 a b a a b -+--=- + 即 (/2)^2(/2)^2 11(/2)^2(/2)^2 ij i a j b a a b -+--=- + ((1,),(1,))i a j b ∈∈ 归一化系数C 为矩阵m_wei 中每个元素相加的和的倒数 11 1 (/2)^2(/2)^21(/2)^2(/2)^2a b i j C i a j b a b === -+--+∑∑ 第三步:rgb 颜色空间量化为16x16x16bins 矩形框区域内每个像素点中的RGB 分量为q_R,q_B,q_G ____*256*16161616 q R q G q B q temp = ++ 求出的q_temp 用来作为的是hist1矩阵的列向量下标形式为 1(_1)1q temp hist + 第四步:计算权重矩阵 111213141516140961......hist h h h h h h h =

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

基于MeanShift的目标跟踪算法及实现 这次将介绍基于MeanShift的目标跟踪算法,首先谈谈简介,然后给出算法实现流程,最后实现了一个单目标跟踪的MeanShift算法【matlab/c两个版本】 csdn贴公式比较烦,原谅我直接截图了… 一、简介 首先扯扯无参密度估计理论,无参密度估计也叫做非参数估计,属于数理统计的一个分支,和参数密度估计共同构成了概率密度估计方法。参数密度估计方法要求特征空间服从一个已知的概率密度函数,在实际的应用中这个条件很难达到。而无参数密度估计方法对先验知识要求最少,完全依靠训练数据进行估计,并且可以用于任意形状的密度估计。所以依靠无参密度估计方法,即不事先规定概率密度函数的结构形式,在某一连续点处的密度函数值可由该点邻域中的若干样本点估计得出。常用的无参密度估计方法有:直方图法、最近邻域法和核密度估计法。 MeanShift算法正是属于核密度估计法,它不需要任何先验知识而完全依靠特征空间中样本点的计算其密度函数值。对于一组采样数据,直方图法通常把数据的值域分成若干相等的区间,数据按区间分成若干组,每组数据的个数与

总参数个数的比率就是每个单元的概率值;核密度估计法的原理相似于直方图法,只是多了一个用于平滑数据的核函数。采用核函数估计法,在采样充分的情况下,能够渐进地收敛于任意的密度函数,即可以对服从任何分布的数据进行密度估计。 然后谈谈MeanShift的基本思想及物理含义:此外,从公式1中可以看到,只要是落入Sh的采样点,无论其离中心x的远近,对最终的Mh(x)计算的贡献是一样的。然而在现实跟踪过程中,当跟踪目标出现遮挡等影响时,由于外层的像素值容易受遮挡或背景的影响,所以目标模型中心附近的像素比靠外的像素更可靠。因此,对于所有采样点,每个样本点的重要性应该是不同的,离中心点越远,其权值应该越小。故引入核函数和权重系数来提高跟踪算法的鲁棒性并增加搜索跟踪能力。 接下来,谈谈核函数: 核函数也叫窗口函数,在核估计中起到平滑的作用。常用的核函数有:Uniform,Epannechnikov,Gaussian等。本文算法只用到了Epannechnikov,它数序定义如下: 二、基于MeanShift的目标跟踪算法

edison_meanshift 结构

转】 Mean Shift 2010-10-11 17:34 转载自 aspireal 最终编辑 zzf378139208 Edge Detection and Image SegmentatiON (EDISON) System 一、概述 MeanShift并不算一种很新的特征空间分析算法,但是它原理简单,计算速度较快,通常能在一次分割后形成大量小的模态区域。这样便直接将问题分析层次从像素域提升到特征域,对后续处理有很大的好处。CVPR07不少新颖的分析算法(比如多目标分割)都是以mean shift为基础的。因此,它仍然有很大的研究价值。 Rutgers的RIUL实验室将mean shift和synergistic分割算法以C++实现,并将派生的边缘检测方法集成到EDISON分析平台中,以自由软件的形式发放。本日志不讨论meanshift原理和性能,而是分析EDISON控制台程序中mean shift 分割算法的实现过程和技巧。 EDISON控制台程序模块: 1. 脚本解释器(parser.h/parser.cpp/globalfnc.cpp) 由于程序参数是以脚本文件提供的,所以需要进行词法、语法分析。这不是算法的重点,这里不讨论其实现方法。调用函数为 CheckSyntax() 脚本文件语法分析,查找是否有错误语法 Run() 脚本执行 2. 算法控制平台(edison.h/edison.cpp) 控制输入输出、所有参数设置及算法执行,一般由globalfnc.cpp中EXECUTE()函数调用 3. mean shift算法(ms.h/ms.cpp/msImageProcessor.cpp) 算法核心,ms.h/ms.cpp定义了MeanShift基类,使用lattice迭代计算实现。msImageProcessor派生至MeanShift,实现了区域合并、剔除、边界查找等应用。 分割过程: 1.LoadImage 获取height, width, 数据指针pImg, 数据通道数(彩色为3,灰度为1)。 EDISON原系统仅支持PPM,PGM,PBM三种图像格式,需注意,edison 不支持photoshop输出的PPM图像(ps将height width作为两行参数写入文件头;而edison默认为一行,并以空格隔开,所以需要略为修改)。我们可以很容易添加对DIB和JPG等格式的支持。 2.指定meanshift参数: (1)spatial Bandwidth (float) 空间窗

基于MeanShift算法的目标跟踪解析

基于MeanShift算法的目标跟踪 1 算法描述 1.1 meanshift算法背景 meanShift这个概念最早是由Fukunage在1975年提出的,Fukunage等人在一篇关于概率密度梯度函数的估计中提出这一概念。其最初的含义正如其名:偏移的均值向量;但随着理论的发展,meanShift的含义已经发生了很多变化。如今,我们说的meanShift算法,一般是指一个迭代的步骤,即先算出当前点的偏移均值,然后以此为新的起始点,继续移动,直到满足一定的结束条件。 在很长一段时间内,meanShift算法都没有得到足够的重视,直到1995年另一篇重要论文的发表。该论文的作者Yizong Cheng定义了一族核函数,使得随着样本与被偏移点的距离不同,其偏移量对均值偏移向量的贡献也不同。其次,他还设定了一个权重系数,使得不同样本点的重要性不一样,这大大扩展了meanShift的应用范围。此外,还有研究人员将非刚体的跟踪问题近似为一个meanShift的最优化问题,使得跟踪可以实时进行。目前,利用meanShift进行跟踪已经相当成熟。 1.2 meanshift算法原理 Meanshift可以应用在很多领域,比如聚类,图像平滑,图像分割,还在目标跟踪领域有重要的应用。Meanshift跟踪算法是通过计算候选目标与目标模板之间相似度的概率密度分布,然后利用概率密度梯度下降的方向来获取匹配搜索的最佳路径,加速运动目标的定位和降低搜索的时间,因此其在目标实时跟踪领域有着很高的应用价值。 该算法由于采用了统计特征,因此对噪声具有很好的鲁棒性;由于是一个蛋参数算法,容易作为一个模块和其他算法集成;采用核函数直方图建模,对边缘阻挡、目标的旋转、变形以及背景运动都不敏感;同时该算法构造了一个可以用meanshift算法进行寻优的相似度函数。Meanshift本质上是最陡下降法,因此其求解过程收敛速度快,使得该算法具有很好的实用性。 Meanshift算法的思想是利用概率密度的梯度爬升来寻找局部最优。它要做的就是输入一个在图像的范围,然后一直朝着重心迭代,直到满足你的要求或者达到迭代最大次数结束。在opencv中,进行meanshift其实很简单,输入一张图像(imgProb),再输入一个开始迭代的方框(windowIn)和一个迭代条件(criteria),输出的是迭代完成的位置(comp )。这是函数原型: int cvMeanShift( const void* imgProb, CvRect windowIn, CvTermCriteria criteria, CvConnectedComp* comp ) 参数介绍: imgProb:目标直方图的反向投影 windowIn:初试的搜索框 Criteria:确定搜索窗口的终止条件 Comp:生成的结构,包含收敛的搜索窗口坐标(comp->rect 字段) 与窗口内部所有像素的和(comp->area 字段)

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进行跟踪已经相当成熟。 目标跟踪不是一个新的问题,目前在计算机视觉领域内有不少人在研究。所谓跟踪,就是通过已知的图像帧中的目标位置找到目标在下一帧中的位置。 下面主要以代码形式展现Mean Shift在跟踪中的应用。 void CObjectTracker::ObjeckTrackerHandlerByUser(IplImage *frame)//跟踪函数{ m_cActiveObject = 0; if (m_sTrackingObjectTable[m_cActiveObject].Status) { if (!m_sTrackingObjectTable[m_cActiveObject].assignedAnObject) { FindHistogram(frame,m_sTrackingObjectTable[m_cActiveObject].initHistogram); m_sTrackingObjectTable[m_cActiveObject].assignedAnObject = true;

相关文档
相关文档 最新文档