⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fcm-1.m

📁 这是我自己编的用MATLAB来进行图像分割主要用模糊算法和遗传算法
💻 M
字号:
function [V2,f]=fcm(hist,c,V)
        %%hist1为直方图信息,c为聚类数,V为聚类中心矩阵,
        %计算聚类目标函数
   %欧式距离
% I=imread('E:\MATLAB6p5\work\我的程序\ga_fcm_levelset\rice.tif');%读图像
 %hist=imhist(I);  %获取图像的灰度图
% c=2;
% V=round(rand(1,c)*255);  %初始聚类中心   rand 产生c个0-1内的数
 a=size(hist,1);  %计算hist的第一位长度
   
   dist = zeros(a,c);  %产生一个a*c矩阵
   for k=1:a
       for i=1:c                                            
           dist(k,i)=sqrt(k-V(i)); %计算欧式距离 先列后行                              (8)式
       end
   end
   
   
    %求隶属度
    m=2;%m为加权指数    有可能的话可用于外设                                             (5)式
   u = zeros(a,c);
   b=0; 
   ht=0;%ht=zeros(a,1);
   for k=1:a
       for i=1:c
           a_a=dist(k,i);
           if a_a==0
               temp=0;
           else
               temp=(1/a_a)^(2/(m-1));
           end
           ht=ht+temp;   %将分母的和算出 ht(k)=ht(k)+temp;  
       end
   end
   
   
   for k=1:a
       for i=1:c
           if dist(k,i)==0
               u(k,i)=0;
           else
               u(k,i)=abs(ht/(dist(k,i)^(2/(m-1))));% u(k,i)=abs(ht(k)/(dist(k,i)^(2/(m-1))));
           end
       end
   end  
  

  
   %聚类中心更新                                                      (9)式
   div_1=zeros(1,c);div_2=zeros(1,c);
   for i=1:c
       for k=1:a
           div_1(i)=u(k,i)^m*hist(k)*k+div_1(i);%分子求和           
           div_2(i)=u(k,i)^m*hist(k)+div_2(i);%分母求和
           
       end
       if div_2(i)==0
           v_out(i)=V(i);
       else
           v_out(i)=div_1(i)/div_2(i);%求出新的聚类中心
       end  
       
   end
   
   
   %求目标函数                                                         (10)式
   J=0;
   for i=1:c
       for k=1:a
           J=abs((u(k,i)^m*dist(k,i)^2*hist(k)))+J;
       end
   end
   
   
   %适应度函数计算                                                     (11)式
   f=1/(1+J);
   V2=v_out;
   
  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -