#ifndef LINEAR_ASSIGNMENT_H #define LINEAR_ASSIGNMENT_H #include "../encoder_tools/dataType.h" #include "tracker.h" #define INFTY_COST 1e5 class tracker; class linear_assignment { linear_assignment(); linear_assignment(const linear_assignment& ); linear_assignment& operator=(const linear_assignment&); static linear_assignment* instance; public: static linear_assignment* getInstance(); ~linear_assignment(); TRACHER_MATCHD matching_cascade(tracker* distance_metric, tracker::GATED_METRIC_FUNC distance_metric_func, float max_distance, int cascade_depth, std::vector>& tracks, const DETECTIONS& detections, std::vector &track_indices, std::vector detection_indices = std::vector()); TRACHER_MATCHD min_cost_matching( tracker* distance_metric, tracker::GATED_METRIC_FUNC distance_metric_func, float max_distance, std::vector>& tracks, const DETECTIONS& detections, std::vector& track_indices, std::vector& detection_indices); DYNAMICM gate_cost_matrix( KalmFilter* kf, DYNAMICM& cost_matrix, std::vector>& tracks, const DETECTIONS& detections, const std::vector& track_indices, const std::vector& detection_indices, float gated_cost = INFTY_COST, bool only_position = false); }; #endif // LINEAR_ASSIGNMENT_H