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

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

其中:

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: 定义了和支持向量相关的一些操作函数(详见后面)。

其余的几个也不是很困难,我将在CPP文件中详细的解释。

备注:

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

时间: 2024-10-13 13:47:30

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

Struck: Structrued Output Tracking with Kernels 论文笔记

Main idear Treat the tracking problem as a classification task and use online learning techniques to update the object model Main Innovative Points 1 Based on structured output prediction (Structured SVM), in which the task is directly predict the ch

目标跟踪学习系列八:Struck:Structured Output Tracking with Kernels(2011 ICCV)

看来人机交互不是我想象的那么简单的,还是要花很多的功夫来打基础的.于是再来学习Tracking相关的一些文章算法. 在认真的学习了压缩跟踪(CT)以后,确实觉得自己对Tracking有了比较好的了解.但是看了在测试集上面的效果,被欺骗了原来CT的效果在真实的摄像头上面是很差劲的.唯一的优点就是快. 因此,还得回来学习一些其他的精度比较高的方法!这里选择了Struck.是大牛学长推荐的.同时本文使用了非线性的SVM算法,也想顺便的学习一下. 文章代码的位置:http://www.samhare.n

目标跟踪学习系列十:Struck:Structured Output Tracking with Kernels 代码调试

本来想看完代码再详细的写的.但是有人问了就先贴出来吧!代码调试中会遇到的一些的问题. 首先,你没有代码的话可以在这里下载:http://download.csdn.net/detail/u012192662/8042147 然后需要安装opencv(我想如果你是做这个应该有的):Eigen;http://download.csdn.net/detail/u012192662/8042155 作者的代码使用的是 OpenCV v2.1 and Eigen v2.0.15.opencv还没有问题,高

目标跟踪学习笔记1

首先提供几篇关于粒子滤波算法的博客:http://www.cnblogs.com/yangyangcv/archive/2010/05/23/1742263.html 这篇博客比较通俗易懂,简单的介绍了粒子滤波的基本工作思想和步骤.http://www.cnblogs.com/lwbaptx/archive/2011/10/20/2218419.html这篇博客用的是opencv1.0,实现的功能是用粒子滤波跟踪鼠标轨迹,有视频演示,效果还不错.http://blog.csdn.net/yang

目标跟踪学习笔记_1(opencv中meanshift和camshift例子的应用)

在这一节中,主要讲目标跟踪的一个重要的算法Camshift,因为它是连续自使用的meanShift,所以这2个函数opencv中都有,且都很重要.为了让大家先达到一个感性认识.这节主要是看懂和运行opencv中给的sample并稍加修改. Camshift函数的原型为:RotatedRect CamShift(InputArray probImage, Rect& window, TermCriteria criteria). 其中probImage为输入图像直方图的反向投影图,window为要

目标跟踪学习笔记2

上次已经初步体验了下particle filter,直接用别人的代码,见我前面的博文http://www.cnblogs.com/tornadomeet/archive/2012/03/18/2404817.html 一开始是内存出错,后面干脆自己学了下particle filter滤波的原理,把代码认真看了一遍,然后自己从头敲了遍代码,虽然运行时不再出现内存溢出等bug,但是没有跟踪效果. 这次的代码和上次一样,有跟踪效果,不过不理想.依旧是参照博主:http://blog.csdn.net/

MVC3+EF4.1学习系列(九)-----EF4.1其他的一些技巧的使用

上节通过一系列重构 简单的项目就实现了 不过还有些EF的功能没有讲 这节就通过项目 讲讲EF其他的功能与技巧 一.直接执行SQL语句 通常来讲 EF 不用写SQL语句的  但是 在有些场合  比如对生成的SQL语句 觉得不满意 要做优化  或者做报表统计时 要写很变态的SQL语句 再或者 批量操作等   这个时候 使用ORM的弱点就显露了出来 但是 做为优秀的ORM框架  EF 是支持原生态的SQL的   这里面 提供了三种方法 1. DbSet.SqlQuery   有跟踪状态的查询  2. 

Quartz.NET学习系列(九)--- XML任务配置

Quartz.NET除了可以代码定义触发器.任务之外,还可以由XML定义这两个对象.其实Quartz.NET的理想架构是:计划管理容器作为服务器运行在服务机上,而触发器.任务的添加可通过自定义任务管理软件向服务器上添加特定的任务计划. 这时就要求数据的持久化以及服务器的容错性了,后面几篇文章将会介绍持久化以及集群相关内容. VS的XML只能提示 第一篇已经将Quartz.NET下载过来了,在路径doc/xml/文件加下可以找到job_scheduling_data_2_0.xsd vs的智能提示

Castle学习系列(九)---Windsor框架快速入门

Windsor是Castle提供的一个IOC框架,使用非常简单,支持批量注册.开始快速入门 首先引用dll 两个dll版本均是最新的3.3.0.0 新建两个接口文件IPrinter(打印接口)和ICharge(收费接口) public interface IPrinter { void RegPrint(int regID); void ClinicPrint(int chargeID); } public interface ICharge { void ClinicChcarge(); }