一、模糊聚类算法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) == 3I=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:kindex = 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)

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

  1. 模糊聚类 图像 matlab,matlab模糊聚类算法进行图像分割的源程序

    <MATLABGUI程序设计>代码 目录 第一部分MATLAB基础 第1章MATLAB概述 1.1MATLAB软件介绍 1.1.1MATLAB语言 1.1.2MATLAB绘图功能 1.1. ...

  2. 【RF分类】基于matlab随机森林算法数据分类【含Matlab源码 2048期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[RF分类]基于matlab随机森林算法数据分类[含Matlab源码 2048期] 获取代码方式2: 付费专栏Matlab智能算法神经网络 ...

  3. 【Matlab图像加密】正交拉丁方置乱算法图像加解密【含GUI源码 182期】

    一.代码运行视频(哔哩哔哩) [Matlab图像加密]正交拉丁方置乱算法图像加解密[含GUI源码 182期] 二.matlab版本及参考文献 一.代码运行视频(哔哩哔哩) [Matlab图像处理]自动 ...

  4. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】

    一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...

  5. 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  6. 【Matlab人脸识别】形态学教室人数统计(带面板)【含GUI源码 1703期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]形态学教室人数统计(带面板)[含GUI源码 1703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟 ...

  7. 【Matlab人脸识别】人脸实时检测与跟踪【含GUI源码 673期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]人脸实时检测与跟踪[含GUI源码 673期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟逸凡,柳益君 ...

  8. 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】

    一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

  9. 【Matlab身份证识别】身份证号码识别【含GUI源码 014期】

    一.代码运行视频(哔哩哔哩) [Matlab身份证识别]身份证号码识别[含GUI源码 014期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  10. 【Matlab人脸识别】KL变换人脸识别【含GUI源码 859期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]KL变换人脸识别[含GUI源码 859期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

最新文章

  1. linux c 进程间通信
  2. 安装了email模块还是报错_科普:利用Python smtplib和email模块实现自动发送邮件功能...
  3. Flask实战2问答平台-完成登录注册功能
  4. DataSet用法详细
  5. how is SAP UI5 configuration.js loaded in the runtime
  6. 由HEAP Corruption DETECTED查到的
  7. 64 win10位系统上编译出的32位的可执行程序到其他机器上无法运行_MoreThanJava计算机系统概述...
  8. Linux内核 设备树操作常用API【转】
  9. 快速上手Expression Tree(一):做一做装配脑袋的Expression Tree 习题
  10. python 网络页面爬取
  11. 有关Ajax实现的两种方法
  12. 超有用:记一次Yapi上传报错及其处理方式
  13. linux 卸载 sdcc,Linux sdcc安装
  14. 补充:消除epsilon产生式等
  15. C7:如何使用JEPG Simulation进行ColorTuning?
  16. 《腾讯网UED体验设计之旅》
  17. zabbix的php最低版本,ZABBIX企业监控实践(3):升级与配置PHP
  18. PUNCH图剖分浅析
  19. PySide2 环境安装
  20. C# Timer详解

热门文章

  1. 线程之线程池(ExecutorService)
  2. Javascript 检查对象是否含有这个属性
  3. MFC中手工创建控件
  4. 190603每日一句
  5. 190602每日一句
  6. Atitit smp prj 项目简化方法总结 目录 第一章 俩大原则准则 1 第一节 极简主义原则 + 自由主义原则 1 第二章 简单化架构 1 第一节 简单语言php vs java 1 第二
  7. Atitit   图像处理 平滑 也称 模糊, 归一化块滤波、高斯滤波、中值滤波、双边滤波)
  8. Atitit  java jsp 新的tag技术
  9. atitit.人脸识别的应用场景and使用最佳实践 java .net php
  10. paip.web数据绑定 下拉框的api设计 选择框 uapi python .net java swing jsf总结