added cv::EM, moved CvEM to legacy, added/updated tests

This commit is contained in:
Maria Dimashova
2012-04-06 09:26:11 +00:00
parent cdc5bbc0bc
commit 85fa0e7763
13 changed files with 1726 additions and 1449 deletions

View File

@@ -66,7 +66,7 @@ struct CV_EXPORTS CvMotionModel
}
float low_pass_gain; // low pass gain
CvEMParams em_params; // EM parameters
cv::EM::Params em_params; // EM parameters
};
// Mean Shift Tracker parameters for specifying use of HSV channel and CamShift parameters.
@@ -109,7 +109,7 @@ struct CV_EXPORTS CvHybridTrackerParams
float ms_tracker_weight;
CvFeatureTrackerParams ft_params;
CvMeanShiftTrackerParams ms_params;
CvEMParams em_params;
cv::EM::Params em_params;
int motion_model;
float low_pass_gain;
};
@@ -182,7 +182,7 @@ private:
CvMat* samples;
CvMat* labels;
CvEM em_model;
cv::EM em_model;
Rect prev_window;
Point2f prev_center;

View File

@@ -137,11 +137,11 @@ void CvHybridTracker::newTracker(Mat image, Rect selection) {
params.em_params.probs = NULL;
params.em_params.nclusters = 1;
params.em_params.weights = NULL;
params.em_params.cov_mat_type = CvEM::COV_MAT_SPHERICAL;
params.em_params.start_step = CvEM::START_AUTO_STEP;
params.em_params.term_crit.max_iter = 10000;
params.em_params.term_crit.epsilon = 0.001;
params.em_params.term_crit.type = CV_TERMCRIT_ITER | CV_TERMCRIT_EPS;
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);
@@ -221,7 +221,10 @@ void CvHybridTracker::updateTrackerWithEM(Mat image) {
count++;
}
em_model.train(samples, 0, params.em_params, labels);
cv::Mat lbls;
em_model.train(samples, cv::Mat(), params.em_params, &lbls);
if(labels)
*labels = lbls;
curr_center.x = (float)em_model.getMeans().at<double> (0, 0);
curr_center.y = (float)em_model.getMeans().at<double> (0, 1);