the sense that the family it computes eventually is globally optimal,
even if the computation is iterative.
-The MTPTracker class allows
+The MTPTracker is defined by
- (1) to define a spatial topology composed of
+ (1) a spatial topology composed of
- a number of locations
- the exits (a Boolean flag for each location and time step)
- (2) to define a number of time steps
+ (2) a number of time steps
- (3) to set for every location and time a detection score, which
- should stand for log(P(Y = 1 | X)/P(Y = 0 | X)) where Y is for
- the location occupancy and X the available observations.
+ (3) for every location and time a detection score, which should stand
+ for log(P(Y = 1 | X)/P(Y = 0 | X)) where Y is for the location
+ occupancy and X the available observations.
From this setting, it computes the best set of disjoint trajectories
consistent with the topology, which maximizes the overall detection
The MTPTracker is a wrapper around the MTPGraph class.
-From the defined the spatial topology and number of time steps, it
-builds a graph with one source, one sink, and two nodes per location
-and time. This structure ensures that the trajectories computed by the
+From the defined spatial topology and number of time steps, it builds
+a graph with one source, one sink, and two nodes per location and
+time. This structure ensures that the trajectories computed by the
MTPTracker will be node-disjoint, since the trajectories computed by
the MTPGraph are edge-disjoint.
The edges from the source or to the sink, or between these pairs of
nodes, are of length zero, and the edges between the two nodes of such
-a pair have lengths equal to the opposite of the corresponding
-detection scores.
+a pair have negative lengths, equal to the opposite of the
+corresponding detection scores.
The file mtp_example.cc gives a very simple usage example of the
MTPTracker class by setting the tracker parameters dynamically, and
The tracker data file for MTPTracker::read has the following format,
where L is the number of locations and T is the number of time steps:
----------------------------- snip snip -------------------------------
-int:L int:T
+ ---------------------------- snip snip -------------------------------
+ int:L int:T
-bool:allowed_motion_from_1_to_1 ... bool:allowed_motion_from_1_to_L
-...
-bool:allowed_motion_from_L_to_1 ... bool:allowed_motion_from_L_to_L
+ bool:allowed_motion_from_1_to_1 ... bool:allowed_motion_from_1_to_L
+ ...
+ bool:allowed_motion_from_L_to_1 ... bool:allowed_motion_from_L_to_L
-bool:entrance_1_1 ... bool:entrance_1_L
-...
-bool:entrance_T_1 ... bool:entrance_T_L
+ bool:entrance_1_1 ... bool:entrance_1_L
+ ...
+ bool:entrance_T_1 ... bool:entrance_T_L
-bool:exit_1_1 ... bool:exit_1_L
-...
-bool:exit_T_1 ... bool:exit_T_L
+ bool:exit_1_1 ... bool:exit_1_L
+ ...
+ bool:exit_T_1 ... bool:exit_T_L
-float:detection_score_1_1 ... float:detection_score_1_L
-...
-float:detection_score_T_1 ... float:detection_score_T_L
----------------------------- snip snip -------------------------------
+ float:detection_score_1_1 ... float:detection_score_1_L
+ ...
+ float:detection_score_T_1 ... float:detection_score_T_L
+ ---------------------------- snip snip -------------------------------
The method MTPTracker::write_trajectories writes first the number of
trajectories, followed by one line per trajectory with the following
structure
----------------------------- snip snip -------------------------------
-int:traj_number int:entrance_time int:duration float:score int:location_1 ... int:location_duration
----------------------------- snip snip -------------------------------
+ ---------------------------- snip snip -------------------------------
+ int:traj_number int:entrance_time int:duration float:score int:location_1 ... int:location_duration
+ ---------------------------- snip snip -------------------------------
--
François Fleuret