• 大小: 5KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-12
  • 语言: Matlab
  • 标签: FCM算法  

资源简介

模糊C均值聚类算法增加了隶属度矩阵,通过计算点到各聚类中心的欧式距离来判断属于该类的可能性。

资源截图

代码片段和文件信息

% 模糊C均值聚类算法如下

% 1) 从n个数据集data = ( x1  x2  ... xn ) 中,确定聚类域个数c ,随机选取初始的

% 聚类中心集V0 = ( v1  v2 ... vc ) ,确定隶属度矩阵U的加权指数expo 、最大迭代次数max_iter、终止误差ε> 0。


% 2) 重复下列操作直到‖Vb+1 - Vb ‖ <ε为止 b为当前

% 迭代次数。

%     a) 使用当前的Vb 计算隶属度矩阵Ub。

%     b) 使用当前的Ub 计算聚类中心Vb+1。
%%%%%%%模糊模糊C均值聚类%%%%%%%
clear all;
figure(1);
im=imread(‘803.bmp‘);   %待聚类图像
% rgb=imresize(im0.5);
% Ag=Ag(1:4801:640:);
hsi=rgb2hsi(im);
subplot(211);
imshow(im);
title(‘聚类原图像‘);
% imagesc(rgb[0 1]); colormap(gray);
% Ag=double(rgb);

%%%%-------分离lab通道------
h=hsi(::1);

[m n]=size(h);

% %%%%--------将l通道的像素转换成一列----

% labAg11=im2col(labAg1[m n]‘distinct‘);

%%%%----——确定样本点数和聚类中心个数————
data_ng = m*n;
cluster_ng=5;     %确定聚类个数

expo=2;      % 隶属度矩阵U的指数
max_iter =100;  % 最大迭代次数
min_impro = 1e-6;  % 隶属度最小变化量迭代终止条件
%%%--------初始化聚类中心----------
% center=[0.80.5950.350.190.130.05];  %初始化聚类中心
center=[0.80.590.350.190.002];  %初始化聚类中心
dist=zeros(mncluster_ng);
u=zeros(mncluster_ng);
J=zeros(1001);
for k=1:cluster_ng
    for i=1:m
        for j=1:n
         dist(ijk)=sqrt((h(ij)-center(k))^2);
        end
    end
end
for k=1:cluster_ng
    for i=1:m
        for j=1:n
            u(ijk)=(dist(ijk)^(-2/(expo-1)))/sum(dist(ij:).^(-2/(expo-1)));
        end
    end
end
J(1)=sum(sum(sum(u.^2.*(dist.^2))));

t=2;
while t    for k=1:cluster_ng
        center(k)=sum(sum(u(::k).^2.*h))/sum(sum(u(::k).^2));
    end
    for k=1:cluster_ng
        for i=1:m
             for j=1:n
                dist(ijk)=sqrt((h(ij)-center(k))^2);
             end
        end
    end
    for k=1:cluster_ng
        for i=1:m
            for j=1:n
                u(ijk)=(dist(ijk)^(-2/(expo-1)))/sum(dist(ij:).^(-2/(expo-1)));
            end
        end
    end
    J(t)=sum(sum(sum(u.^2.*dist.^2))); 
    e=abs(J(t)-J(t-1))
    if abs(J(t)-J(t-1))        break;
    end
    t=t+1;
end
    
% dist=distfcm(center‘labAg11);  %计算像素点到聚类中心的距离
% tmp = dist.^(-2/(expo-1));
% Ug = tmp./(ones(cluster_ng 1)*sum(tmp));  %初始化隶属度矩阵
% o

评论

共有 条评论