资源简介
使用模糊C均值聚类进行图像分割,使用Matlab自带的fcm函数。包含源代码和仿真报告
代码片段和文件信息
clear allclose allclc
n_cluster = 6; % 目标分类数
max_iter = 50; % 最大迭代次数
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自带的聚类函数获得聚类中心
U = zeros(n_clusterM*N);
iter = 1;
while iter < max_iter
dist = distfcm(center imgdata); % 计算距离矩阵
tmp = dist.^(-2);
U_new = tmp./(ones(n_cluster 1)*sum(tmp)); % 新的隶属度矩阵
mf = U_new.^2; % 隶属度矩阵进行指数运算
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(:))) < d_U || max(abs(err_C(:))) < d_C)
break;
end
iter = iter + 1
end
color = [1 0 1; % 洋红
0 1 0; % 绿
0 0 1; % 蓝
1 1 0; %黄
1 1/2 0; % 橘黄
0 1 1; % 青蓝
2/3 0 1; % 天蓝
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(‘聚类结果‘)
% 使用第二类隶属度约束
% [centerUobj_fcn] = fcm(imgdata n_cluster);
% U = zeros(n_clusterM*N);
% iter = 1;
% while iter < max_iter
% dist = distfcm(center imgdata); % 计算距离矩阵
% tmp = dist.^(-2);
% min(tmp(:))
% U_new = M*N*tmp./sum(tmp(:)); % 新的隶属度矩阵
% mf = U_new.^2; % 隶属度矩阵进行指数运算
% 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(:))) < d_U || max(abs(err_C(:))) < d_C)
% if(max(abs(err_U(:))) < d_U)
% break;
% end
% iter = iter + 1
% end
%
% color = [1 0 1; % 洋红
% 0 1 0; % 绿
% 0 0 1; % 蓝
% 1 1 0; %黄
% 1 1/2 0; % 橘黄
% 2/3 0 1; % 天蓝
% 1 0 0; % 红
% 0 1 1; % 青蓝
% 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(‘聚类结果‘)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 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仿真
相关资源
- 四种聚类算法源代码及
- 交互式二维图像分割工具matlab实现
- 超声图像分割
- 分水岭分割算法matlab实现
- matlab mean shift EDISON Wrapper 图像分割
- SNIC超像素分割算法
- 图像分割的matlab算法
- 基于计算机视觉的图像分割算法的研
- fcm实现matlab图像分割的一组程序
- FCM聚类算法matlab源代码
- 标准snake算法matlab实现
- 基于MATLAB的图像分割算法研究
- 模糊聚类分析传递闭包算法FCM的matl
- Matlab代码文字识别:包括图像分割粘
- FCM+KFCM 模糊C均值聚类分析算法 matla
- 基于Matlab的连通域算法
- 基于直方图双峰特性的图像分割Matl
- 主动轮廓模型图像分割程序 matlab
- 运用偏微分方程(PDE)方法进行图像
- 计算图像分割指标 代码
- 图像分割度量标准--matlab代码
- MATLAB 粒子群图像分割算法
- 用于图像分割的自适应扩散流活动轮
- Matlab边缘检测和区域生长图像分割算
- 模糊c均值聚类 FCM算法的MATLAB代码
- matlab实现最大熵法图像分割程序源代
- 多阈值图像分割算法
- 基于遗传算法的图像分割毕业论文
- 基于标记的分水岭分割实现
- 基于区域生长法的图像分割matlab程序
评论
共有 条评论