forked from yuxng/MDP_Tracking
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgenerate_initial_index.m
54 lines (49 loc) · 1.34 KB
/
generate_initial_index.m
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
% --------------------------------------------------------
% MDP Tracking
% Copyright (c) 2015 CVGL Stanford
% Licensed under The MIT License [see LICENSE for details]
% Written by Yu Xiang
% --------------------------------------------------------
%
% find detections for initialization
function [dres_det, index_det] = generate_initial_index(trackers, dres_det)
if isempty(dres_det) == 1
index_det = [];
return;
end
% collect dres from trackers
dres_track = [];
for i = 1:numel(trackers)
tracker = trackers{i};
dres = sub(tracker.dres, numel(tracker.dres.fr));
if tracker.state == 2
if isempty(dres_track)
dres_track = dres;
else
dres_track = concatenate_dres(dres_track, dres);
end
end
end
% nms
% bbox = [dres_det.x dres_det.y dres_det.x+dres_det.w dres_det.y+dres_det.h dres_det.r];
% index_nms = nms(bbox, 0.5);
% dres_det = sub(dres_det, index_nms);
% compute overlaps
num_det = numel(dres_det.fr);
if isempty(dres_track)
num_track = 0;
else
num_track = numel(dres_track.fr);
end
if num_track
o1 = zeros(num_det, 1);
o2 = zeros(num_det, 1);
for i = 1:num_det
[o, oo] = calc_overlap(dres_det, i, dres_track, 1:num_track);
o1(i) = max(o);
o2(i) = sum(oo);
end
index_det = find(o1 < 0.5 & o2 < 0.5);
else
index_det = 1:num_det;
end