⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gmm.m

📁 一个在matlab环境下编写的采用expectation maximization方法计算高斯混合模型的程序。
💻 M
字号:
function [theta classImage] = gmm(mu, sigma2, px, originImage)
[R C] = size(originImage);
tempImage = originImage';
intensity = tempImage(:)';
intensity = double(intensity);

[sizeR sizeC] = size(mu);

pxy = R*C;
for i = 1:sizeC
    pxy1(i,1:(R*C)) = 0;
end
distance = 1;
while distance > 0.1 || distance < -0.1
    %Expectation step
    for i = 1:(R*C)
        for j = 1:sizeC
            pxy1(j,i) = eStep(j, intensity(i), mu, sigma2, px);            
        end
        %if (i == (221-1)*C + 497)
        %        intensityfortest = intensity(i)
        %        pxy1fortest = pxy1(:,i)
        %        mufortest = mu(:)
        %end
    end

    %Maximization step
    for i = 1:sizeC
        mu(i) = estimateMU(pxy1, i, intensity);
    end
    for i = 1:sizeC
        sigma2(i) = estimateZIGMA2(pxy1, i, intensity, mu);
    end
    for i = 1:sizeC
        px(i) = estimatePX(pxy1, i, sizeC);
    end    
    temp = pxy - pxy1;
    tempList = [];
    for i = 1:sizeC
        tempList = [tempList max(temp(i,:))];
    end
    distance = max (tempList);
    pxy = pxy1;
end

theta = [mu sigma2 px];

%crude classify image
classImage(1:R,1:C) = 0;
for i = 1:R
    for j = 1:C
        [y x] = max( pxy(:,(i-1)*C+j));
        classImage(i,j) = x;
    end
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -