meanshift 的跟踪原理解析

写在开头:

             研究了一下午的meanshift 原理,终于弄得有点头绪了。望参考,如有不对之处,请留言,谢谢!!

meanshift 是什么玩意, 它能干啥就不在这里废话了。

                                                              meanshift 的跟踪原理解析_第1张图片

这张图熟悉的不能再熟悉的了,作为一下,喜欢用自己代码实现一些算法的大笨狗,我需要知道,

    (1)这些点(小黑点)是怎么计算得到的?

    (2)他们的计算过程是怎么实现的?

对于第二个问题,我想好多人都已经解释的很明白了,这里不再说了。

针对第一个问题,我查了好多资料,学到了一点自己的见解:

     a. 针对meanshift 的计算过程, 有人脸box(就是需要跟踪的区域),还有就是原图(就是输入图像,这个图像中包含了人脸)

     刚开始box标记在人脸上(第一帧,完全正确!),接下来的一帧 --- 新的一帧中(人脸移动了,但是box还在原处),现在就要移动box跟踪人脸,

    也就是在新的一帧中找人脸(如果直接检测就完全不需要跟踪啦。跟踪的目的就是减少检测的次数,因为检测太费劲!)

     那么就需要找出这一帧(新的一帧)中哪个区域与人脸(第一帧的box)比较相似了!!!

至此有了一个大的概念,在新的一帧中差找与人脸最相似的区域,并将box移动过去。

   又会有两个问题:

      (1)相似不相似怎么计算?

      (2)相似不相似怎么表现呢?

   对于第一个问题:

      有个叫什么皮尔逊相关性计算的公式,这里就不在细说。大概的意思是这样的,判断两个图像的相似性,可以通过计算两个图像直方图分布来计算。

   meanshift 的跟踪原理解析_第2张图片

 计算box图像与图像块1的相关性,可以得到一个[0,1]之间的数。meanshift 的跟踪原理解析_第3张图片

这样得到一个相关性图(概率图),每一个像素的值都是[0,1]的小数。这也没法看啊!!!怎么办???

劳动人民的智慧还是不错滴,将[0,1]映射到[0,255]就产生一张灰度图了。相关性越高的地方,在灰度图中就越亮。也就是第一张图中的各种点。我感觉这个灰度图就是反向投影图!!!不再解释,被其他博客的人坑了好长时间!


下面将计算第一个点是如何迈出它的第一步的:

meanshift 的跟踪原理解析_第4张图片


似不似算出来的移动有点大,有点大,不用怕,第二次迭代的时候就修正过来啦!!!

貌似,我这种只是一种可见的方式,肯定还会有其他的移动方式,比如计算质心什么玩意的。对不对,大笨狗始终是大笨狗。


opencv官方文档中的meanshift迭代过程:

     meanshift 的跟踪原理解析_第5张图片


(by 终结大笨狗,如有问题,请留言指出)

    

你可能感兴趣的:(opencv)