1 简介
图像分割和对象提取是从图像处理到图像分析的关键步骤.K-均值聚类算法和正余弦优化方法结合,即将K-均值方法的结果作为一个正余弦因子并采用正余弦优化的方法,通过适应度函数,利用新的分类中心调整粒子位置,产生新的聚类中心.并将此方法应用于图像的分割.最后,将两种方法的处理结果进行了比较,结果表示基于SCA聚类方法对图像的分割效果比原算法有所改进.
2 部分代码
clc;
clear;
close all;
%% Problem Definition
img= double(imread('309.bmp'));
figure(1)
subplot(121)
imshow(uint8(img));
title('ԭͼ')
[s1,s2,s3]=size(img);
Rplane = img(:,:,1);
Gplane = img(:,:,2);
Bplane = img(:,:,3);
X1 = (Rplane-min(Rplane(:)))/(max(Rplane(:))-min(Rplane(:)));
X2 = (Gplane-min(Gplane(:)))/(max(Gplane(:))-min(Gplane(:)));
X3 = (Bplane-min(Bplane(:)))/(max(Bplane(:))-min(Bplane(:)));
% taking R-plane, B-plane, G-plane values as features
X = [X1(:) X2(:) X3(:)];
k = 4; % no. of clusters
CostFunction=@(m) ClusteringCost2(m, X); % Cost Function m = [3x2] cluster centers
VarSize=[k size(X,2)]; % Decision Variables Matrix Size = [4 3]
nVar=prod(VarSize); % Number of Decision Variables = 12
VarMin= repmat(min(X),1,k); % Lower Bound of Variables [4x1] of[1x3] = [4x3]
VarMax= repmat(max(X),1,k); % Upper Bound of Variables [4x1] of[1x3] = [4x3]
% running the sine cosine algorithm with desired options
SearchAgents_no=30; % Number of search agents
Max_iteration=1000; % Maximum numbef of iterations
[err_ga, centers] = SCA(SearchAgents_no,Max_iteration,VarMin,VarMax,nVar,CostFunction)
m=centers;
% Calculate Distance Matrix
g=reshape(m,3,4)'; % create a cluster center matrix(4(clusters) points in 3(features) dim plane)=[4x3]
d = pdist2(X, g); % create a distance matrix of each data points in input to each centers = [(s1*s2)x4]
% Assign Clusters and Find Closest Distances
[dmin, ind] = min(d, [], 2);
% ind value gives the cluster number assigned for the input = [(s1*s2)x1]
% Sum of Within-Cluster Distance
WCD = sum(dmin);
z=WCD; % fitness function contain sum of each data point to their corresponding center value set (aim to get it minimum)
% z = [1 x 1]
outimg=reshape(ind,s1,s2);
for i=1:s1
for j=1:s2
if outimg(i,j)== 1
outimg(i,j)= 0;
elseif outimg(i,j)== 2
outimg(i,j)= 85;
elseif outimg(i,j)== 3
outimg(i,j)= 170;
elseif outimg(i,j)== 4
outimg(i,j)= 255;
end
end
end
subplot(122);imshow(uint8(outimg));
3 仿真结果
4 参考文献
[1]邹刚, 孙即祥, and 敖永红. "粒子群优化的聚类方法在图像分割中的应用." 电光与控制 2(2009):3.
[2]万瑜廷, 马爱龙, and 钟燕飞. "一种基于多目标正余弦算法的遥感影像空谱聚类方法.", CN111126467A. 2020.
部分理论引用网络文献,若有侵权联系博主删除。