X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=blobdiff_plain;f=tracker.h;h=b56ac61898465358c30c1b3ab3f4f77e17c22ee6;hb=8f7e0196dd3c89cb4e68732d6812a13d43bdfbc7;hp=9d3e018cfcf8f2fb807884c1ca6edc844155670c;hpb=c8a37f33eb29f651fed648a48918390f0da1eefb;p=mtp.git diff --git a/tracker.h b/tracker.h index 9d3e018..b56ac61 100644 --- a/tracker.h +++ b/tracker.h @@ -33,27 +33,35 @@ class Tracker { int *_entrances, *_exits; MTPGraph *_graph; - int *_edge_occupation; scalar_t *_edge_lengths; + + int early_pair_node(int t, int l); + int late_pair_node(int t, int l); + public: - Tracker(int nb_time_steps, int nb_locations); + + // The spatial structure + int **allowed_motion; + int *entrances, *exits; + + // The detection scores at each node + scalar_t **detection_scores; + + Tracker(); ~Tracker(); - // Define the spatial topology + void allocate(int nb_time_steps, int nb_locations); + void free(); - void set_allowed_motion(int from_location, int to_location, int v); - void set_as_entrance(int location, int v); - void set_as_exit(int location, int v); + void write(ostream *os); + void read(istream *is); + void write_trajectories(ostream *os); // Build or print the graph needed for the tracking per se void build_graph(); void print_graph_dot(ostream *os); - // Define the detection scores - - void set_detection_score(int time, int location, scalar_t score); - // Compute the optimal set of trajectories void track(); @@ -61,9 +69,10 @@ public: // Read-out of the optimal trajectories int nb_trajectories(); + scalar_t trajectory_score(int k); int trajectory_entrance_time(int k); int trajectory_duration(int k); - int trajectory_location(int k, int time); + int trajectory_location(int k, int time_from_entry); }; #endif