• 大小: 2.45MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-09-13
  • 语言: Matlab
  • 标签: FCM  图像分割  

资源简介

使用模糊C均值聚类进行图像分割,使用Matlab自带的fcm函数。包含源代码和仿真报告

资源截图

代码片段和文件信息


clear allclose allclc

n_cluster = 6;      % 目标分类数
max_iter = 50;     % 最大迭代次数
d_U = 1e-5;         % 隶属度变化阈值
d_C = 1e-5;         % 类中心变化阈值

img = im2double(imread(‘image_2.jpg‘));
figure; image(img);
title(‘原始图像‘)
M = size(img1);
N = size(img2);

imgdata = zeros(M*N3);
for i = 1:N
    imgdata((i-1)*M+1:i*M:) = img(:i:);
end

%% 使用第一类隶属度约束
[centerUobj_fcn] = fcm(imgdata n_cluster);   % 使用matlab自带的聚类函数获得聚类中心
U = zeros(n_clusterM*N);
iter = 1;
while iter < max_iter
    dist = distfcm(center imgdata);        % 计算距离矩阵
    tmp = dist.^(-2);
    U_new = tmp./(ones(n_cluster 1)*sum(tmp)); % 新的隶属度矩阵
    mf = U_new.^2;                              % 隶属度矩阵进行指数运算
    center_new = mf*imgdata./((ones(size(imgdata 2) 1)*sum(mf‘))‘); % 新聚类中心

    err_U = U - U_new;
    err_C = center - center_new;
    U = U_new;
    center = center_new;
    
    if(max(abs(err_U(:))) < d_U ||  max(abs(err_C(:))) < d_C)
        break;
    end
    iter = iter + 1
end

color = [1  0  1;  % 洋红
    0  1  0;  % 绿
    0  0  1;  % 蓝
    1  1  0;  %黄
    1 1/2 0;  % 橘黄
    0  1  1;  % 青蓝
    2/3 0 1;  % 天蓝
    1  0  0;  % 红
    0.5 0 0;  % 深红
    0.5  0.5  0.5;  % 灰
    0 0 0;  %黑
    1  1  1]; % 白 

[maxUC] = max(U);
img_cluster = zeros(MN3);
for i = 1:M
    for j = 1:N
        indx = i + (j-1)*M;
        img_cluster(ij:) = color(C(indx):);
    end
end
figure; image(img_cluster)
title(‘聚类结果‘)



% 使用第二类隶属度约束
% [centerUobj_fcn] = fcm(imgdata n_cluster);
% U = zeros(n_clusterM*N);
% iter = 1;
% while iter < max_iter
%     dist = distfcm(center imgdata);        % 计算距离矩阵
%     tmp = dist.^(-2);
%     min(tmp(:))
%     U_new = M*N*tmp./sum(tmp(:)); % 新的隶属度矩阵
%     mf = U_new.^2;                              % 隶属度矩阵进行指数运算
%     center_new = mf*imgdata./((ones(size(imgdata 2) 1)*sum(mf‘))‘); % 新聚类中心

%     err_U = U - U_new;
%     err_C = center - center_new;
%     U = U_new;
%     center = center_new + 0.0001;
%     
% %     if(max(abs(err_U(:))) < d_U ||  max(abs(err_C(:))) < d_C)
%     if(max(abs(err_U(:))) < d_U)
%         break;
%     end
%     iter = iter + 1
% end

% color = [1  0  1;  % 洋红
%     0  1  0;  % 绿
%     0  0  1;  % 蓝
%     1  1  0;  %黄
%     1 1/2 0;  % 橘黄
%     2/3 0 1;  % 天蓝
%     1  0  0;  % 红
%     0  1  1;  % 青蓝
%     0.5 0 0;  % 深红
%     0.5  0.5  0.5;  % 灰
%     0 0 0;  %黑
%     1  1  1]; % 白 

% [maxUC] = max(U);
% img_cluster = zeros(MN3);
% for i = 1:M
%     for j = 1:N
%         indx = i + (j-1)*M;
%         img_cluster(ij:) = color(C(indx):);
%     end
% end
% figure; image(img_cluster)
% title(‘聚类结果‘)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        2854  2013-04-02 20:39  Main.m
     文件      195980  2013-03-28 16:11  image.jpg
     文件      180224  2013-03-30 21:47  image_1.jpg
     文件      263386  2013-03-30 21:48  image_2.jpg
     文件      262144  2013-03-30 21:48  image_3.jpg
     文件      180224  2013-03-30 21:49  image_4.jpg
     文件      229376  2013-03-30 21:49  image_5.jpg
     文件      763109  2013-03-30 21:39  image_6.jpg
     文件      638464  2014-04-08 21:08  模糊C均值聚类仿真20130402.doc

评论

共有 条评论