#ifndef TRACKER_H
|
#define TRACKER_H
|
#include <vector>
|
|
#include "kalmfilter.h"
|
#include "track.h"
|
#include "model.h"
|
// #include "../utils/config_util.h"
|
#include "feature_util.h"
|
#include "../utils/geometry_util.h"
|
#include "../std_target.h"
|
|
typedef int (*fn)(void* args, const int sender_chan, const char *recver, const char *data, const int len);
|
|
class NearNeighborDisMetric;
|
|
using CURRENT_ID_REG = std::pair<uint64_t, std::vector<bool>>;
|
|
class tracker
|
{
|
public:
|
NearNeighborDisMetric* metric;
|
float max_iou_distance;
|
int max_age;
|
int n_init;
|
|
KalmFilter* kf;
|
|
uint64_t _next_idx;
|
|
private:
|
// bool P_in_Polygon(SPoint p, IntersectReg polygon);
|
// std::vector<uint64_t> candidate_track_ids; // 候选列表,也就是新加入的人员信息:id、 track信息(特征信息、 坐标信息)
|
// std::vector<uint64_t> current_track_ids; // 跟踪的id 信息
|
|
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(std::vector<std::shared_ptr<tracker>> &CAMERAS_VCT, const DETECTIONS& detections, int cam_id, char* img_time);
|
|
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, int cam_id, char* img_time);
|
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 cos_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
|