0

我有一个图像,我想通过高斯混合模型估计输入图像的颜色分布,我怎么能用 Matlab 做到这一点?

myImage = imread('Jellyfish.jpg');

gmdistribution.fit(X,k)对我不起作用,因为 X 必须是 2D 矩阵而 myImage 是 3D 矩阵,使用时出现此错误gmdistribution.fit(myImage,10):X 必须是数字 2-D 矩阵。

当我使用gmdistribution.fit(myImage(:,:,1),10)图像的红色时,我收到此错误:

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] =...

我想将其用于使用高斯混合模型的图像分割。如果您有任何想法,请帮助我。

4

1 回答 1

0

就这样称呼它

gmdistribution.fit(single(myImage(:,:,1)),10)

关键是默认情况下 RGB 图像作为整数元素数组加载。你说这个函数不能接受整数元素 - 它需要单双(浮点数据类型)。您可以通过显式类型转换来做到这一点。

于 2014-11-28T15:27:28.833 回答