【图像分割】基于遗传算法优化K聚类实现图像分割matlab代码

221 阅读2分钟

1 简介

典型K均值聚类算法的聚类中心个数和聚类中心的选取对彩色图像分割的精度影响较大,其主要体现在彩色图像的特征相似度(feature similarity of color,FSIMC)不高.提出一种基于遗传算法的K均值聚类分割法(GA-K-Means).每条染色体的基因由聚类中心数目和聚类中心点两部分组成,并且将彩色图像的FSIMC作为适应度函数值.首先将彩色图像转换到Lab颜色空间,然后以步进和遗传算子相结合的方式搜索最佳聚类中心个数和聚类中心进行分割.把18幅不同类型的图像分别按照K均值聚类法,GA-K-Means分割法,模糊C均值聚类(fuzzy C-means clustering,FCM)分割法进行实验.结果表明,采用GA-K-Means分割的18幅图像,其FSIMC值相应的比另外2种分割法得到的FSIMC值高10%左右,其分割时间比另外2种分割法略长.​

2 部分代码

clc;close allclear all;

% sds - sampled dataset  
global sds;

[im,map]=imread('lena.png');
if ( size(im,3)==3)
im=rgb2gray(im);
end

im=im2double(im);
[row,col]=size(im);
nc=5;

Lrow*col;
rns=(10/100)*Lrp=randperm(L);
sds=im(rp(1:rns));

options=gaoptimset('PopulationSize',20,'PopulationType','doubleVector', ... 
                  'CrossoverFraction',0.7'Generations',100,'EliteCount',2, ...
                  'SelectionFcn'@selectionroulette,'CrossoverFcn',@crossoverarithmetic,...
                  'MutationFcn',@mutationadaptfeasible,'PlotFcns',@gaplotbestf) ;

              
% lower bound limit               
lb=zeros(nc,1);
% upper bound limit
ub=ones(nc,1);

[gics,gfv,exf] =ga(@objfunc,nc,[],[],[],[],lb,ub,[],options);

[idx,cs,egr]=kmeanseg(im,gics);
gsim=coloring(cs,idx);
gsim=reshape(gsim,row,col,3);

figure;
imshow(gsim);
title('GA-Kmeans');
   

3 仿真结果

4 参考文献

[1]朱斌, 管莉, 张胜超,等. 基于优化遗传算法的模糊聚类图像分割算法[J]. 弹箭与制导学报, 2008, 28(004):190-192.

部分理论引用网络文献,若有侵权联系博主删除。

5 MATLAB代码与数据下载地址

见博客主页