modified EM interface; updated tests & samples
This commit is contained in:
@@ -66,7 +66,6 @@ struct CV_EXPORTS CvMotionModel
|
||||
}
|
||||
|
||||
float low_pass_gain; // low pass gain
|
||||
cv::EM::Params em_params; // EM parameters
|
||||
};
|
||||
|
||||
// Mean Shift Tracker parameters for specifying use of HSV channel and CamShift parameters.
|
||||
@@ -109,7 +108,6 @@ struct CV_EXPORTS CvHybridTrackerParams
|
||||
float ms_tracker_weight;
|
||||
CvFeatureTrackerParams ft_params;
|
||||
CvMeanShiftTrackerParams ms_params;
|
||||
cv::EM::Params em_params;
|
||||
int motion_model;
|
||||
float low_pass_gain;
|
||||
};
|
||||
@@ -182,7 +180,6 @@ private:
|
||||
|
||||
CvMat* samples;
|
||||
CvMat* labels;
|
||||
cv::EM em_model;
|
||||
|
||||
Rect prev_window;
|
||||
Point2f prev_center;
|
||||
|
@@ -132,17 +132,6 @@ void CvHybridTracker::newTracker(Mat image, Rect selection) {
|
||||
mstracker->newTrackingWindow(image, selection);
|
||||
fttracker->newTrackingWindow(image, selection);
|
||||
|
||||
params.em_params.covs = NULL;
|
||||
params.em_params.means = NULL;
|
||||
params.em_params.probs = NULL;
|
||||
params.em_params.nclusters = 1;
|
||||
params.em_params.weights = NULL;
|
||||
params.em_params.covMatType = cv::EM::COV_MAT_SPHERICAL;
|
||||
params.em_params.startStep = cv::EM::START_AUTO_STEP;
|
||||
params.em_params.termCrit.maxCount = 10000;
|
||||
params.em_params.termCrit.epsilon = 0.001;
|
||||
params.em_params.termCrit.type = cv::TermCriteria::COUNT + cv::TermCriteria::EPS;
|
||||
|
||||
samples = cvCreateMat(2, 1, CV_32FC1);
|
||||
labels = cvCreateMat(2, 1, CV_32SC1);
|
||||
|
||||
@@ -222,12 +211,15 @@ void CvHybridTracker::updateTrackerWithEM(Mat image) {
|
||||
}
|
||||
|
||||
cv::Mat lbls;
|
||||
em_model.train(samples, cv::Mat(), params.em_params, &lbls);
|
||||
|
||||
EM em_model(1, EM::COV_MAT_SPHERICAL, TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 10000, 0.001));
|
||||
em_model.train(cvarrToMat(samples), lbls);
|
||||
if(labels)
|
||||
*labels = lbls;
|
||||
lbls.copyTo(cvarrToMat(labels));
|
||||
|
||||
curr_center.x = (float)em_model.getMeans().at<double> (0, 0);
|
||||
curr_center.y = (float)em_model.getMeans().at<double> (0, 1);
|
||||
Mat em_means = em_model.get<Mat>("means");
|
||||
curr_center.x = (float)em_means.at<float>(0, 0);
|
||||
curr_center.y = (float)em_means.at<float>(0, 1);
|
||||
}
|
||||
|
||||
void CvHybridTracker::updateTrackerWithLowPassFilter(Mat image) {
|
||||
|
Reference in New Issue
Block a user