static const std::string TAG = "MultiTracker";
static const cv::Size PREFERRED_SIZE = Size(64, 128);
-
static const double MaxCost = 100000;
-static const int MaxPatch = 5;
+static const double ProbThreshold = 0.05;
MultiTracker::MultiTracker(EngineWPtr e)
: engine(e)
ss = similarity(i, patch);
features.insert(features.end(), ss.begin(), ss.end());
}
- double prob = predictor->predict(4, features);
- return prob;
+ double prob = predictor->predict(Tracker::MaxPatch - 1, features); // TODO why is MaxPatch-1
+ if (prob > ProbThreshold)
+ return -log(prob);
+ else
+ return MaxCost;
}
static float calc_iou_ratio(const Detection& d1, const Detection& d2)
void MultiTracker::update(unsigned int total, const Detection* detections, const Mat& image)
{
+ // predict trackers, update trackers using kalman filter
+ for (auto t : trackers){
+ t->predict();
+ }
+
+ // match the trackers with the detections using linear sum assignment (hungarian)
int row = trackers.size();
int col = total;
Eigen::MatrixXi cost_matrix = Eigen::MatrixXi::Zero(row, col);