资源简介
使用模糊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图像分割边缘提取算法
- 基于lab空间的图像分割
- MATLAB大脑腔体图像分割
- LAB空间分别提取红色、绿色、紫色、
- 图像分割matlab
- 模糊聚类图像分割FCM/FLICM等
- ASM二维图像分割MATLAB代码
- matlab 静态图像分割
- 基于信息熵方法的多阈值图像分割算
- KFCM与FCM进行脑电图分割
- 纹理图像分割Matlab源代码 PDF PPT
- 基于变分水平集的图像分割
- MATLAB简介+图像轮廓线提取+图像分割技
- 遗传算法图像分割matlab+源代码
- 用matlab写的图像分割的代码
- MRI图像分割
- 基于颜色的图像分割算法MATLAB代码
- 一种效果极好的交互式图像分割算法
- GVFSnake(matlab)边缘检测和图像分割
- LBF和LDF模型的matlab程序,用于图像分
- Matlab实现FCM算法
- 图像分割分形算法
- 基于形态学的图像分割算法研究
- 基于Matlab实现的图像分割的常用算法
- 图像分割源代码(Matlab)
- 基于FCN的侧扫声呐图像分割matlab代码
- MATLAB 彩色图像分割
- 图像分割程序matlab版
评论
共有 条评论