因为考试等等其他事情TLD的代码放了一阵,重新开始看,记录如下
程序运行从run_TLD.m或者run_TLD_demo.m开始,后者的功能更全,可以实现源代码作者主页上那些视频里的效果。
0. run_TLD_demo.m
程序启动的接口,这里可以设置DEMO程序的运行参数,结构体opt传递整个程序中的各种参量
.source 是图像的数据源,可以从摄像头读取图像('camera=1')和文件中读取图像序列('camera=0'),
.name 截图保存位置
初始化了全局变量tld,包括opt中的参数以及tld跟踪监测的各种数据都靠他传递。
==========================================================
1. tldDemo.m
程序运行的主题,相当于C中的MAIN函数
首先进行初始化
tldInitSource选择数据源
figure(2); set(2,'KeyPressFcn', @handleKey); 打开图像并初始化键盘输入的指针
tldInitFirstFrame 加载第一帧,加载初始框(就是检测目标框,选择摄像头用鼠标框定,选择文件读入则由文本文件中保存的信息载入)
tld = tldInit(opt,tld); %%关键!! % train initial detector 初始化detector 里面内容很多,另起介绍
===========================================================
2. tldInit.m
程序的第一行就是:
lk(0);
暂时没看,估计为光流跟踪的初始化
下面进入初始化detector的部分
---------------------------产生检测网格----------------------
[tld.grid tld.scales] = bb_scan(tld.source.bb,size(tld.source.im0.input),tld.model.min_win);
输入量分别是初始框,图像大小,和最小框阈值
网格窗口的步长为0.1倍的长宽,尺度变换的步长为1.2倍,作者设置的最小窗口大小为20像素
不同的尺度大小保存在sca中
不同尺度下的所有的网格节点坐标
---------------------------初始化特征----------------------
tld.nGrid =size(tld.grid,2); tld.features =tldGenerateFeatures(tld.model.num_trees,tld.model.num_features,0);
初始化特征产生一个随机森林,也就是初始化TLD的三个串行分类器中的第二个,集合分类器(ensembleclassifier)
未完待续。。。