一、模糊聚类算法FCM简介
1 前言
图像分割是图像进行后续分析处理的基础,它将图像分成不同特征部分并获得所需目标,广泛应用于诸多领域.彩色多目标图像具有更为丰富的图像信息,目标色彩较多,且同一色彩的目标有时具有不连续性,图像分割方法中比较常见的有阈值法、边缘检测法以及边界跟踪法等,这类方法并不能取得有效的分割.近年来不少学者用聚类算法对图像进行分割,并取得了一定成果.
随着模糊理论的出现,模糊C均值聚类(FCM)分割算法由于其高效简捷得到了广泛应用.它能够将所需分割图像的信息进行很好的保留,但FCM聚类会出现局部最优、对噪声和孤立点敏感等.基于此,国内外学者提出了许多FCM改进算法和相关图像处理方法.许超结合粒子群算法和FCM进行图像分割,能够实现彩色图像的准确分割,比FCM分割结果更好.胡学刚等人针对FCM聚类的不足,采用区域分裂合并法实现了彩色图像的自适应分割,取得了良好的分割结果,并提高了抗噪性能.邱磊等人将图像在HIS颜色空间采用邻域均值进行FCM聚类,实现了噪声图像的处理.邓廷权等人将模糊Histon直方图用于模糊C聚类中实现了图像的自适应模糊C均值聚类(FCM)算法。
2 模糊C均值聚类(FCM)算法
FCM算法是J.C.Bezdek[6]引入的基于模糊理论的常用聚类算法,它使类内数据对象的相似度达到最大,类间数据对象的相似度达到最小.它是在传统划分C均值聚类的基础上进行的改进,根据图像像素隶属聚类中心的程度实现样本的划分,在图像分割中得到了较普遍的使用.但该算法起始聚类中心具有不确定性,图像聚类效果对其敏感,会出现局部最优现象.
FCM算法思想:对图像聚类中心进行初始化后,根据公式求解图像中各像素对聚类中心的隶属度与新的聚类中心,以使目标准则函数实现最优.
FCM算法的目标函数为:
FCM算法流程:
1)初始化vi,c和m;
2)根据公式(3)更新隶属度矩阵U.
3)根据公式(4)更新聚类中心.
4)不断迭代直到‖vi+1-vi‖<ε(ε>0),反之继续执行步骤2).
二、部分源代码
%% 程序分享
%--------------------------------------
clear
close all
clc
%% %%%%%%%%%%%%%%%图像%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
I=imread('3096.jpg');
if size(I,3) == 3
I=rgb2gray(I);
else
end
I=im2double(I);
figure;imshow(I);title('(a)原始图像')
% I=I;%不加噪声
%I=imnoise(I,'speckle',deta_2);
% I=imnoise(I,'salt & pepper',0.05); %加噪图
% I=imnoise(I,'gaussian',0,0.01); % 加高斯噪声
figure;imshow(I);title('(b)加噪图像');
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;imshow(labels2,[]);title('(c)聚类分割图');
imwrite(labels2,'3.1.tiff','tiff','Resolution',300);%输出结果,保存为tif图片
三、运行结果
四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 蔡利梅.MATLAB图像处理——理论、算法与实例分析[M].清华大学出版社,2020.
[2]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013.
[3]周品.MATLAB图像处理与图形用户界面设计[M].清华大学出版社,2013.
[4]刘成龙.精通MATLAB图像处理[M].清华大学出版社,2015.
[5]陈浩,方勇,朱大洲,王成,陈子龙.基于蚁群算法的玉米植株热红外图像边缘检测[J].农机化研究. 2015,37(06)