我是靠谱客的博主 等待朋友,这篇文章主要介绍struck(结构化SVM用于视觉跟踪)--源代码详解--sampler.cpp,现在分享给大家,希望可以做个参考。

struck中,作者的的采样方式都很简单,采用的都是均匀采样;

在进行预测评估eval的时候,使用的是基于像素的采样,也就是每个像素点变化,都采样一次;

在进行更新update的时候,采用的是radial和regular的采样,就是根据半径和角度的变化确定采样框,其中有5种半径,16种方向,再加上(0,0),最后有81个采样框;

代码以及注释如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include "Sampler.h" #include "Config.h" #define _USE_MATH_DEFINES #include <cmath> #include <math.h> using namespace std; vector<FloatRect> Sampler::RadialSamples(FloatRect centre, int radius, int nr, int nt) { vector<FloatRect> samples; FloatRect s(centre); float rstep = (float)radius/nr;//半径变化的步长 float tstep = 2*(float)M_PI/nt;//角度变化的步长 samples.push_back(centre); for (int ir = 1; ir <= nr; ++ir) { float phase = (ir % 2)*tstep/2;//这个phase可加可不加,加之后可以使得sample分布更加均匀,准确的来说,角度划分为了2*nt种 for (int it = 0; it < nt; ++it) { float dx = ir*rstep*cosf(it*tstep+phase);//半径乘以角度的余弦 float dy = ir*rstep*sinf(it*tstep+phase);//半径乘以角度的正弦 s.SetXMin(centre.XMin()+dx); s.SetYMin(centre.YMin()+dy); samples.push_back(s); } } return samples; } vector<FloatRect> Sampler::PixelSamples(FloatRect centre, int radius, bool halfSample) { vector<FloatRect> samples;//作者在30为半径的园内进行搜索,有pi*30*30 = 2831 IntRect s(centre); samples.push_back(s);//上一帧的rect放在vector的第一个,也即是这一帧的搜索中心 int r2 = radius*radius; for (int iy = -radius; iy <= radius; ++iy) { for (int ix = -radius; ix <= radius; ++ix) { if (ix*ix+iy*iy > r2) continue;//这种情况就不会发生 if (iy == 0 && ix == 0) continue; // already put this one at the start int x = (int)centre.XMin() + ix; int y = (int)centre.YMin() + iy; if (halfSample && (ix % 2 != 0 || iy % 2 != 0)) continue;//如果是半采样,逢偶数就跳过 s.SetXMin(x); s.SetYMin(y); samples.push_back(s); } } return samples; }












最后

以上就是等待朋友最近收集整理的关于struck(结构化SVM用于视觉跟踪)--源代码详解--sampler.cpp的全部内容,更多相关struck(结构化SVM用于视觉跟踪)--源代码详解--sampler内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(82)

评论列表共有 0 条评论

立即
投稿
返回
顶部