X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=blobdiff_plain;ds=inline;f=tracker.h;h=b56ac61898465358c30c1b3ab3f4f77e17c22ee6;hb=a0f008effb41b45dd5ae2d51ec98a59cce81c7c3;hp=d37e46adfebfa2b9f5880fe3a05549e2b4ea89eb;hpb=0f54e5005de0f05d4bc400f23181301eb40f469e;p=mtp.git diff --git a/tracker.h b/tracker.h index d37e46a..b56ac61 100644 --- a/tracker.h +++ b/tracker.h @@ -19,29 +19,60 @@ #ifndef TRACKER_H #define TRACKER_H +#include + +using namespace std; + #include "misc.h" #include "mtp_graph.h" class Tracker { int _nb_locations, _nb_time_steps; - MTPGraph *_graph; scalar_t **_detection_score; int **_allowed_motion; + int *_entrances, *_exits; + + MTPGraph *_graph; + scalar_t *_edge_lengths; + + int early_pair_node(int t, int l); + int late_pair_node(int t, int l); public: - Tracker(int nb_locations, int nb_time_steps); + + // The spatial structure + int **allowed_motion; + int *entrances, *exits; + + // The detection scores at each node + scalar_t **detection_scores; + + Tracker(); ~Tracker(); - void set_allowed_motion(int from_location, int to_location); - void set_detection_score(int location, int time, scalar_t score); - void make_graph(); + void allocate(int nb_time_steps, int nb_locations); + void free(); + + 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); + + // Compute the optimal set of trajectories void track(); + // Read-out of the optimal trajectories + int nb_trajectories(); - int trajectory_start_time(int k); - int trajectory_end_time(int k); - int trajectory_location(int k, int time); + scalar_t trajectory_score(int k); + int trajectory_entrance_time(int k); + int trajectory_duration(int k); + int trajectory_location(int k, int time_from_entry); }; #endif