資源簡介
使用模糊C均值聚類進(jìn)行圖像分割,使用Matlab自帶的fcm函數(shù)。包含源代碼和仿真報告

代碼片段和文件信息
clear?allclose?allclc
n_cluster?=?6;??????%?目標(biāo)分類數(shù)
max_iter?=?50;?????%?最大迭代次數(shù)
d_U?=?1e-5;?????????%?隸屬度變化閾值
d_C?=?1e-5;?????????%?類中心變化閾值
img?=?im2double(imread(‘image_2.jpg‘));
figure;?image(img);
title(‘原始圖像‘)
M?=?size(img1);
N?=?size(img2);
imgdata?=?zeros(M*N3);
for?i?=?1:N
????imgdata((i-1)*M+1:i*M:)?=?img(:i:);
end
%%?使用第一類隸屬度約束
[centerUobj_fcn]?=?fcm(imgdata?n_cluster);???%?使用matlab自帶的聚類函數(shù)獲得聚類中心
U?=?zeros(n_clusterM*N);
iter?=?1;
while?iter?????dist?=?distfcm(center?imgdata);????????%?計算距離矩陣
????tmp?=?dist.^(-2);
????U_new?=?tmp./(ones(n_cluster?1)*sum(tmp)); %?新的隸屬度矩陣
????mf?=?U_new.^2;??????????????????????????????%?隸屬度矩陣進(jìn)行指數(shù)運算
????center_new?=?mf*imgdata./((ones(size(imgdata?2)?1)*sum(mf‘))‘);?%?新聚類中心
????err_U?=?U?-?U_new;
????err_C?=?center?-?center_new;
????U?=?U_new;
????center?=?center_new;
????
????if(max(abs(err_U(:)))?????????break;
????end
????iter?=?iter?+?1
end
color?=?[1? 0??1;? %?洋紅
????0? 1? 0;? %?綠
????0? 0? 1;? %?藍(lán)
????1? 1? 0;? %黃
????1 1/2 0;? %?橘黃
????0? 1? 1;? %?青藍(lán)
????2/3 0 1;??%?天藍(lán)
????1? 0? 0;? %?紅
????0.5 0 0;? %?深紅
????0.5??0.5??0.5;??%?灰
????0 0 0;? %黑
????1? 1? 1];?%?白?
[maxUC]?=?max(U);
img_cluster?=?zeros(MN3);
for?i?=?1:M
????for?j?=?1:N
????????indx?=?i?+?(j-1)*M;
????????img_cluster(ij:)?=?color(C(indx):);
????end
end
figure;?image(img_cluster)
title(‘聚類結(jié)果‘)
%?使用第二類隸屬度約束
%?[centerUobj_fcn]?=?fcm(imgdata?n_cluster);
%?U?=?zeros(n_clusterM*N);
%?iter?=?1;
%?while?iter?%?????dist?=?distfcm(center?imgdata);????????%?計算距離矩陣
%?????tmp?=?dist.^(-2);
%?????min(tmp(:))
%?????U_new?=?M*N*tmp./sum(tmp(:)); %?新的隸屬度矩陣
%?????mf?=?U_new.^2;??????????????????????????????%?隸屬度矩陣進(jìn)行指數(shù)運算
%?????center_new?=?mf*imgdata./((ones(size(imgdata?2)?1)*sum(mf‘))‘);?%?新聚類中心
%?
%?????err_U?=?U?-?U_new;
%?????err_C?=?center?-?center_new;
%?????U?=?U_new;
%?????center?=?center_new?+?0.0001;
%?????
%?%?????if(max(abs(err_U(:)))?%?????if(max(abs(err_U(:)))?%?????????break;
%?????end
%?????iter?=?iter?+?1
%?end
%?
%?color?=?[1? 0? 1;? %?洋紅
%?????0? 1? 0;? %?綠
%?????0? 0? 1;? %?藍(lán)
%?????1? 1? 0;? %黃
%?????1 1/2 0;? %?橘黃
%?????2/3 0 1;??%?天藍(lán)
%?????1? 0? 0;? %?紅
%?????0? 1? 1;? %?青藍(lán)
%?????0.5 0 0;? %?深紅
%?????0.5??0.5??0.5;??%?灰
%?????0 0 0;? %黑
%?????1? 1? 1];?%?白?
%?
%?[maxUC]?=?max(U);
%?img_cluster?=?zeros(MN3);
%?for?i?=?1:M
%?????for?j?=?1:N
%?????????indx?=?i?+?(j-1)*M;
%?????????img_cluster(ij:)?=?color(C(indx):);
%?????end
%?end
%?figure;?image(img_cluster)
%?title(‘聚類結(jié)果‘)
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????2854??2013-04-02?20:39??Main.m
?????文件??????195980??2013-03-28?16:11??image.jpg
?????文件??????180224??2013-03-30?21:47??image_1.jpg
?????文件??????263386??2013-03-30?21:48??image_2.jpg
?????文件??????262144??2013-03-30?21:48??image_3.jpg
?????文件??????180224??2013-03-30?21:49??image_4.jpg
?????文件??????229376??2013-03-30?21:49??image_5.jpg
?????文件??????763109??2013-03-30?21:39??image_6.jpg
?????文件??????638464??2014-04-08?21:08??模糊C均值聚類仿真20130402.doc
- 上一篇:多徑信道和多普勒頻移分析 matlab程序
- 下一篇:蒙特卡羅方法與MATLAB仿真
評論
共有 條評論