X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=src%2FMultiTracker.cpp;h=138657e9b8630c65110eb8e2b0e2f634dab1d452;hb=70532232dd98f31467eff7baaaff6e68f803bb45;hp=aef5e2e9f854d578044c5999f96e70c877d52f53;hpb=a80807eb35cc0ff70a9afdd6b7db2f38cb686683;p=trackerpp.git diff --git a/src/MultiTracker.cpp b/src/MultiTracker.cpp index aef5e2e..138657e 100644 --- a/src/MultiTracker.cpp +++ b/src/MultiTracker.cpp @@ -11,9 +11,8 @@ using namespace std; 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) @@ -74,8 +73,11 @@ double MultiTracker::distance(TrackerPtr tracker, const cv::Mat& image, const De 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) @@ -85,6 +87,12 @@ 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);