给定直方图我想训练高斯混合模型:
int calcGMMThreshold(cv::Mat & hist, cv::Mat & labels){
cv::Mat samples(hist.rows,2, CV_32FC1); // for building 2 dim samples
// output variables
cv::Mat probs, log_likelihoods;
// building 2 dimensional Mat -->[value][#value]
for(int i = 0; i<hist.rows; i++)
{
samples.at<float>(i,0) = (float)i;
samples.at<float>(i,1) = hist.at<float>(i);
}
assert(samples.cols == 2);
assert(samples.rows == 256);
///set up gmm
//gmm object with 3 gmms
cv::EM gmm(3);
/*train gmms*/
gmm.train(samples, log_likelihoods, labels, probs);
}
当我plot带有标签的直方图时,看起来我的gmms将绝对值分开而不是二维输入。
我希望在直方图的每个峰值处有3个高斯手段。
答案 0 :(得分:0)
要计算高斯混合模型,请使用实际图像数据,而不是上述代码中预期的直方图。