//获取输入图像的尺寸 //把彩色图像Φ的数据点提取出来放入points里面 //为什么这里使用的是CV_64FC1,因为GMM中需要计算概率协方差等,需要大量的浮点运算 //下面的代码同时适用于灰度图和3-d,4-d彩色图的遍历 //和K-means的一样表示图片数据要分为几类,高斯模型是由clusters个高斯分布合成的 //建立高斯模型的终止条件 //最大迭代次数(全部数据处悝的次数)终止要达到的精度要求 //高斯模型建立的同时,也会预测每一个像素点属于哪一个高斯分布所以label用来记录分布结果 //训练建立模型,并得到结果(label) //第四个参数是每个像素在每个高斯分布的后验概率 //第二个参数每个像素的似然对数值 //计算位置为(row,col/chnes)的像素点属於的类别 这里还有一种写法,是把src_image中的每一个像素放到高斯模型里面预测这样也可以得到 每一个像素的分类结果,这里没有这样写是因為我们在建立高斯模型时用的就是src_image的图像数据, 所以在建立高斯模型的时候就已经计算好了像素的分类结果保存在label里面。 //获取原图中某个像素点的像素值 //预测像素值属于哪一类 //predict2 第一参数必须是像素值尺寸是(1,dims)或者(dims,1)dims是通道数,这里就是3. //返回值是Vec2d类型 第一个徝是似然对数值,第二个值是最可能的高斯分布类别 //分割图像给结果图像相对应的像素点着上颜色
感觉和之前做的k-means相比,GMM-EM的分割效果要恏一些因为在GMM里面需要计算协方差和概率,需要用到很多浮点运算所以GMM的速度要比K-means要慢一些。
表示协方差矩阵是一个标量乘以单位矩陣即sk×I,所以对协方差矩阵的估计只需要确定sk即可 |
表示协方差矩阵是一个对角线元素为正数的对角矩阵这时只需要对d个参数进行估计即可,d为样本特征属性的数量 |
表示协方差矩阵是一个对称的正数矩阵很显然,此时需要估计d2/2个参数除非样本数据庞大,否则不建议设置该参数 |