|  | 
 
| 
x
EDA365欢迎您登录!您需要 登录 才可以下载或查看,没有帐号?注册  {. x* a. V) J9 h# m一、简介; e. d) d: }' X' L3 ?6 s
 伴随着模糊集理论的形成、发展和深化,RusPini率先提出模糊划分的概念。以此为起点和基础,模糊聚类理论和方法迅速蓬勃发展起来。针对不同的应用,人们提出了很多模糊聚类算法,比较典型的有基于相似性关系和模糊关系的方法、基于模糊等价关系的传递闭包方法、基于模糊图论的最大支撑树方法,以及基于数据集的凸分解、动态规划和难以辨别关系等方法。然而,上述方法均不能适用于大数据量的情况,难以满足实时性要求较高的场合,因此实际应用并不广泛。( T5 S; h+ C, i
 
 o) R, v, j5 R! R, }; V$ h- K模糊聚类分析按照聚类过程的不同大致可以分为三大类:
 ) J; P, {( ?! S9 C8 W2 h/ O; K2 J' T  n) N! q7 ]# B
 (1)基于模糊关系的分类法:其中包括谱系聚类算法(又称系统聚类法)、基于等价关系的聚类算法、基于相似关系的聚类算法和图论聚类算法等等。它是研究比较早的一种方法,但是由于它不能适用于大数据量的情况,所以在实际中的应用并不广泛。, O7 K) r5 H$ b, G- \) b# ~) K
 
 $ k, x, C( p1 A3 z7 g5 @2 S( d(2)基于目标函数的模糊聚类算法:该方法把聚类分析归结成一个带约束的非线性规划问题,通过优化求解获得数据集的最优模糊划分和聚类。该方法设计简单、解决问题的范围广,还可以转化为优化问题而借助经典数学的非线性规划理论求解,并易于计算机实现。因此,随着计算机的应用和发展,基于目标函数的模糊聚类算法成为新的研究热点。& y- |: `' H$ a% v' J+ T  h- M
 9 X8 w0 A$ r: x1 }" h
 (3)基于神经网络的模糊聚类算法:它是兴起比较晚的一种算法,主要是采用竞争学习算法来指导网络的聚类过程。
 + B" J: M: f  p) }+ c8 W8 C( R3 {) i3 U1 K8 V, l) D/ k
 在介绍算法之前,先介绍下模糊集合的知识。, _+ e9 B. ?, V. z
 + Y6 ?% x8 u/ B/ ^
 HCM聚类算法
 4 \" b6 ~. s7 U9 B4 y  K1 {/ R. P$ T- l
 
 j3 l! F) s' ]4 H4 G+ e    首先说明隶属度函数的概念。隶属度函数是表示一个对象x 隶属于集合A 的程度的函数,通常记做μA(x),其自变量范围是所有可能属于集合A 的对象(即集合A 所在空间中的所有点),取值范围是[0,1],即0<=μA(x),μA(x)<=1。μA(x)=1 表示x 完全隶属于集合A,相当于传统集合概念上的x∈A。一个定义在空间X={x}上的隶属度函数就定义了一个模糊集合A,或者叫定义在论域X={x}上的模糊子集A’。对于有限个对象x1,x2,……,xn 模糊集合A’可以表示为:# b2 @6 q8 T% Y+ z+ f- m$ x2 W
 
  , i9 f# M4 W/ T: u0 O. Q 
  . D$ A/ ^. z8 \2 u* t; M+ N" r 
 " A% J$ F. ~/ H) i
   1 e& {  r1 X3 i! Q; u% Z- w  I2 S! w! _7 D
 
  ; l+ G  H2 T: i 
 , R" G% l1 y' b% x& `
  6 j0 X4 {# T5 T" H( R6 O' ~- } 9 V# D8 n3 ?- }! u0 L2 b
 
 9 v# ]! n) E: g+ r3 W7 F6 z/ b
 8 l0 B1 ]0 r( o* ?6 R5 I' Q$ y3 TFCM算法流程图8 H, l! A# {! X
 
 1 K$ |: J- m* u- gFCM算法是目前比较流行的一种模糊聚类算法,究其原因大致有以下几个方面:首先,模糊C—均值泛函Jm仍是传统硬C一均值泛函J1的自然推广;硬C一均值泛函J1是一个应用十分广泛的聚类准则,对其在理论上的研究己经相当完善,这就为Jm的研究提供了良好的条件;数学上看,Jm与RS的希尔伯特空间结构(正交投影和均方逼近理论)有密切的关系,因此比其它泛函有更深厚的数学基础;最后,也是最重要的是该目标函数不仅在许多领域获得了非常成功的应用,而且以FCM算法为基础,人们提出的基于其它原型的模糊聚类算法,形成了一大批FCM类型的算法:如模糊C一线(FCL)、模糊C一面(FCP)等聚类算法,分别实现了对呈线状、超平面状结构模式子集(或聚类)的检测。
 2 J; m. v; _; y* Q& u
 6 F+ M( U* p5 b$ v. B: B
 / W/ |% P, q5 A: uFCM算法应用到颜色迁移中8 F3 @+ `' X0 x0 |0 W5 V6 W
 . d/ i9 A) M$ [$ g0 J. _1 y
 
 " n* B) }- B  ?  p% r/ U    钱小燕等人将聚类算法应用到色彩迁移中,提出了一种基于图像模糊颜色聚类的自适应色彩迁移算法。该算法首先将源图像和目标图像分别转换到lαβ颜色空间:利用FCM 算法把源图像和目标图像划分为具有不同颜色特征的聚类,然后分析图像中的颜色特征:分别算出每个域的匹配权值,对每个目标图像的匹配权值,从源图像中选取一个最接近域作为最佳匹配域;最后根据目标图像各聚类域与源图像中的匹配域之间的关系,引入隶属度因子,两个域的处理结果分别进行加权平均,获得色彩迁移结果。使用FCM的思想对图像进行聚类域划分的思路是:设准备处理图像I的大小是S×H,即对颜色聚类颜色分析的个数是N,N = S×H,则图像I可表示成集合,I={p1 ,p2 ...,pn }。图像被分为c类,每个类的聚类中心为V={v1,v2 ...,vc },用uik表示像素pk隶属于聚类中心Vi的隶属度,定义图像的隶属度矩阵U。具体算法如下:# S6 h1 t9 t2 t) {" b' i, ?
 9 i* {; R2 m' z" Z2 ^
 
 ) A  _, R% W$ r6 D8 s步骤一:把源图像和目标图像分别从RGB转换到lαβ空间。) W# J0 j9 Y5 S4 j- H
 
 ( A# S) j" D6 M2 z2 D步骤二:确定待处理图像聚类域个数c,然后初始化聚类中心。假设加权指数m=2,设定处理的最大迭代次数为50。' t2 f1 d7 l/ b" d: |
 
 M2 T# a; k: e% A2 V' a$ D步骤三:当迭代次数T 小于50 时,根据初始化聚类中心计算隶属度矩阵。如果pk≠vi,则对于所有的vi ( i=1,2,…,C ),利用下式计算隶属度矩阵。
 3 s  H- K) `$ \" f0 [+ h) M' ]- u- e2 C) a
 
  $ m, `* }5 F* L* E 6 O* x/ t4 e1 k+ ^" H! g
 
  m9 m4 i, I( {& o& Z4 k/ q 
 % y4 g- H* K- v9 [  M* @+ J- Z. j9 S  `+ x% E0 \% d
 
 4 Z+ a, T: k1 L二、源代码
 5 }# L% l) R8 b
 * b: X/ Q" @" G; {, l' F  j
 + D1 Z4 z9 a4 n7 G/ q% V: ?6 F3 y%% 程序分享%--------------------------------------clearclose allclc%% %%%%%%%%%%%%%%%图像%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%I=imread('3096.jpg');if size(I,3) == 3   I=rgb2gray(I);elseendI=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;endlabels2=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图片3 }! f1 X! C8 S# c8 o3 o( `7 g2 Q
 
 : \8 p7 S" G, I4 _
 / T8 Q% s) Q( ]2 E& N  C6 x+ d三、运行结果
 & F: P* Q% g& P( K7 j# V7 |4 J: `* |0 P& w
 
  ^4 K$ j. X" r% n 
 4 ?8 z, M: q/ l, q) |5 X% K
   2 ?& C. t3 D6 n% p5 d+ Z" K; M! s' D* o" ~7 J$ P8 f/ j
 - [1 w6 s( Q9 }  h
 
 ; H# q/ e1 A$ x6 I1 c$ g+ c
 | 
 |