FCM算法分割图像 1
clc
clear
close all
%% create samples:
img = imread(‘1.jpg’); %img为uint8类型的
subplot(1,2,1),imshow(img,[])
data = double(img(😃); %将img转换成double类型的,用data表示,data是一个列数组,只有一列
%
cluster_n = 4;%分类总数
iter = 6;%迭代次数
m = 2;%m属于(1到无穷大)本文选m=2
num_data = size(data,1);%样本个数
num_d = size(data,2);%样本维度
%–初始化隶属度u,条件是每一列和为1
U = rand(cluster_n,num_data);
col_sum = sum(U);
col_sum(ones(cluster_n,1)😅;
U = U./col_sum(ones(cluster_n,1)😅;
%% 循环–规定迭代次数作为结束条件
for i = 1:iter
%更新c
for j = 1:cluster_n
u_ij_m = U(j,:).^m;
sum_u_ij = sum(u_ij_m);
sum_1d = u_ij_m./sum_u_ij;
c(j,:) = u_ij_m*data./sum_u_ij;
end
%-计算目标函数J
temp1 = zeros(cluster_n,num_data);
for j = 1:clus