天天看点

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

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 all; clear 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;      
L= row*col;      
rns=(10/100)*L;      
rp=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 仿真结果

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

4 参考文献

继续阅读