struck-matlab

所属分类:matlab编程
开发工具:matlab
文件大小:1894KB
下载次数:159
上传日期:2015-01-16 17:13:13
上 传 者猪哥
说明:  struck目标跟踪的matlab源码,内含图像序列,可直接运行,最好用matlab较高的版本
(Struck target tracking matlab source code, including image sequences, can be directly run, preferably with higher matlab version )

文件列表:
struck-matlab\budget_maintenance.m (1422, 2014-06-11)
struck-matlab\gaussian_kernel.m (177, 2014-06-11)
struck-matlab\haar_feature_vector.m (646, 2014-06-11)
struck-matlab\haar_like_feature.m (3663, 2014-06-11)
struck-matlab\learner_add_support_vector.m (779, 2014-06-11)
struck-matlab\learner_evaluate.m (352, 2014-06-11)
struck-matlab\learner_loss.m (489, 2014-06-11)
struck-matlab\learner_min_gradient.m (380, 2014-11-08)
struck-matlab\learner_optimize.m (834, 2014-06-11)
struck-matlab\learner_process_new.m (364, 2014-06-11)
struck-matlab\learner_process_old.m (1057, 2014-06-11)
struck-matlab\learner_remove_support_vector.m (1257, 2014-06-11)
struck-matlab\learner_smo_step.m (1202, 2014-06-11)
struck-matlab\learner_update.m (765, 2014-06-11)
struck-matlab\main.asv (1453, 2014-11-13)
struck-matlab\main.m (1452, 2014-11-13)
struck-matlab\results_comparator\centre_distance.m (220, 2014-07-03)
struck-matlab\results_comparator\draw_rect.m (328, 2014-07-03)
struck-matlab\results_comparator\main.m (1208, 2014-07-03)
struck-matlab\results_comparator\overlap_rate.m (483, 2014-07-03)
struck-matlab\results_comparator.zip (1822, 2014-07-03)
struck-matlab\sampler_pixel_samples.m (604, 2014-06-11)
struck-matlab\sampler_radial_samples.m (623, 2014-06-11)
struck-matlab\sampler_valid_samples.m (347, 2014-06-11)
struck-matlab\sequences\Girl\groundtruth_rect.txt (6490, 2010-11-06)
struck-matlab\sequences\Girl\img\0001.jpg (7958, 2012-08-13)
struck-matlab\sequences\Girl\img\0002.jpg (7914, 2012-08-13)
struck-matlab\sequences\Girl\img\0003.jpg (7874, 2012-08-13)
struck-matlab\sequences\Girl\img\0004.jpg (7816, 2012-08-13)
struck-matlab\sequences\Girl\img\0005.jpg (7684, 2012-08-13)
struck-matlab\sequences\Girl\img\0006.jpg (7686, 2012-08-13)
struck-matlab\sequences\Girl\img\0007.jpg (7614, 2012-08-13)
struck-matlab\sequences\Girl\img\0008.jpg (7696, 2012-08-13)
struck-matlab\sequences\Girl\img\0009.jpg (7738, 2012-08-13)
struck-matlab\sequences\Girl\img\0010.jpg (7744, 2012-08-13)
struck-matlab\sequences\Girl\img\0011.jpg (7694, 2012-08-13)
struck-matlab\sequences\Girl\img\0012.jpg (7518, 2012-08-13)
struck-matlab\sequences\Girl\img\0013.jpg (7362, 2012-08-13)
struck-matlab\sequences\Girl\img\0014.jpg (7186, 2012-08-13)
... ...

