资源简介
模糊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
- 上一篇:图像评价程序 熵的计算
- 下一篇:最速下降法的MATLAB程序
评论
共有 条评论