我有一个图像,我想通过高斯混合模型估计输入图像的颜色分布,我怎么能用Matlab做到?
myImage = imread('Jellyfish.jpg');
gmdistribution.fit(X,k)
对我不起作用,因为X必须是2D Matrix而myImage是3D Matrix,我在使用gmdistribution.fit(myImage,10)
时会收到此错误:
X必须是数字2-D矩阵。
当我使用gmdistribution.fit(myImage(:,:,1),10)
用于Image的红色时出现此错误:
Error using var (line 59)
First argument must be single or double.
Error in gmdistribution.fit (line 133)
varX = var(X);
当我使用时:gmdistribution.fit(single(myImage(:,:,1)),10)
我给出了这个错误:
Error using gmcluster (line 180)
Ill-conditioned covariance created at iteration 2.
Error in gmdistribution.fit (line 174)
[S,NlogL,optimInfo] =...
我想用它来进行使用高斯混合模型的图像分割。如果您有任何想法,请帮助我。
答案 0 :(得分:0)
就这样称呼它
gmdistribution.fit(single(myImage(:,:,1)),10)
重点是默认情况下RGB图像作为整数元素的数组加载。你说这个函数不能接受整数元素 - 它需要单个double(浮点数据类型)。您可以通过显式类型转换来完成此操作。