目标检测与跟踪作为计算机视觉领域重点难点之一,一直一来受到广泛的关注与研究。目前,运动物体的检测与跟踪主要运用与人机交互、智能家具、视频监控等领域。尽管目标检测与跟踪发展迅速也提出了很多有效的方法。但在实际应用中任然存在各种困难,如跟踪目标体积变化,周围环境突变,跟踪目标被遮挡等。
目前主流的跟踪算法基本都基于检测跟踪,TLD就是基于检测的跟踪算法,TLD(Tracking-Learning-Detection)跟踪算法对长时间跟踪有较好的鲁棒性,因而受到广泛关注,然而TLD算法也存在着自身的不足,如目标物体被遮挡时,形态变化,光照变化,TLD就无法预测与跟踪目标。
本文主要想通过加入卡尔曼滤波来改进TLD算法,通过减少检测的窗口数量,从而减少检测目标花费的时间,并且提高对小区域目标的跟踪的鲁棒性,卡尔曼滤波预测目标状态也可以解决目标物体被遮挡的情况。在该算法中也加入了人脸检测算法,可以实现对人物的追踪。
Tracking-Learning-Detection介绍
当我们在进行物体追踪的时候,追踪目标无可避免的会发生形变,从当前帧中消失,消失目标在过段时间后再次出现,对于这样的情况,传统的算法都是采用先对追踪目标进行训练,然后在追踪的过程中将视频中的物体与训练的样本进行对照,如果对比成功,则追踪到目标,如果对比失败,则追踪失败,这样的机制灵活性较差。而Tracking-Learning-Detection(TLD)算法即可适应与长时间跟踪也可以解决传统算法的不足问题,因而受到广泛的关注[5]。该算法主要有检测器,跟踪器,学习器[11]三个部分组成。跟踪器通过上一帧和当前帧采用金字塔光流calcOpticalFlowPyrLK来跟踪目标,若目标消失则跟踪失败。而检测器采用扫描整个窗口的策略来检测当前帧中是否存在目标,最后综合模块对检测器检测到的目标与跟踪器追踪到的目标进行综合验证,输出两种方法的最有值,从而确认目标的位置。学习器通过Positive-Negative学习,对分类器进行不断的改正,从而提高检测器的正确率。TLD算法由于是对每一帧都采取全部扫描因此具有良好的重检测能力,但是由于是对整个窗口进行扫描,难免会比较耗时,并且无法应对遮挡等问题
TLD模型
Tracking-Learning-Detection(TLD)主要由跟踪器,检测器,学习器三个部分组成的一种在线单目标检测跟踪算法。模型图如图所示。
跟踪器主要采用金字塔光流calcOpticalFlowPyrLK进行前向追踪和后向追踪来跟踪目标。原理较为简单:假如对图像上的A点进行跟踪,首先获取A点的位置,然后利用金字塔光流法来判断A点在当前帧中的位置B,然后利用同样的原理使用B点来反向预测A点的位置A’然后计算A点与A’点的距离FB_Error,如果距离FB_error小于一定的阈值,则表明该点追踪成功,如果FB_error的距离大于一定的阈值,则表明对该点的追踪失败,在从而通过上一帧可以检测出当前帧的位置,但是跟踪器无法对丢失的目标进行重新恢复跟踪。
检测器主要采用扫描整个窗口的策略来检测当前帧中是否存在检测目标。可以通过检测器对丢失的目标进行重新检测。
学习器主要是对通过检测器与跟踪器所跟踪的目标对分类器进行不断的改正,从而提高检测器的正确率。
检测器介绍
检测器是一种级联分类器,主要由方差检测模块,集合分类器检测模块,最近邻分类器检测模块组成。如图所示。
TLD将整个图像作为目标候选区域,当目标候选区域中的某一块区域全部通过方差检测模块,集合分类器模块,最近邻分类器模块时该区域才可能是目标区域。而只要有一项无法通过,则被认为不是目标区域。
方差检测模块原理:首先求出待测窗口的方差然后与目标图像框的方差的一半做对比,如果方差大于该阈值,则通过方差分类器,如果方差小于该阈值,则不通过方差分类器。
集合分类器原理:图像区域输入到集合分类器后,会得到相应的后验概率,通过后验概率的大小来判断是否通过。
最近邻分类器原理:将通过方差分类器,集合分类器的图片作为最近邻分类器的素材,判断图像区域与目标区域的相似度,用过NNConf函数处理
跟踪器介绍
跟踪器主要采用金字塔光流calcOpticalFlowPyrLK进行前向