TLD 代码学习(一)

OpenTLD 代码

首先要

1:compile 其中是一些cpp文件,使用mex命令可以产生 mexw32文件,这部分牵涉到c和matlal 混编,有关mexfunction 和mxarray ,还是第一次接触,查了点资料写了个小测试cpp mex一下可以通过,然后继续:

2: runtld 这里是将参数初始化的部分 patchsize           = [15 15];这句在TLD 的论文里有就是以15*15作为一个patch 

      opt.p_par_init      = struct('num_closest',10,'num_warps',20,'noise',5,'angle',20,'shift',0.02,'scale',0.02); 
      opt.p_par_update    = struct('num_closest',10,'num_warps',10,'noise',5,'angle',10,'shift',0.02,'scale',0.02); 

      这两句论文的5.6部分也提及了,就是第一帧选了框之后 提取初始的正样本,不是一个而是200 了,对选的框周围10个框进行旋转,移动,放大放小等变化产生的,而负样本没有经过这些变化就是 initial bounding box  周围的背景框

    [bb,conf] = tldExample(opt); 这句话讲 初始化信息输入tldExample 脚本,进行另一部分工作。

3 :tldExample 里面包含进一步具体的初始化

         opt.source = tldInitSource(opt.source); 对opt里的source域更改,添加了source.idx这个field 如果是图片序列则           添加 source.file域。

        source.idx    = 1:length(source.files); 可见 idx 就是图片序列的编号

        这种不断变化的变量 有时候让读者 很是头疼,不仅要记得名字还要记住经过几个脚本后变量内容的变化

        figure(2); set(2,'KeyPressFcn', @handleKey);这其实是设置一个nested               funtion作为回调函数,意思大概          就是 只要按下键 就调用handleKey 函数。

        tldInitFirstFrame 就是根据input 文件的第一张图片让你画一框 或者是调用摄像头

         source = tldInitFirstFrame(tld,opt.source,opt.model.min_win); 这一句对source 添加了source.im0 表示第一帧图片,source.bb 表示框的座标

        tld = tldInit(opt,[]); 初始化tld这个 global 变量 因为已经选择了框 所以可以对detector初始化, 对于tracker 用的是           opencv提供的光流算法函数,所以这个不用作者自己再写什么东西。

4:tldInit 后续。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章