• 大小: 1KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-24
  • 语言: 其他
  • 标签:

资源简介

用FCM算法实现图像分割(图像源可以是灰度、索引和RGB图像

资源截图

代码片段和文件信息

function fcmapp(file cluster_n)
% FCMAPP
% fcmapp(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‘);
imview(I);


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1625  2005-09-20 17:22  fcmapp.m

----------- ---------  ---------- -----  ----

                 1843                    2


评论

共有 条评论

相关资源