图像分割是一种重要的图像技术‚它不仅受到人们广泛的重视‚其研究在不断深入‚而且也在实际中得到了大量的应用。图像分割是应用一种或多种运算将图像分成一些具有类似特征(如颜色、纹理、密度等)的区域‚主要方法有阈值法和区域方法两大类。前者是利用灰度频率信息进行分割‚而后者利用局部空间信息进行分割。图像分割是一种重要的图像技术‚它不仅受到人们广泛的重视‚其研究在不断深入‚而且也在实际中得到了大量的应用。图像分割是应用一种或多种运算将图像分成一些具有类似特征(如颜色、纹理、密度等)的区域‚主要方法有阈值法和区域方法两大类。前者是利用灰度频率信息进行分割‚而后者利用局部空间信息进行分割。
采用了一种模拟退火思想的粒子群算法与最大类间方差法相结合的快速阈值分割法对图像进行分割。用粒子群优化算法来搜索阈值向量,每个粒子代表一个可行的阈值向量,通过粒子间的协作来获得最优阈值。为了提高收敛速度,把模拟退火的思想应用在粒子群算法中,最后仿真结论表明,该方法在继承标准粒子群算法原理简单、易于实现、协同搜索等优点的同时,还避免了标准粒子群算法的收敛速度慢问题,有更强的寻优能力,得到理想的结果的同时计算量大大减少。权衡分割精度和计算效率两个方面,文中方法不失为一种实用有效的图像分割算法。
%% PSO + SA Image Segmentation
% Empowering traditional clustering techniques with evolutionary
% algorithms, here two strong ones, namely particle swarm optimization and
% simulated annealing are used.
% Enjoy!!!
%% Cleaning the Stage
clc;
clear;
close all;
warning('off');
%% Reading Image
MainOrg=imread('tst.jpg');
Gray=rgb2gray(MainOrg);
InpMat= double(MainOrg);
%% Basics
[s1,s2,s3]=size(InpMat);
R = InpMat(:,:,1);
G = InpMat(:,:,2);
B = InpMat(:,:,3);
X1 = (R-min(R(:)))/(max(R(:))-min(R(:)));
X2 = (G-min(G(:)))/(max(G(:))-min(G(:)));
X3 = (B-min(B(:)))/(max(B(:))-min(B(:)));
X = [X1(:) X2(:) X3(:)];
%% Cluster Numbers
clusteres = 7;
%% Plot PSO-SA Segmented Result
disp(['Error Is: ' num2str(Error)]);
figure('units','normalized','outerposition',[0 0 1 1])
subplot(2,3,1)
subimage(MainOrg);title('原始');
subplot(2,3,2)
subimage(Gray);title('灰色');
subplot(2,3,3)
imshow(SA_Segmented,[]);
title(['粒子群算法优化模拟退火算法灰色分段, 集群 = ' num2str(clusteres)]);
subplot(2,3,4)
imshow(ColorSeg,[]);
title(['粒子群算法优化模拟退火算法彩色分段, 集群 = ' num2str(clusteres)]);
subplot(2,3,5)
imshow(medgray,[]);
title(['粒子群算法优化模拟退火算法灰色中值滤波 ']);
subplot(2,3,6)
imshow(medrgb,[]);
title(['粒子群算法优化模拟退火算法彩色中值滤波']);
% That's it, GoodBye :|
[1]张捍东, 廖天红, 岑豫皖. 用模拟退火思想的粒子群算法实现图像分割[J]. 计算机技术与发展, 2010.
[2]吴禄慎, 程伟, 王晓辉. 应用模拟退火粒子群算法优化二维熵图像分割[J]. 计算机工程与设计, 2019, 40(9):8.
部分理论引用网络文献,若有侵权联系博主删除。