X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=blobdiff_plain;f=tracker.cc;h=d3397cf4736a9c14c5aaa1b3d8bf5335f267a1ed;hb=9dba69873c4b22f885a70740df7f57b0d6a37fd6;hp=c66c89de179e41aedba54ebafe37b1b01903da0e;hpb=9bbc3775491edae5bb92679ecca0f525877371f5;p=mtp.git diff --git a/tracker.cc b/tracker.cc index c66c89d..d3397cf 100644 --- a/tracker.cc +++ b/tracker.cc @@ -59,6 +59,14 @@ Tracker::~Tracker() { 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() { // Delete the existing graph if there was one delete[] _edge_lengths; @@ -98,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 - // 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++) { - 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++; } } @@ -119,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) { - 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_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++; } @@ -140,12 +148,12 @@ void Tracker::build_graph() { 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]) { - 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++;