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 仿真結果
