【问题标题】:Estimate the color distribution by Guassian mixture model通过高斯混合模型估计颜色分布
【发布时间】:2014-11-28 15:26:01
【问题描述】:

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

myImage = imread('Jellyfish.jpg');

gmdistribution.fit(X,k) 不适合我,因为 X 必须是 2D 矩阵,而 myImage 是 3D 矩阵,所以在使用 gmdistribution.fit(myImage,10) 时出现此错误: X 必须是数值二维矩阵。

当我将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] =...

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

【问题讨论】:

    标签: matlab gaussian image-segmentation estimation mixture-model


    【解决方案1】:

    就这样称呼吧

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

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

    【讨论】:

    • 我收到此错误:使用 gmcluster 时出错(第 180 行)迭代 2 时创建的病态协方差。
    • 好吧,我想,你的数据有问题。如果条件数太大(如果它是无限的,则矩阵是病态的)。你可以在这里阅读更多关于条件数的信息en.wikipedia.org/wiki/Condition_number
    猜你喜欢
    • 2020-05-06
    • 2012-09-11
    • 2021-09-30
    • 2023-03-24
    • 2014-01-09
    • 2012-05-08
    • 2016-09-16
    • 2021-01-04
    • 2018-08-08
    相关资源
    最近更新 更多