# [image segmentation] optimize k-cluster image segmentation based on Matlab genetic algorithm [including Matlab source code 1605]

2022-01-27 03:56:13

## One 、 Genetic algorithm optimization K Introduction to clustering

In this paper, a fuzzy clustering image segmentation algorithm based on optimized genetic algorithm is proposed , It is formed on the basis of the above optimization of genetic algorithm . It not only adaptively adjusts the variation rate and crossover rate according to the size of individual fitness and the speed of change , Improve calculation accuracy and efficiency , in addition , In the iterative calculation of genetic algorithm, the constraint condition based on the second derivative of the curve is added to speed up the convergence , Then the optimized genetic algorithm is used to calculate the cluster center according to the fuzzy clustering rules , After calculation , The segmentation threshold is generated according to the final calculated clustering center to complete the image segmentation . The specific steps are as follows :

1. Initialization and encoding operations .
Initialize the required parameters , Real number coding is adopted , The normalized cluster center coordinate value in the histogram is taken as the gene , Random generation of initial population . Real coding can shorten chromosome length , It also avoids the decoding process necessary for binary coding , Improve the accuracy and speed of calculation ;

2. Calculate Fitness .
The fitness function is constructed as :
f=a/ (b+J) (5)
among , a, b Is an adjustable parameter , The experiment can be set as 10 and 1.5.J It's a formula (1) The objective function in ;

3. Select individual .
The probability of an individual being selected is directly proportional to the fitness value , That is, individuals are selected in proportion according to the fitness ;

4. Crossover produces new individuals .
The real value intermediate reorganization method is adopted for cross operation ;

5. Mutation operation .
In this paper, the normalized coordinate value of clustering center is used as gene , Therefore, the amount of individual change before and after variation is set as 0.5r (t/T) . among , r Is interval [0, 1] The random number in , T For the evolution of maximum algebra , t For the current evolutionary Algebra . The advantage of this mutation operation is : At the beginning of evolution, that is t More hours , Individuals can vary in a wide range , Improve the accuracy of search , Avoid falling into local optimum ; And when t large , Narrow the range of individual variation , Help to improve search efficiency . Besides , In the process of producing new populations , Add constraints so that the generated cluster center does not deviate too much from the histogram peak , Speed up convergence ;

6. Iterative calculation .
After the new species group is obtained, a new fuzzy membership matrix is calculated , Return steps 2) , Continue to iterate , Until the iteration stop condition is met . After the iteration is terminated , The segmentation threshold is obtained according to the calculated clustering center , Complete image segmentation .

## Two 、 Partial source code

``````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(:));
``````

## 3、 ... and 、 Running results ## Four 、matlab Edition and references

1 matlab edition
2014a

2 reference
 Cai Limei .MATLAB The image processing —— theory 、 Algorithm and example analysis [M]. tsinghua university press ,2020.
 Yang Dan , Zhao Haibin , Long Zhe .MATLAB Detailed explanation of image processing examples [M]. tsinghua university press ,2013.
 Zhou pin .MATLAB Image processing and graphical user interface design [M]. tsinghua university press ,2013.
 Liu Chenglong . Master MATLAB The image processing [M]. tsinghua university press ,2015.
 Zhu bin , Guan Li , Zhang Shengchao , Qi Min , Hao Chongyang . Fuzzy clustering image segmentation algorithm based on optimized genetic algorithm [J]. Journal of missile and guidance . 2008,(04)