openTLD 源码解读

原创 2012年03月25日 16:18:32

首先是run_TLD 在其次就是tldExample 最后到了初始化函数tldInit

第一个比较关键的函数   bb_scan

将图像网格化,将图片首先 SCALE = 1.2.^[-10:10];(21 个规格),在每个规格上打网格 

这个函数有一个比较重要的方法

ntuples(就是重复) 因为网格上的点很多点有相同的X,或者Y 具体方法大家在matlab中调用一句ntuples([1 2],[1 2,3])看看答案就知道什么意思了。

这个函数返回一个6*n的矩阵,这个矩阵每个列代表一个窗口。

1,代表窗口左上点X

2,代表窗口左上点y

3,代表窗口右下点X

4,代表窗口右下点Y

5,这种规格的编号

6,相同X的窗口数目

产生特征点函数tldGenerateFeatures

就是产生一系列的随机数 大概是(4*特征个数)*树的个数

初始化轨迹

记录连续的图片

训练探测器

规格化和目标的相似度bb_overlap

将每个规格化窗口和目标窗口做运算得到相似度

公式:相交的面积/总面积(不相交则返回0.0)

注意矩阵运算返回一个向量,大小就是规格化的数目length(grid)

取出图片的函数,当参数为4个时会进行变换img_patch

tldGeneratePositiveData产生正样本数据

主要利用的是相似度来判定正负样本既bb_overlap>阈值,则认为正样本,反之亦然。

这里主要就是有个编码问题

随机取出点比较大小进行编码

for (int i=0; i<nFEAT; i++) {
index<<=1; 
int fp0 = img[off[0]+bbox[0]];
int fp1 = img[off[1]+bbox[0]];
if (fp0>fp1) { index |= 1;}
off += 2;
}

(fern.cpp的measure_tree_offset)

这个函数返回一个pX代表编码后的矩阵,pEx代表最靠近目标窗口的规格化窗口(这个窗口进行了处理可以用于后面的训练),

最靠近目标窗口的规格化窗口

类似的负样本情况。

fern(2,......)

开始训练随机树

if (Y[I] == 1) {
if (measure_forest(x) <= thrP)//防止某个特征占的比重太大
update(x,1,1);
} else {
if (measure_forest(x) >= thrN)
update(x,0,1);

void update(double *x, int C, int N) {
for (int i = 0; i < nTREES; i++) {
int idx = (int) x[i];
(C==1) ? nP[i][idx] += N : nN[i][idx] += N;
if (nP[i][idx]==0) {
WEIGHT[i][idx] = 0;
} else {
WEIGHT[i][idx] = ((double) (nP[i][idx])) / (nP[i][idx] + nN[i][idx]);//正样本增加相应位置的权重,集后面的置信度
}
}
}

训练样本产生一个正确的特征集

 tldTrainNN(pEx,nEx,tld)

tld.pex = [tld.pex(:,1:isin(2)) x(:,i) tld.pex(:,isin(2)+1:end)]; % 这个代码就是通过随机树种产生比较高的规格化窗口在这些窗口放到正特征集里面

以后就可以拿这个和目标最比较来判断目标窗口的位置


物体追踪OpenTLD源码在高版本vs以及opencv运行

VS版本:2013 OpenCV:2.4.6 matlab:R2014a 源码下载网址:openTLD下载源码解压下来,工程根目录下首先运行compile.m,这里一般会碰到如下问题: 1、因...
  • joyce19920920
  • joyce19920920
  • 2016年07月05日 17:34
  • 1141

OpenTLD 未完成 - 虎头

TLD是一种算法的简称,原作者把它叫做Tracking-Learning-Detection。搞视觉的人看到这个名字都会吓一跳,很ambitious的计划。是09年的工作,不算太久,不过也不太新。网上...
  • windtalkersm
  • windtalkersm
  • 2012年09月27日 00:09
  • 16898

TLD(Tracking-Learning-Detection)学习与源码理解之(一)

TLD(Tracking-Learning-Detection)学习与源码理解之(一) zouxy09@qq.com TLD(Tracking-Learning-Detection)是英国萨里大学的一...
  • zouxy09
  • zouxy09
  • 2012年08月21日 20:15
  • 102999

OpenTLD源码生成VS2010工程和编译过程

OpenTLD算法是做什么的,我就不多介绍了,很多人前辈都介绍过了。我参考的博客有 庖丁解牛TLD(五)——井底之蛙啦~ OpenTLD C++ 尝试车辆目标跟踪[1] 看了这个挺好玩的...
  • benshu_001
  • benshu_001
  • 2012年12月27日 16:17
  • 7214

openTLD算法在opencv3版本下运行所需的修改

由于opencv3的各种版本相对于opencv2的版本已经改变了很多内容,openTLD跟踪算法所依赖的一些函数在opencv3中已经消失了,为此需要对openTLD进行适当修改才能使之在opencv...
  • J10527
  • J10527
  • 2016年05月03日 15:27
  • 1703

OPENTLD学习总结

OPENTLD是捷克的一个博士开发的一个长时间对运动目标进行跟踪的算法。算法由三部分构成:1、Tracking 2、Detection 3、Learning。 1:Tracking:用median_...
  • tiandawenwu
  • tiandawenwu
  • 2013年12月21日 11:53
  • 1954

OpenTLD C++ 尝试车辆目标跟踪[1]

这周开始准备用openTLD的方法实现一下交通场景车辆目标识别 之前采取的提取前景+运动目标跟踪效果一般 现在打算加上跟踪的算法 对识别的效果应该有帮助 一开始看到 Z.Kalal 的一个Slide...
  • veinyoo
  • veinyoo
  • 2012年02月20日 22:50
  • 5589

openTLD 源码解读

首先是run_TLD 在其次就是tldExample 最后到了初始化函数tldInit 第一个比较关键的函数   bb_scan 将图像网格化,将图片首先 SCALE = 1.2.^[-10:10...
  • muzi198783
  • muzi198783
  • 2012年03月25日 16:18
  • 5458

OpenTLD-master VS213 OpenCV 3.0版本源码

  • 2016年04月02日 11:36
  • 30.54MB
  • 下载

openTLD 源码解读 .

本文转自http://blog.csdn.net/muzi198783/article/details/7392255 首先是run_TLD 在其次就是tldExample 最后到了初始化函数tld...
  • gxiaob
  • gxiaob
  • 2012年11月21日 15:33
  • 1026
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:openTLD 源码解读
举报原因:
原因补充:

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