Meanshift-视频跟踪技术上的应用详解

看了网上的一些介绍,很多都是没有详细的去解释反向投影图的概念,这里我重点记录下这个概念,防止以后用到的时候忘记了

 

首先记录几个关键的名词

颜色直方图

定义:它所描述的是不同色彩在整幅图像中所占的比例。而并不关心每种色彩所处的空间位置即无法描述图像中的对象或物体。直方图只包含了该图像中某一颜色值出现的频数,而丢失了某象素所在的空间位置信息,但不同的图像可能有相同的颜色分布,从而就具有相同的直方图,因此直方图与图像是一对多的关系,如将图像划分为若干个子区域,所有子区域的直方图之和等于全图直方图。一般情况下,由于图像上的背景和前景物体颜色分布明显不同,从而在直方图上会出现双峰特性,但背景和前景颜色较为接近的图像不具有这个特性

 

 

HSV颜色空间

定义:这个模型中颜色的参数分别是:色调(H),饱和度(S),明度(V

色调(H):用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°

饱和度(S):饱和度高,颜色则深而艳.

明度(V): 明度表示颜色明亮的程度.

Meanshift算法原理:

我们对跟踪目标进行描述,这个描述的意思是:将一开始检测的区域转换为颜色HSV空间,然后得到H(色调)的这个通道的分布直方图,即表示不同颜色出现的频数。我们对下一帧图像中固定一个为跟踪目标区域box同样大小的矩阵,现在我们对这个矩阵中的所有像素点进行分析:在box区域内,我们将box划分为很多个小矩形,每个矩阵的H(色调)的幅值代表该小矩形的颜色分布,我们对一开始检测区域的box内用这些boxsize/n的小矩阵同样的分析,即取该小区域的颜色幅值代表该区域的颜色分布,然后用下列公式:

Meanshift-视频跟踪技术上的应用详解
由各点像素计算得到的相似概率后映射得到的BPI灰度值

通过上述公式,我们将BPIc)就代替该小矩形的直方图幅值,这样就得到了一副反映目标出现的概率灰度图像。

图是相似度ekesito(c)的相似概率图经过灰度图映射转换为的灰度值,我们就称之为反向投影图

 

Meanshift-视频跟踪技术上的应用详解

 

 

Meanshift-视频跟踪技术上的应用详解

我在这里一开始一直陷入了思考:颜色直方图如何转化为概率直方图的?

请看下图:

Meanshift-视频跟踪技术上的应用详解
由颜色直方图到概率相似度矩阵

 

原图中的每个像素点都是经过由RGB转为为HSV的格式的H通道,那么每个像素点的色调(H)饱和度还有很多0-360°的可能性的颜色。所以取颜色直方图中幅度最大的值代表该像素的颜色。具体见上图。

现在我们就得到了一个灰度图图像:

 

Meanshift-视频跟踪技术上的应用详解

那么上述我解释的和mean-shift有何关联?

首先介绍meanshift算法思想,在视频跟踪技术上的应用

原理:在一堆数据中找到密度极值点。以二维的来说明,meanshift在一堆样本特征点中,任意找一个为圆心,以半径R画一个圆(在opencv中是一个矩形),然后落在这个圆中的所有点和圆心都会对应的一个向量,把所有这些向量相加(注意是向量相加),最终我们只得到一个向量。然后再以这个meanshift向量的终点为圆心,继续上述过程,又可以得到一个meanshift向量。 然后不断地继续这样的过程,我们可以得到很多连续的meanshift向量,这些向量首尾相连,最终得到会在一个地方停下来(即我们说的meanshift算法会收敛),这个地方就是密集的区域,并且亮度大的区域。最后的那个meanshift向量的终点就是最终得到的结果(一个点)。我们找到了这个点后在用原来给目标区域画框box的大小来以这个新的点为中心的同样的大小的框。

再次详解:在生成的灰度图像矩阵中,我们利用meanshift寻找最亮的质点,因为meanshift最后会落在密集高亮的区域里的某一点,可能有人疑问,生成了灰度图后不就行了吗?

这里解释下,从直观的角度来看是可以,但是你需要有个box框的大小来框住目标,你怎么知道这个box框的中心在哪里呢?难道你是以高亮的轮廓为边界来框柱目标吗?我觉得这就是检测了,而不是跟踪,因为你要这么想的话就不会得到meanshift质点的移动轨迹,而得到的只是一个检测结果,作者这里是以质心的概念去确定box框的中心的。

其实我是按上述想法来说服自己的,可是又想了下,如果按我那么想的话:以高亮的轮廓为边界来框柱目标。会有怎样的结果?

我接着说:

上述我们可以提出疑问,也就是最后一句话:同样大小的框给目标区域,万一跟踪的人脸有尺度变化呢?

所以就有了Camshift算法了,这篇paper是继Meanshift(2000cvpr)后的一片WACV(2002)发表的一个paper,CamShift提出的缘由是因为MeanShift由于在目标跟踪过程中在每一帧得到的目标box大小一直不变,对目标的尺度变化不具有鲁棒性,所以由此应运而生,Canshift可以产生自适应大小的目标box。