直方图的OpenCV高斯混合模型

时间:2015-06-25 11:45:24

标签: opencv

给定直方图我想训练高斯混合模型:

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个高斯手段。

1 个答案:

答案 0 :(得分:0)

要计算高斯混合模型,请使用实际图像数据,而不是上述代码中预期的直方图。