#ifndef TRACKER_H
|
#define TRACKER_H
|
#include <vector>
|
|
#include "kalmfilter.h"
|
#include "track.h"
|
#include "../encoder_tools/model.h"
|
|
class NearNeighborDisMetric;
|
|
class tracker
|
{
|
public:
|
NearNeighborDisMetric* metric;
|
float max_iou_distance;
|
int max_age;
|
int n_init;
|
|
KalmFilter* kf;
|
|
int _next_idx;
|
public:
|
std::vector<std::shared_ptr<Track>> tracks;
|
tracker( /*NearNeighborDisMetric* metric,*/
|
float max_cosine_distance, int nn_budget,
|
float max_iou_distance = MAX_IOU_DISTANCE,
|
int max_age = MAX_AGE, int n_init = N_INIT);
|
|
~tracker();
|
void predict();
|
void update(const DETECTIONS& detections);
|
typedef DYNAMICM (tracker::* GATED_METRIC_FUNC)(
|
std::vector<std::shared_ptr<Track>>& tracks,
|
const DETECTIONS& dets,
|
const std::vector<int>& track_indices,
|
const std::vector<int>& detection_indices);
|
private:
|
void _match(const DETECTIONS& detections, TRACHER_MATCHD& res);
|
void _initiate_track(const DETECTION_ROW& detection);
|
public:
|
DYNAMICM gated_matric(
|
std::vector<std::shared_ptr<Track>>& tracks,
|
const DETECTIONS& dets,
|
const std::vector<int>& track_indices,
|
const std::vector<int>& detection_indices);
|
DYNAMICM iou_cost(
|
std::vector<std::shared_ptr<Track>>& tracks,
|
const DETECTIONS& dets,
|
const std::vector<int>& track_indices,
|
const std::vector<int>& detection_indices);
|
Eigen::VectorXf iou(DETECTBOX& bbox,
|
DETECTBOXSS &candidates);
|
};
|
|
#endif // TRACKER_H
|