X-Git-Url: https://www.fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=blobdiff_plain;f=tracker.h;h=1c0e73075fbec03a7117fa0add0e307dc33d238e;hb=cdf649aeef318cc5c3dae231d9b1c16352d13515;hp=1811fb9f424f111e51092afbf97da2d0d8e629d6;hpb=8946d0df4263aa20a670cedd5d61f9709b858fca;p=mtp.git diff --git a/tracker.h b/tracker.h index 1811fb9..1c0e730 100644 --- a/tracker.h +++ b/tracker.h @@ -1,24 +1,34 @@ -/////////////////////////////////////////////////////////////////////////// -// This program is free software: you can redistribute it and/or modify // -// it under the terms of the version 3 of the GNU General Public License // -// as published by the Free Software Foundation. // -// // -// This program is distributed in the hope that it will be useful, but // -// WITHOUT ANY WARRANTY; without even the implied warranty of // -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // -// General Public License for more details. // -// // -// You should have received a copy of the GNU General Public License // -// along with this program. If not, see . // -// // -// Written by and Copyright (C) Francois Fleuret // -// Contact for comments & bug reports // -/////////////////////////////////////////////////////////////////////////// +/* + * mtp is the ``Multi Tracked Path'', an implementation of the + * k-shortest path algorithm for multi-target tracking. + * + * Copyright (c) 2012 Idiap Research Institute, http://www.idiap.ch/ + * Written by Francois Fleuret + * + * This file is part of mtp. + * + * mtp is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 3 as + * published by the Free Software Foundation. + * + * mtp is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + * License for more details. + * + * You should have received a copy of the GNU General Public License + * along with selector. If not, see . + * + */ #ifndef TRACKER_H #define TRACKER_H +#include + +using namespace std; + #include "misc.h" #include "mtp_graph.h" @@ -26,24 +36,49 @@ class Tracker { int _nb_locations, _nb_time_steps; scalar_t **_detection_score; int **_allowed_motion; + 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(); - void set_allowed_motion(int from_location, int to_location, int v); + 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); - void set_detection_score(int time, int location, scalar_t score); + // Compute the optimal set of trajectories void track(); + // 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