MATLAB小技巧(32)FCM聚类
前言
MATLAB进行图像处理相关的学习是非常友好的,可以从零开始,对基础的图像处理都已经有了封装好的许多可直接调用的函数,这个系列文章的话主要就是介绍一些大家在MATLAB中常用一些概念函数进行例程演示!
1965年美国加州大学柏克莱分校的扎德教授第一次提出了‘集合’的概念。经过十多年的发展,模糊集合理论渐渐被应用到各个实际应用方面。为克服非此即彼的分类缺点,出现了以模糊集合论为数学基础的聚类分析。用模糊数学的方法进行聚类分析,就是模糊聚类分析。FCM算法是一种以隶属度来确定每个数据点属于某个聚类程度的算法。该聚类算法是传统硬聚类算法的一种改进。FCM聚类仿真示例分享给大家,MATLAB版本为MATLAB2015b。
一. MATLAB仿真
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%功能:FCM聚类
%环境:Win7,Matlab2015b
%Modi: C.S
%时间:2022-06-28
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% I. 清空环境变量
clear all
clc
tic
data = rand(100,2);
options = [2;100;1e-5;1];
[center,U,obj_fcn] = FCM(data,2,options);
figure;
plot(data(:,1), data(:,2),'o');
title('DemoTest of FCM Cluster');
xlabel('1st Dimension');
ylabel('2nd Dimension');
grid on;
hold on;
maxU = max(U);
index1 = find(U(1,:) == maxU);
index2 = find(U(2,:) == maxU);
line(data(index1,1),data(index1,2),'marker','*','color','g');
line(data(index2,1),data(index2,2),'marker','*','color','r');
plot([center([1 2],1)],[center([1 2],2)],'*','color','k')
hold off;
toc
二. 仿真结果
FCM:Iteration count = 1, obj.fcn = 8.958512
FCM:Iteration count = 2, obj.fcn = 7.379714
FCM:Iteration count = 3, obj.fcn = 7.154737
FCM:Iteration count = 4, obj.fcn = 6.782053
FCM:Iteration count = 5, obj.fcn = 6.524971
FCM:Iteration count = 6, obj.fcn = 6.453921
FCM:Iteration count = 7, obj.fcn = 6.443257
FCM:Iteration count = 8, obj.fcn = 6.441897
FCM:Iteration count = 9, obj.fcn = 6.441686
FCM:Iteration count = 10, obj.fcn = 6.441637
FCM:Iteration count = 11, obj.fcn = 6.441618
FCM:Iteration count = 12, obj.fcn = 6.441608
FCM:Iteration count = 13, obj.fcn = 6.441601
时间已过 0.153925 秒。
三. 小结
聚类算法作为聚类分析的有力工具,已被广泛应用于许多领域中,例如在图像处理中进行图像分割,在模式识别中进行语音识别等。本课题研究的是模糊C-均值(FuzzyC-means,FCM)聚类算法在图像分割中的应用。事实上,由于图像的复杂性,图像中的某个像素点到底属于图像分割的那个区域是不确定的,这也说明了图像的模糊性与不均匀性,所以一般的聚类方法已不能满足人们对图像分割的需求。模糊理论的出现恰好能解决这一问题,将模糊理论应用于聚类形成模糊聚类,所以图像分割就可以从模糊聚类的角度来进行。模糊聚类算法作为图像分割的有力工具,未来对图像分割算法的深入研究将显得很有意义。每天学一个MATLAB小知识,大家一起来学习进步阿!