【图像分割】基于matlab模糊聚类算法FCM图像分割【含Matlab源码 084期】

举报
海神之光 发表于 2022/05/29 03:45:07 2022/05/29
【摘要】 一、模糊聚类算法FCM简介 1 前言 图像分割是图像进行后续分析处理的基础,它将图像分成不同特征部分并获得所需目标,广泛应用于诸多领域.彩色多目标图像具有更为丰富的图像信息,目标色彩较多,且同一色彩的目...

一、模糊聚类算法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图片
 

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52

三、运行结果

在这里插入图片描述
在这里插入图片描述

四、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)

文章来源: qq912100926.blog.csdn.net,作者:海神之光,版权归原作者所有,如需转载,请联系作者。

原文链接:qq912100926.blog.csdn.net/article/details/112647194

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。