projects
/
mtp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Adding comments.
[mtp.git]
/
tracker.cc
diff --git
a/tracker.cc
b/tracker.cc
index
5a0647b
..
675ba2d
100644
(file)
--- a/
tracker.cc
+++ b/
tracker.cc
@@
-26,7
+26,7
@@
Tracker::Tracker(int nb_time_steps, int nb_locations) {
_nb_locations = nb_locations;
_nb_time_steps = nb_time_steps;
_nb_locations = nb_locations;
_nb_time_steps = nb_time_steps;
- detection_score = allocate_array<scalar_t>(_nb_time_steps, _nb_locations);
+ detection_score
s
= allocate_array<scalar_t>(_nb_time_steps, _nb_locations);
allowed_motion = allocate_array<int>(_nb_locations, _nb_locations);
entrances = new int[_nb_locations];
allowed_motion = allocate_array<int>(_nb_locations, _nb_locations);
entrances = new int[_nb_locations];
@@
-42,7
+42,7
@@
Tracker::Tracker(int nb_time_steps, int nb_locations) {
for(int t = 0; t < _nb_time_steps; t++) {
for(int l = 0; l < _nb_locations; l++) {
for(int t = 0; t < _nb_time_steps; t++) {
for(int l = 0; l < _nb_locations; l++) {
- detection_score[t][l] = 0.0;
+ detection_score
s
[t][l] = 0.0;
}
}
}
}
@@
-53,14
+53,22
@@
Tracker::Tracker(int nb_time_steps, int nb_locations) {
Tracker::~Tracker() {
delete[] _edge_lengths;
delete _graph;
Tracker::~Tracker() {
delete[] _edge_lengths;
delete _graph;
- deallocate_array<scalar_t>(detection_score);
+ deallocate_array<scalar_t>(detection_score
s
);
deallocate_array<int>(allowed_motion);
delete[] exits;
delete[] entrances;
}
deallocate_array<int>(allowed_motion);
delete[] exits;
delete[] entrances;
}
+int Tracker::early_pair_node(int t, int l) {
+ return 1 + (2 * (t + 0) + 0) * _nb_locations + l;
+}
+
+int Tracker::late_pair_node(int t, int l) {
+ return 1 + (2 * (t + 0) + 1) * _nb_locations + l;
+}
+
void Tracker::build_graph() {
void Tracker::build_graph() {
- // Delete existing graph if there was one
+ // Delete
the
existing graph if there was one
delete[] _edge_lengths;
delete _graph;
delete[] _edge_lengths;
delete _graph;
@@
-81,11
+89,10
@@
void Tracker::build_graph() {
// frame to the sink
_nb_locations * 2 +
// The edges from the source to the entrances and from the exists
// frame to the sink
_nb_locations * 2 +
// The edges from the source to the entrances and from the exists
- // to the sink (in every time frames but the first for the
source,
- // and last for the exits)
+ // to the sink (in every time frames but the first for the
+ //
entrances,
and last for the exits)
(_nb_time_steps - 1) * (nb_exits + nb_entrances) +
(_nb_time_steps - 1) * (nb_exits + nb_entrances) +
- // The edges for the motions, between every pair of successive
- // frames
+ // The edges for the motions, between every successive frames
(_nb_time_steps - 1) * nb_motions +
// The edges inside the duplicated nodes
_nb_locations * _nb_time_steps;
(_nb_time_steps - 1) * nb_motions +
// The edges inside the duplicated nodes
_nb_locations * _nb_time_steps;
@@
-99,13
+106,13
@@
void Tracker::build_graph() {
_edge_lengths = new scalar_t[nb_edges];
// We put the in-node edges first, since these are the ones whose
_edge_lengths = new scalar_t[nb_edges];
// We put the in-node edges first, since these are the ones whose
- // lengths we will have to
set later, according to the detection
- // scores
+ // lengths we will have to
change before tracking, according to the
+ //
detection
scores
for(int t = 0; t < _nb_time_steps; t++) {
for(int l = 0; l < _nb_locations; l++) {
for(int t = 0; t < _nb_time_steps; t++) {
for(int l = 0; l < _nb_locations; l++) {
- node_from[e] =
1 + (2 * (t + 0) + 0) * _nb_locations + l
;
- node_to[e] =
1 + (2 * (t + 0) + 1) * _nb_locations + l
;
+ node_from[e] =
early_pair_node(t, l)
;
+ node_to[e] =
late_pair_node(t, l)
;
e++;
}
}
e++;
}
}
@@
-120,15
+127,15
@@
void Tracker::build_graph() {
for(int t = 0; t < _nb_time_steps; t++) {
for(int l = 0; l < _nb_locations; l++) {
if(t == _nb_time_steps - 1) {
for(int t = 0; t < _nb_time_steps; t++) {
for(int l = 0; l < _nb_locations; l++) {
if(t == _nb_time_steps - 1) {
- node_from[e] =
1 + (2 * (t + 0) + 1) * _nb_locations + l
;
+ node_from[e] =
late_pair_node(t, l)
;
node_to[e] = sink;
_edge_lengths[e] = 0.0;
e++;
} else {
for(int k = 0; k < _nb_locations; k++) {
if(allowed_motion[l][k]) {
node_to[e] = sink;
_edge_lengths[e] = 0.0;
e++;
} else {
for(int k = 0; k < _nb_locations; k++) {
if(allowed_motion[l][k]) {
- node_from[e] =
1 + (2 * (t + 0) + 1) * _nb_locations + l
;
- node_to[e] =
1 + (2 * (t + 1) + 0) * _nb_locations + k
;
+ node_from[e] =
late_pair_node(t, l)
;
+ node_to[e] =
early_pair_node(t+1, k)
;
_edge_lengths[e] = 0.0;
e++;
}
_edge_lengths[e] = 0.0;
e++;
}
@@
-141,12
+148,12
@@
void Tracker::build_graph() {
for(int l = 0; l < _nb_locations; l++) {
if(t > 0 && entrances[l]) {
node_from[e] = source;
for(int l = 0; l < _nb_locations; l++) {
if(t > 0 && entrances[l]) {
node_from[e] = source;
- node_to[e] =
1 + (2 * (t + 0) + 0) * _nb_locations + l
;
+ node_to[e] =
early_pair_node(t, l)
;
_edge_lengths[e] = 0.0;
e++;
}
if(t < _nb_time_steps - 1 && exits[l]) {
_edge_lengths[e] = 0.0;
e++;
}
if(t < _nb_time_steps - 1 && exits[l]) {
- node_from[e] =
1 + (2 * (t + 0) + 1) * _nb_locations + l
;
+ node_from[e] =
late_pair_node(t, l)
;
node_to[e] = sink;
_edge_lengths[e] = 0.0;
e++;
node_to[e] = sink;
_edge_lengths[e] = 0.0;
e++;
@@
-166,7
+173,7
@@
void Tracker::print_graph_dot(ostream *os) {
int e = 0;
for(int t = 0; t < _nb_time_steps; t++) {
for(int l = 0; l < _nb_locations; l++) {
int e = 0;
for(int t = 0; t < _nb_time_steps; t++) {
for(int l = 0; l < _nb_locations; l++) {
- _edge_lengths[e++] = - detection_score[t][l];
+ _edge_lengths[e++] = - detection_score
s
[t][l];
}
}
_graph->print_dot(os);
}
}
_graph->print_dot(os);
@@
-176,7
+183,7
@@
void Tracker::track() {
int e = 0;
for(int t = 0; t < _nb_time_steps; t++) {
for(int l = 0; l < _nb_locations; l++) {
int e = 0;
for(int t = 0; t < _nb_time_steps; t++) {
for(int l = 0; l < _nb_locations; l++) {
- _edge_lengths[e++] = - detection_score[t][l];
+ _edge_lengths[e++] = - detection_score
s
[t][l];
}
}
}
}
@@
-211,6
+218,6
@@
int Tracker::trajectory_duration(int k) {
return (_graph->paths[k]->nb_nodes - 2) / 2;
}
return (_graph->paths[k]->nb_nodes - 2) / 2;
}
-int Tracker::trajectory_location(int k, int time) {
- return (_graph->paths[k]->nodes[2 * time + 1] - 1) % _nb_locations;
+int Tracker::trajectory_location(int k, int time
_from_entry
) {
+ return (_graph->paths[k]->nodes[2 * time
_from_entry
+ 1] - 1) % _nb_locations;
}
}