1 简介
图像分割是数字图象处理中关键技术之一,是重要的研究领域,也是计算机视觉中的一个经典问题。聚类分析是图像分割领域的重要分支之一,也是数据挖掘中进行数据处理的重要分析工具和方法,且应用广泛。近年来,聚类分析已经成为人们进行数据分析和信息提取的研究热点。而模糊C均值(Fuzzy C-means,FCM)聚类是聚类分析中应用最普遍的一种方法。
2 部分代码
%% 程序分享
%--------------------------------------
clear
close all
clc
%% %%%%%%%%%%%%%%%图像%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
I=imread('3096.jpg');
if size(I,3) == 3
I=rgb2gray(I);
else
end
I=im2double(I);
% I=I;%不加噪声
%I=imnoise(I,'speckle',deta_2);
% I=imnoise(I,'salt & pepper',0.05); %加噪图
% I=imnoise(I,'gaussian',0,0.01); % 加高斯噪声
imwrite(I,'2.jpg');
[m,n]=size(I);
%k 聚类数目
k=2;
% k=3;
I4 = I(:); %% 将图像灰度按列排列
%% ------------------------ fcm算法------------------------
fcm_spatial_mean_label=zeros(m*n,1);
t=cputime;
tic;
[O2, U2, obj_fcn2] = fcm(I4, k);
toc;
time_fcm_spatial_mean=cputime-t;
%% 最大隶属度原则
maxU2 = max(U2); %隶属度最大
for j=1:k
index = find(U2(j, :) == maxU2); %隶属度最大对应的像素位置
fcm_spatial_mean_label(index) = j;
end
labels2=reshape(fcm_spatial_mean_label,[m n]);
labels2=uint16(labels2);
%% 显示聚类分割图
labels2(find(labels2==1))=0;
labels2(find(labels2==2))=255;
labels2(find(labels2==3))=180;
labels2(find(labels2==4))=100;
labels2=uint8(labels2);
figure;subplot(131);imshow(I);title('(a)原始图像')
subplot(132);imshow(I);title('(b)加噪图像');
subplot(133);;imshow(labels2,[]);title('(c)聚类分割图');
imwrite(labels2,'3.1.tiff','tiff','Resolution',300);%输出结果,保存为tif图片
3 仿真结果
4 参考文献
[1]孔令然. 基于模糊聚类的SAR图像分割算法研究[D]. 辽宁工程技术大学.
部分理论引用网络文献,若有侵权联系博主删除。
5 MATLAB代码与数据下载地址
见博客主页