mean shift 跟踪算法

来源:互联网 发布:美国航空航天数据库 编辑:程序博客网 时间:2024/05/22 05:09

说明一:

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的核直方图 定义,形式化描述为:

meanshift1.jpg 


其中,δ是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 的相似性 描述如下:

meanshift2.jpg 

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

(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)采用一定的方式对整体模板进行学习和更新。



0 0