现在的位置: 首页 > 综合 > 正文

Mean Shift 目标跟踪算法(一)

2018年04月13日 ⁄ 综合 ⁄ 共 2332字 ⁄ 字号 评论关闭

          可能很多同道跟我一样,以前也鼓捣过单片机,焊过板子。由于以后学习方向的改变,让我不得不找一个较感兴趣的课题,快速地入门图像处理、机器视觉中来。我的第一个课题是目标跟踪,使用的经典算法Mean Shift。

       目前的目标跟踪算法的研究多趋向于分类器的方法,即把视频中对运动目标的跟踪过程看做是目标和非目标二分类的过程。分类器的方法大致可以描述为:对目标和非目标的特征分别采样,作为分类器输入的正负样本,不断地训练分类器使之分类准确。Mean shift算法是传统的目标建模的方法,即对欲跟踪目标进行建模,然后通过匹配的方式寻找到下一帧中目标的位置。但它又与传统的盲搜不同,它利用相邻帧之间目标位置变化不大的特点,采用迭代逼近的方式提高算法的搜索速度。在对欲跟踪目标建模时,Mean
Shift算法采用基于颜色特征的核密度估计的方式进行建模,使得跟踪过程中对目标旋转,小范围遮挡不敏感。

       一、Mean Shift 实现跟踪的基本思想

       当目标运动速度不是很快的时候,相邻帧之间目标与目标的位置会有重叠。如下图,是一组视频中的某些帧(貌似帧的序号写的不对,大家见谅!)。红色框是Mean Shift的跟踪结果。Mean Shift 算法就是已知上一帧跟踪框的位置要得到下一个跟踪框的位置。


      Mean shift算法是怎么找到下一帧中目标的位置的呢?下面先通过一组图介绍原理。

      如图,有一个样本集合,它中间的样本分布疏密不一,我们的目的是找到密度最大的位置。Mean Shift 的做法是在这个样本集合中画一个圆(方框什么的都可以),然后把中心点与样本点之间的矢量相加得到一个Mean Shift向量,蓝色圆中的样本点同样疏密不一,分布越密的样本点对Mean shift向量的指向影响越大。



      我们让蓝色框不断地按照Mean Shift矢量移动,同时不断的计算新的Mean Shift 向量,最终蓝色框会大致收敛于我们的目的地,整个样本集合最密的位置。


      

       读者回到上面拍摄的视频中的一些帧(没有例出相邻帧,因为差异太小),Mean Shift在目标跟踪中的应用就是把这里所说的寻找密度最大的位置的过程看作是跟踪框寻找欲跟踪目标的真实位置的过程。只不过目标跟踪中找的不是密度最大,找的是与建立的目标模型最相似,就是说我们在新的一帧中放置跟踪框(从原位置的邻域开始放置)然后根据相似度得到Mean shift向量,找到迭代方向,使得跟踪框最终收敛于目标的真实位置。这就是Mean Shift的基本跟踪思想了。大约相邻两帧之间跟踪框迭代次数为3~4次,耗时非常之短。

      二、颜色特征建模与核密度估计

        2.1 彩色直方图建模

       颜色特征对目标进行建模的具有很多优点,因为它对目标图像本身的尺寸、方向、视角的依赖性较小,在监控网络中摄像头视角变化的情况下可以保证算法的实时性。缺点是容易受到环境的影响。颜色特征对于锁定目标来说是很重要的一点,尽管现在研究的特征种类繁多,对比一段彩色视频和一段黑白视频,让比如今的计算机鲁棒性强很多倍的人脑来判断,彩色视频视频找到目标的速度肯定要比黑白的快很多。

        Mean Shift 最初的方式是采用的颜色直方图的建模方式,有基于RGB模型和基于HSV模型两种方式。基于RGB模型的彩色直方图反映的是图像中每一种(R,G,B)组合出现的次数,因为有R、G、B三种色彩,所以这样的彩色直方图是三维的,彩色直方图的横坐标被分成了256份,所以一共有256*256*256种色彩。实际操作中为了减小计算量,把256个小区间划分为16个大的区间(划分的bin越多越精确),然后用一个特征值代替三维的特征向量(d=256*R+16*G+B),将三维的彩色直方图降维成一维的直方图(另外一种降维的方法是将RGB模型转换为HSV模型,只使用其中的H分量,即色调分量)。


        2.2核密度估计

         Mean Shift算法采用核密度估计对目标进行建模旨在使得对多峰的彩色直方图建模也能取得较好的建模效果。所谓密度估计就是用某一平滑的曲线去模拟一组数据的分布状况。


       大家可能有的不明白密度估计的作用,我在这里大概说一下:假设在跟踪视频中目标突然戴了一顶白色帽子,这顶帽子我们姑且把它叫做随机干扰,如果单纯用直方图去比较,白色像素增多了,无疑未戴帽子的目标和戴了帽子的目标的直方图相似度变得非常小了,而事实上它们还是相似的,只是某个区间的像素增多了,某个区间的像素减少了,大体的数据分布没有变,所以我们不能直接比较直方图,应该比较样本集合的概率密度估计,如果我们只对比上图得到的曲线的话,目标的一顶小白帽子对跟踪影响不大,这就是密度估计的作用。我这里只是举个例子,只是为了大家理解,事实上随机干扰主要来自数据采集的时候的噪声,密度估计可以使得数据分布更平滑。

        2.3有参和无参

       核密度估计是属于无参密度估计的方法。何谓有参密度估计呢?假定已经知道特征空间中的特征值服从已知函数类的概率密度函数,由目标区域内的数据估计密度函数的参数,然后通过估计计算参数从而得到整个特征空间的概率密度分布函数,即参数密度估计的方法(Parametric Density Estimation)。举个例子:

        核密度估计的方法可以通过改变其带宽来估计多峰的数据分布,而且它不需要像参数密度估计那样需要事先知道数据近似的分布函数,很明显对目标建立的模型往往是未知的分布模型。如下图,不同带宽的核函数可以得到不同的数据分布估计(这里采用的是高斯核函数,MATLAB结果)。


好方法源自理论分析,下一篇将会直接从代码入手说明Mean Shift的实现原理。



抱歉!评论已关闭.