计算机视觉-TLD算法(一)

来源:互联网 发布:中国商业源码网 编辑:程序博客网 时间:2024/06/09 23:07

         在分析 文章前先膜拜以下大神...

TLD(Tracking-Learning-Detection)是英国萨里大学的一个捷克籍博士生Zdenek Kalal在其攻读博士学位期间提出的一种新的单目标长时间(long term tracking)跟踪算法。该算法与传统跟踪算法的显著区别在于将传统的跟踪算法和传统的检测算法相结合来解决被跟踪目标在被跟踪过程中发生的形变、部分遮挡等问题。同时,通过一种改进的在线学习机制不断更新跟踪模块的“显著特征点”和检测模块的目标模型及相关参数,从而使得跟踪效果更加稳定、鲁棒、可靠。

       TLD算法本身包含了很多模块,打算花时间仔细研究下,先从TLD算法的跟踪算法入手吧。

       TLD的跟踪算法采用了金字塔Lucas-Kanade 光流方法。光流的概念是Gibson在1950年首先提出来的。它是空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。一般而言,光流是由于场景中前景目标本身的移动、相机的运动,或者两者的共同运动所产生的。

       当人的眼睛观察运动物体时,物体的景象在人眼的视网膜上形成一系列连续变化的图像,这一系列连续变化的信息不断“流过”视网膜(即图像平面),好像一种光的“流”,故称之为光流(optical flow)。光流表达了图像的变化,由于它包含了目标运动的信息,因此可被观察者用来确定目标的运动情况。

       研究光流场的目的就是为了从图片序列中近似得到不能直接得到的运动场。运动场,其实就是物体在三维真实世界中的运动;光流场,是运动场在二维图像平面上(人的眼睛或者摄像头)的投影。

       那通俗的讲就是通过一个图片序列,把每张图像中每个像素的运动速度和运动方向找出来就是光流场。那怎么找呢?咱们直观理解肯定是:第t帧的时候A点的位置是(x1, y1),那么我们在第t+1帧的时候再找到A点,假如它的位置是(x2,y2),那么我们就可以确定A点的运动了:(ux, vy) = (x2, y2) - (x1,y1)。

        那怎么知道第t+1帧的时候A点的位置呢? 这就存在很多的光流计算方法了。

       1981年,Horn和Schunck创造性地将二维速度场与灰度相联系,引入光流约束方程,得到光流计算的基本算法。人们基于不同的理论基础提出各种光流计算方法,算法性能各有不同。Barron等人对多种光流计算技术进行了总结,按照理论基础与数学方法的区别把它们分成四种:基于梯度的方法、基于匹配的方法、基于能量的方法、基于相位的方法。近年来神经动力学方法也颇受学者重视。

TLD的光流算法流程如下:

从t1时刻的A点,跟踪到t2时刻的B点,然后再从t2时刻的B点映射到t1时刻的C点,如此就产生了向前向后两个轨迹,然后比较t1时刻A点和C的距离,如果其距离小于指定阈值,就认为前向跟踪结果可信。

然后采用NCC图像匹配算法,计算模板图像与被搜索图像的互相关值确定匹配程度。TLD算法将跟踪结果周围10*10像素与原始位置周围10*10像素的小图片进行NCC匹配计算,并按照匹配相似度进行过滤。

根据后向跟踪过滤和匹配相似度过滤,最终计算出关键点的跟踪轨迹。


0 0
原创粉丝点击