function fcmTest(file, cluster_n)
% fcmTest
% fcmTest(file, cluter_n) segments a image named file using the algorithm
% FCM.
% [in]
% file: the path of the image to be clustered.
% cluster_n: the number of cluster for FCM.
eval(['info=imfinfo(''',file, ''');']);
switch info.ColorType
case 'truecolor'
eval(['RGB=imread(''',file, ''');']);
% [X, map] = rgb2ind(RGB, 256);
I = rgb2gray(RGB);
clear RGB;
case 'indexed'
eval(['[X, map]=imread(''',file, ''');']);
I = ind2gray(X, map);
clear X;
case 'grayscale'
eval(['I=imread(''',file, ''');']);
end;
I = im2double(I);
filename = file(1 : find(file=='.')-1);
data = reshape(I, numel(I), 1);
tic
[center, U, obj_fcn]=fcm(data, cluster_n);
elapsedtime = toc;
%eval(['save(', filename, int2str(cluster_n),'.mat'', ''center'', ''U'', ''obj_fcn'', ''elapsedtime'');']);
fprintf('elapsedtime = %d', elapsedtime);
maxU=max(U);
temp = sort(center, 'ascend');
for n = 1:cluster_n;
eval(['cluster',int2str(n), '_index = find(U(', int2str(n), ',:) == maxU);']);
index = find(temp == center(n));
switch index
case 1
color_class = 0;
case cluster_n
color_class = 255;
otherwise
color_class = fix(255*(index-1)/(cluster_n-1));
end
eval(['I(cluster',int2str(n), '_index(:))=', int2str(color_class),';']);
end;
filename = file(1:find(file=='.')-1);
I = mat2gray(I);
%eval(['imwrite(I,', filename,'_seg', int2str(cluster_n), '.bmp'');']);
imwrite(I, 'temp\tu2_4.bmp','bmp');
imview(I);
fcmTest.zip_Fuzzy C Means_fcmtest_模糊C-均值聚类
版权申诉
10 浏览量
2022-07-15
03:46:00
上传
评论
收藏 838B ZIP 举报
JaniceLu
- 粉丝: 78
- 资源: 1万+