庖丁解牛TLD(四)——Tracking解析

原创 2011年12月17日 13:28:53

前几节都是根据作者的程序流程一步步介绍作者的工作,感觉只是对代码的一个注释,这次换一个思路,一部分一部分啃,作者的工作主要就是3部分么,tracking,learning,detection。

这次先介绍Tracking的工作。对于Tracking,作者主要使用的是他提出的Forward-Backward Error的办法,使用Lucas-Kanade光流法跟踪,对跟踪的结果,用Forward-Backward Error做反馈,求FB error的结果与原始位置的欧式距离,把距离过大的跟踪结果舍弃,他把这种利用FB error舍弃坏值的跟踪方法叫做Median Flow,是把欧式距离集合中较大的50%的那些跟踪结果舍弃。作者在他的文章Forward-Backward Error:Automatic Detection of Tracking Failures里提到用FB+NCC(交叉验证)的方案,可以使跟踪的结果最佳。作者的Tracking的办法就是根据我以上介绍的流程实现的。接下来结合代码再详细剖析一下

先用bb_points函数在box中均匀采样10*10个点,注意作者这里设置了采样点的区域比box的区域少一圈边界,边界为5,在后面我会介绍作者这里的独到用心。然后调用混合编程的lk函数实现lucas-Kanade光流法跟踪,得到的结果有为这100个点的lk结果,前两个参数为利用l-k方法得到的点当前的跟踪位置坐标,第三个参数是利用NCC把跟踪预测的结果周围取10*10的小图片与原始位置周围10*10(这里取10*10,有心的朋友应该笑了,为什么作者之前在bb_points函数里要设置个边界5,原来是防止越界哦)的小图片(使用函数getRectSubPix得到)进行模板匹配(调用matchTemplate),再对匹配的结果归一化,把这个结果保存在第三个参数中,第四个参数为FB error的欧氏距离。这个lk函数过程中有很多参数可以设置,对最终的结果我想应该应该也是有的,有待实验验证。接下来就是利用作者提出的Median Flow,得到NCC和FB error结果的中值,分别去掉中值一半的跟踪结果不好的点,利用这一半(其实不到50%)的跟踪点输入函数bb_predict函数中预测bounding box在当前帧的位置和大小。

这基本就是Tracking工作的主要部分了,至于被遮挡的tracking(tldTrack_occlusion),作者进行了单独处理,下一次再分析。

PS:很感谢最近有些网友与我一起研究TLD,不过本人能力不足,很多东西还是不理解,对于作者detection和learning的工作,感觉那部分的代码实在好比天书,没法拿出来和大家交流了,希望有识之士也能写出来,和大家分享~~

MIL,BOOSTING,MEDIANFLOW,TLD,KCF的区别

MIL,BOOSTING,MEDIANFLOW,TLD,KCF
  • u013539952
  • u013539952
  • 2017年07月20日 21:33
  • 622

基于前向后向光流的目标跟踪(Forward-Backward Error: Automatic Detection of Tracking Failures)

  • 2013年03月18日 08:37
  • 1.62MB
  • 下载

译文TLD:Forward-Backward Error Automatic Detection of Tracking Failures翻译

  • 2012年11月07日 11:06
  • 1015KB
  • 下载

MedianFlow跟踪算法

算法简介该算法其实不能称作一个单独的算法,他属于TLD跟踪算法中Tracking部分。它基于LK光流跟踪算法,并使用FB(正向/反向评估点追踪质量的一种方法)、NCC交叉验证反馈,过滤掉对象范围中质量...
  • u012525096
  • u012525096
  • 2017年12月24日 20:22
  • 53

2014新跟踪算法KCF笔记 --续(代码部分)

KCF跟踪在opencv3.1中集成了,在opencv_contrib/tracking中有,opencv_contrib这个需要重新编译一下opencv3.1才能get.windows下的编译方法如...
  • zwlq1314521
  • zwlq1314521
  • 2016年01月11日 16:27
  • 19576

一些我看过的Object tracking算法的理解

最近因为要做一个体育视频跟踪的项目,所以看了一些paper,经过一段时间的代码阅读以及从网上看一些大牛们的讲解,基本上对算法和代码有了一个清晰的轮廓,为了以后可能要用到这些算法,所以在这里简要的总结下...
  • cimuhuan
  • cimuhuan
  • 2014年03月03日 19:53
  • 1744

庖丁解牛TLD(三)——算法初始化

上一讲我提到对于算法的初始化工作主要是在tldInit这个函数里实现的。主要分为如下几大步骤,1)初始化Detector。2)初始化Trajectory。3)训练Detector 1)初始化Dete...
  • yang_xian521
  • yang_xian521
  • 2011年11月13日 16:37
  • 14402

TLD理解之Forward-Backward Error

对于TLD中的Tracking,作者主要使用的是他提出的Forward-Backward Error的办法,使用Lucas-Kanade光流法跟踪,对跟踪的结果,用Forward-Backward ...
  • xxradon
  • xxradon
  • 2015年08月16日 12:46
  • 507

一些我看过的Object tracking算法的理解

最近因为要做一个体育视频跟踪的项目,所以看了一些paper,经过一段时间的代码阅读以及从网上看一些大牛们的讲解,基本上对算法和代码有了一个清晰的轮廓,为了以后可能要用到这些算法,所以在这里简要的总结下...
  • cimuhuan
  • cimuhuan
  • 2014年03月03日 19:53
  • 1744

详解庖丁解牛中文分词器工具的使用

今天在网上看了一篇关于中文分词的文章,有一类是关于基于字符串匹配的中文分词,里面谈到了一个“庖丁解牛分词器”,于是本人就想尝试跑跑这个分词工具。下面是具体的使用步骤: 1.  从网上下载了一个庖丁解...
  • u013709332
  • u013709332
  • 2015年02月02日 10:08
  • 2687
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:庖丁解牛TLD(四)——Tracking解析
举报原因:
原因补充:

(最多只允许输入30个字)