X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=src%2FMultiTracker.cpp;h=547a1955f3a2b3cc8792179325227669a2094e54;hb=be96459d3e098508417f07ed0e1952b6e05215c4;hp=aef5e2e9f854d578044c5999f96e70c877d52f53;hpb=a80807eb35cc0ff70a9afdd6b7db2f38cb686683;p=trackerpp.git diff --git a/src/MultiTracker.cpp b/src/MultiTracker.cpp index aef5e2e..547a195 100644 --- a/src/MultiTracker.cpp +++ b/src/MultiTracker.cpp @@ -14,6 +14,7 @@ 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 +75,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(MaxPatch - 1, features); // TODO ??? + if (prob > ProbThreshold) + return -log(prob); + else + return MaxCost; } static float calc_iou_ratio(const Detection& d1, const Detection& d2) @@ -85,6 +89,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 int row = trackers.size(); int col = total; Eigen::MatrixXi cost_matrix = Eigen::MatrixXi::Zero(row, col);