11void KalmanTracker::init_kf(
16 kf = KalmanFilter(stateNum, measureNum, 0);
18 measurement = Mat::zeros(measureNum, 1, CV_32F);
20 kf.transitionMatrix = (Mat_<float>(7, 7) << 1, 0, 0, 0, 1, 0, 0,
29 setIdentity(kf.measurementMatrix);
30 setIdentity(kf.processNoiseCov, Scalar::all(1e-1));
31 setIdentity(kf.measurementNoiseCov, Scalar::all(1e-4));
32 setIdentity(kf.errorCovPost, Scalar::all(1e-2));
35 kf.statePost.at<
float>(0, 0) = stateMat.x + stateMat.width / 2;
36 kf.statePost.at<
float>(1, 0) = stateMat.y + stateMat.height / 2;
37 kf.statePost.at<
float>(2, 0) = stateMat.area();
38 kf.statePost.at<
float>(3, 0) = stateMat.width / stateMat.height;
52 StateType predictBox =
get_rect_xysr(p.at<
float>(0, 0), p.at<
float>(1, 0), p.at<
float>(2, 0), p.at<
float>(3, 0));
54 m_history.push_back(predictBox);
55 return m_history.back();
63 StateType predictBox =
get_rect_xysr(p.at<
float>(0, 0), p.at<
float>(1, 0), p.at<
float>(2, 0), p.at<
float>(3, 0));
78 measurement.at<
float>(0, 0) = stateMat.x + stateMat.width / 2;
79 measurement.at<
float>(1, 0) = stateMat.y + stateMat.height / 2;
80 measurement.at<
float>(2, 0) = stateMat.area();
81 measurement.at<
float>(3, 0) = stateMat.width / stateMat.height;
84 kf.correct(measurement);
95 return get_rect_xysr(s.at<
float>(0, 0), s.at<
float>(1, 0), s.at<
float>(2, 0), s.at<
float>(3, 0));
105 float w = sqrt(s * r);
107 float x = (cx - w / 2);
108 float y = (cy - h / 2);
void update(StateType stateMat)
StateType get_rect_xysr(float cx, float cy, float s, float r)