这个matlab代码是根据struck算法(struck:Structured Output Tracking with Kernels,iccv2011)的默认配置做成的简化版,因此有些代码的逻辑相对于原来的代码可能会比较简单直接一些。 杨德,高月芳,华南农业大学信息学院,2014.07.04 一些说明: 运行:直接运行main.m函数 1、boundingbox为预测到的目标的位置。 2、支持模式: 包含某一帧中boundingbox周围81个sample(包括boundingbox本身)的特征向量(即sp.x)和相对于boundingbox的位置(即sp.yv)。如果没有预算限制,则应该是每一帧都对应有一个支持模式。因为预算限制会导致支持向量移除,如果没有支持向量引用这个支持模式(sp.refCount为0),那么这个支持模式也被移除。而sp.y指明boundingbox在81个sample中的下标(总是1) 3、支持向量: 引用某个支持模式中的某个sample:sv.x指向支持模式,sv.y是指明支持模式中的sample的下标。所以我的理解是 支持向量 = 某一帧上的某个sample的特征向量 + 这个sample相对于该帧的boundingbox的相对位置 + 这个支持向量的系数b + 这个支持向量的梯度g(也就是sample的g)。 budget_maintenance.m 维护支持向量的数量,使其不超过预算。根据论文公式(12)选取一对正负支持向量,然后移除负支持向量,正支持向量的系数b被加上负支持向量的系数b,然后如果算出来的正支持向量的系数b太小(代码中是 < 1e-8 (即0.00000001)),那么正支持向量也被移除。移除操作完成后,根据论文公式(10)重新计算每个支持向量的梯度g。 gaussian_kernel.m 高斯核函数,我的理解是给两个支持向量算相似度的。相似度越高越接近1,否则越接近0。代码中使用这个函数来计算某个特征向量与支持向量的特征向量的相似度。 haar_feature_vector.m 计算sample的特征向量。在sample内选取192个矩形并计算这些矩形的Haar-like特征,作为sample的特征向量。代码中的a、b数组可以理解为这些矩形的中点相对于sample的位置,c数组理解为这些矩形相对于sample的大小(即:矩形的宽为c * sample的宽,矩形的高为c * sample的高)。a、b、c三个数组的组合总共有192种,所以有192个不同的矩形。因为a、b数组是矩形的中点相对于sample的位置,所以代码中的变量abc把abc.a和abc.b赋值为矩形的左上角相对于sample的位置。 haar_like_feature.m 计算sample中某个的矩形(由abc决定位置和大小)的Haar-like特征,并且把特征值规范化到范围[-1, 1](其实就是把特征值除以特征值所有可能的最大值)。根据输入参数type确定Haar-like的类型,1是上下型,2是左右型,3是左中右型,4是上中下型,5是对角线型,6是中心型。参考http://blog.csdn.net/carson2005/article/details/8094699 learner_add_support_vector.m 添加一个支持向量,并且更新核矩阵。更新核矩阵:用高斯核函数计算第i个支持向量和当前支持向量n的特征向量,把结果赋值给核矩阵KernelMatrix的(i, n)和(n, i),而(n, n)则为1(因为两个相同特征向量的高斯核函数结果为1)。 learner_evaluate.m 利用所有支持向量去计算一个特征向量的分数。在跟踪预测中,分数最高的sample作为当前帧boundingbox。也用于计算梯度(g = learner_loss - learner_evaluate,论文公式(10))。 learner_loss.m 其实就是 1 - 两个矩形的重叠率。论文公式(6)。 learner_min_gradient.m 在指定的支持模式中找出最小梯度的sample。 learner_optimize.m 对应论文的optimize,随机挑选支持模式,然后找出引用这个支持模式的支持向量,梯度最大且系数b不大于svmC的作为正支持向量,梯度最小的作为负支持向量,然后进行SMO算法。 learner_process_new.m 对应论文的process new,添加正支持向量(引用支持模式中的第1个sample,即boundingbox),再添加负支持向量(引用支持模式中梯度最小的sample),进行SMO算法。 learner_process_old.m 对应论文的process old,随机挑选支持模式,找出引用这个支持模式的支持向量,梯度最大且系数b不大于svmC的作为正支持向量,然后再找出这个支持模式中当前梯度最小的sample,如果这个sample已经存在于某个支持向量,则这个支持向量作为负支持向量,否则利用这个sample添加一个新的支持向量作为负支持向量,进行SMO算法。 learner_remove_support_vector.m 移除一个支持向量。为了保持核矩阵KernelMatrix有效,总是把要移除的支持向量与最后一个支持向量交换,再进行移除。 learner_smo_step.m 一个算法,只知道用来调整输入的两个支持向量的系数b,以及所有支持向量的梯度g。因为会影响到系数b,当b太小时会导致支持向量被移除。 learner_update.m 跟踪器初始化时调用1次,每次跟踪后也调用1次,在这里产生每一帧对应的支持模式。具体内容看代码,都是前面的函数的调用。 main.m 主函数。里面包含有配置信息。 sampler_pixel_samples.m 以boundingBox为中心,取在半径radius(对应main.m里配置的gSearchRadius)内的所有sample。 sampler_radial_samples.m (极坐标取样)。以boundingBox为中心,半径分5步从里到外延伸,圆周分16步旋转,选取5 * 16 = 80个sample,算上boundingbox总共81个sample。其中半径为奇数步时,角度要加半步。 sampler_valid_samples.m 过滤掉上面两种取样方法得到的sample中超出图片范围的sample。 tracker_initialize.m 初始化跟踪器。这里仅仅调用tracker_update_learner,没有其他操作,是为了保持可读性而留下的。 tracker_track.m 利用sampler_pixel_samples取样,算出其特征向量,再用learner_evaluate算分,最高分的作为当前帧的boundingbox。 tracker_update_learner.m 利用sampler_radial_samples取样后调用learner_update。

近期下载者

相关文件


收藏者