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源码生成VS2010工程和编译过程

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

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

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

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

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

OpenTLD 未完成 - 虎头

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

用js控制文本框只能输入数字

最近做了个小东西用到了这方面的知识个人觉得很好用向大家推荐控制只能输入数字onkeyup="this.value=this.value.replace(//D/g,)" onafterpaste="t...
  • H_A_H
  • H_A_H
  • 2008年08月07日 15:24
  • 194

OpenTLD学习资源整理,转自windtalkersm的专栏

转载自:http://blog.csdn.net/windtalkersm/article/details/8018980 感谢原作者的整理! TLD是一种算法的简称,原作者把它叫做Trackin...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

别人总结的OpenTLD资源,MARK

转自http://blog.csdn.net/windtalkersm/article/details/8018980 MARK一下然后继续啃代码~ TLD是一种算法的简称,原...

他人总结的TLD视觉跟踪算法(源代码、文章、原理等)非常好的东西

TLD算法好牛逼一个,这里有个视频,是作者展示算法的效果,http://www.56.com/u83/v_NTk3Mzc1NTI.html。下面这个csdn博客里有人做的相关总结,感觉挺好的,收藏了!...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:openTLD 源码解读
举报原因:
原因补充:

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