目标跟踪学习系列九:Struck:Structured Output Tracking with Kernels头文件代码框架

来源:互联网 发布:mc java路径 编辑:程序博客网 时间:2024/06/01 09:32


我们先来看一下整个的头文件的构成:

                                                     

其中:

config.h :   配置头文件,里面定义了一个类:class Config。主要定义的是特征的类型,核函数的类型等等。


Features.h:定义了一个Class Features 。里面定义了int 型的m_featureCount//特征计数Eigen::VectorXd m_featVec 存储特征的向量。其中使用了inline内联函数(inline 说明这个函数是内联的,在编译过程中内联函数会直接被源代码替换,提高执行效率 如果类中的某个函数会被调用很多次或者放在循环中,那么建议将这个函数声明为内联,可以提高程序的运行效率。现在的作用:一个可执行文件的cpp文件中一个函数只能被定义一次。如果你把函数定义在一个.h文件中并让两个cpp包含就会造成这个函数分别在两个cpp中被定义产生错误。但是inline函数是允许在多个cpp中多次定义的,就解决了这个问题。)。


HaarFeature.h:里面定义了一个Eval 函数(简单来说就是放在前面表示这个函数的返回值是const型,只能赋值给const型;放在后面就是函数是const型 总结见:http://www.cppblog.com/jukevin/archive/2008/12/27/70499.html)。声明了几个private的变量:  FloatRect m_bb;  //意思是说这个m_bb是Rect(x,y,width,height),并且里面是浮点型
std::vector<FloatRect> m_rects;// 这里也就是说这个Vector里面的每一个元素都是Rect
std::vector<float> m_weights;
float m_factor;

HaarFeatures.h:调用以上的两个头文件,继承features类,在里面定义了自己的 std::vector<HaarFeature> m_features; 同时还声明了自己的函数。

HistogramFeatures.h: 继承features类,定了了一个特征vector更新的向量。

ImageRep.h :定了class ImageRep,里面是一些图片表示的数据变量。

Kernels.h :定义了SMO需要用到的一些的核函数:包括:线性核函数,高斯核,多核等等。

LaRank.h: 定义了和支持向量相关的一些操作函数.都是一些重要的函数,比如说:通过overlap计算的重叠率从而得到Loss;process,processNew,optimize等重要的函数;以及removeSupportVector等等(详见后面)。

MultiFeatures.h,RawFeatures.h:都是 继承features类得到自己的类,用来进行特征的更新。

Rect.h: 定义了比较多的东西,包括要常用的各种类型的Rect。包括overlap的计算:取出两个xmin坐标中最大的为x0,取出xmax中最小的为x1.若是x1< x0 则表示没有重叠的部分(y也是一样的)。于是得到相交的面积:areaInt = (x1-x0)*(y1-y0); 并集的面积:((float)Area()+(float)rOther.Area()-areaInt);这样就清楚了。也就是来至于论文的equation(2)。

                                                    

除此之外,在里面也定义了IsInside来判断patch块是不是在rother patch块里面。

sample.h : 里面是得到的样本的各种的操作,包括有得到image patch块的操作;包括有转化为Rect的操作,包括得到多个样本的操作里面还是采用了内联函数的方式。

samples.h : 里面定义了两个的静态函数:RadialSamples (), PixelSamples();应该是为了得到两个半径量级的以及像素量级的样本吧。


Tracke.h :  引入前面定义的一些的类,然后定义必须要的Tracking相关的初始化(Initialize),重置(Reset),跟踪(Track),调试(Debug)等。同时还有一些的包括学习,更新的一些函数,我将在CPP文件中详细的解释


备注:

代码里面需要一些eigen 的基础,这个包挺好的有了它就可以像在MATLAB里面一样操作矩阵等等了!教程如下(改天自己写一个哈哈):http://eigen.tuxfamily.org/dox-2.0/TutorialCore.html


本小节结束!

iker 2014. 9月 25.

0 0
原创粉丝点击