【图像分割】基于matlab遗传算法优化K聚类图像分割【含Matlab源码 1605期】

一、遗传算法优化K聚类简介

文中提出基于优化遗传算法的模糊聚类图像分割算法, 是在上述对遗传算法进行了优化的基础上形成的。不仅根据个体适应度大小和变化快慢自适应调节变异率和交叉率, 提高计算准确性和效率, 另外, 在遗传算法迭代计算中加入基于曲线二阶导数的约束条件以加快收敛, 然后用优化后的遗传算法按照模糊聚类规则对聚类中心进行计算, 计算完成后, 根据最终计算的聚类中心产生分割阈值以完成对图像的分割。具体步骤如下:

  1. 初始化和编码操作。
    初始化所需参数, 并采用实数编码, 将直方图中归一化的聚类中心坐标值作为基因, 随机生成初始种群。实数编码可以缩短染色体长度, 也避免了在二进制编码所必需的译码过程, 提高计算的精度和速度;

  2. 计算适应度。
    文中构造适应度函数为:
    f=a/ (b+J) (5)
    其中, a, b是可调参数, 由实验可分别设为10和1.5。J为式 (1) 中的目标函数;

  3. 选择个体。
    个体被选择的概率与适应度值成正比, 即根据适应度大小按比例选择个体;

  4. 交叉产生新的个体。
    采用实值中间重组方式进行交叉操作;

  5. 变异操作。
    文中将归一化的聚类中心坐标值作为基因, 因此将变异前后个体的变化量设为0.5r (t/T) 。其中, r是区间[0, 1]内的随机数, T为演化最大代数, t为当前演化代数。这种变异操作的优势在于:在演化初期即t较小时, 个体可在较大范围内变异, 提高搜索的准确性, 避免陷入局部最优;而当t较大时, 缩小个体的变异范围, 有利于提高搜索效率。此外, 在产生新种群的过程中, 加入约束条件使产生的聚类中心与直方图峰值没有太大偏差, 加快收敛速度;

  6. 迭代计算。
    得到新种群后计算新的模糊隶属度矩阵, 返回步骤2) , 继续迭代计算, 直到满足迭代中止条件为止。迭代中止后, 依据计算出的聚类中心得到分割阈值, 完成图像分割。

二、部分源代码

function [idx,cs,egr]=kmeanseg(im,cs)

%number of Iteration
T= 50; t=0; 

nc=length(cs);
[row,col]=size(im);
D=zeros(row,col,nc);

pcs=cs;
egr =[];
eps=1.e-8; cmx=1;

while ( t<T  && cmx>eps )   
                 
    % Euclidean distance between centroids and image's pixel 
    for c=1: nc 
      D(:,:,c)=   (im - cs(c)).^2 ;     
    end
            
    % assign members (image pixels) to clusters  
    [mv,idx]=min(D,[],3);
    
     % cluster centroid updation
    for c=1: nc 
      I = (idx==c);  
      cs(c) = mean( mean(im(I)) );    
    end
    
    % find if any member label changes between current and previous iteration     
     cmx = max( abs(cs-pcs) );
     pcs = cs;
         
     t= t+1;
     
    %sum difference between centroid and their members 
    % and store it for ploting energy minimization functions
    egr= [egr; sum(mv(:)) ];
                         
end
function egr=objfunc(cs)

global sds
  nc = size(cs,2);
  [row,col]=size(sds);
  D=zeros(row,col,nc);
  % Euclidean distance between centroids and image's pixel 
  for c=1: nc 
    D(:,:,c)=   (sds - cs(c)).^2 ;     
  end        
 % assign members (image pixels) to clusters  
 [mv,~]=min(D,[],3);  
 egr=sum(mv(:));

三、运行结果

【图像分割】基于matlab遗传算法优化K聚类图像分割【含Matlab源码 1605期】

四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 蔡利梅.MATLAB图像处理——理论、算法与实例分析[M].清华大学出版社,2020.
[2]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013.
[3]周品.MATLAB图像处理与图形用户界面设计[M].清华大学出版社,2013.
[4]刘成龙.精通MATLAB图像处理[M].清华大学出版社,2015.
[5]朱斌,管莉,张胜超,齐敏,郝重阳.基于优化遗传算法的模糊聚类图像分割算法[J].弹箭与制导学报. 2008,(04)

上一篇:19.7 主动模式和被动模式;19.8 添加监控主机;19.9 添加自定义模板;19.10 处理图形中的乱码;19.11


下一篇:C#学习day03_1-委托,委托多播