1 简介
为确定图像分割的最佳阈值,基于粒子群优化算法提出了一种多阈值图像分割方法.由最大熵或最大类间方差法得到优化的目标函数,用粒子群算法对其进行优化,得到分割的最佳阈值,并用该阈值对图像进行分割.将分割结果与遗传算法的多阈值分割结果相比较可以看出,该算法不仅可实现正确的图像分割,并可使分割速度大大提高.
2 部分代码
clc;clear;close all; %清屏,删除已有的变量和窗口,tic和toc用来给程序计时
%% 输入图像;
Imag = imread('24063.jpg');%296059
Imag=rgb2gray(Imag);
Image_Shangmax=Imag;
%% 开始种群等基本定义
N = 500; % 初始种群个数
d = 3; % 阈值个数(参看上述的函数表达式)
ger = 300; % 最大迭代次数
plimit = [1,256];
%% 作图
figure(3);
plot(record); %画出最大值的变化过程
title('收敛过程')
threshold1 = ym(1);
threshold2 = ym(2);threshold3 = ym(3);
[height,length]=size(Image_Shangmax);
for i=1:length
for j=1:height
if Image_Shangmax(j,i)>threshold3
Image_Shangmax(j,i)=255;
elseif Image_Shangmax(j,i)>threshold2 && Image_Shangmax(j,i)<=threshold3
Image_Shangmax(j,i)=165;
elseif Image_Shangmax(j,i)>threshold1 && Image_Shangmax(j,i)<=threshold2
Image_Shangmax(j,i)=80;
else
Image_Shangmax(j,i)=0;
end
end
end
figure(4);
imshow(Image_Shangmax);
xlabel(['最大熵法阈值',num2str(ym)]);
%% 适应度函数
function fx = f(x)
Imag = imread('24063.jpg');%296059
Imag=rgb2gray(Imag);
[height,length]=size(Imag);
totalNum=height*length;
pixelCount=zeros(1,256);%统计各个像素值的个数
for i=1:length
for j=1:height
number=Imag(j,i)+1;
pixelCount(number)=pixelCount(number)+1;
end
end
pi=pixelCount/totalNum; %pi 灰度级为i的像素出现的概率
fx = zeros(1, 500);
for i=1:500
m=x(i,1);
n=x(i,2); k=x(i,3);
w0=sum(pi(1:m));
w1=sum(pi(m+1:n));
w2=sum(pi(n+1:256)); w3=sum(pi(k+1:256));
H0=0;
H1=0;
H2=0; H3=0;
for j=1:m
if w0 > 0 && pi(1,j)/w0 ~=0
H0 = H0 - (pi(1,j)/w0).*log(pi(1,j)/w0); %计算各个阈值下的前景熵
else
H0 = H0;
end
end
for j=m+1:n
if w1 > 0 && pi(1,j)/w1 ~=0
H1 = H1 - (pi(1,j)/w1).*log(pi(1,j)/w1); %计算各个阈值下的背景熵
else
H1 = H1;
end
end
for j=n+1:k
if w2 > 0 && pi(1,j)/w2 ~=0
H2 = H2 - (pi(1,j)/w2).*log(pi(1,j)/w2); %计算各个阈值下的背景熵
else
H2 = H2;
end
end
for j=k+1:256
if w3 > 0 && pi(1,j)/w3 ~=0
H3 = H3 - (pi(1,j)/w3).*log(pi(1,j)/w3); %计算各个阈值下的背景熵
else
H3 = H3;
end
end
fx(i)=H0+H1+H2+H3;
end
end
3 仿真结果
4 参考文献
[1]韦苗苗,江铭炎. (2005). 基于粒子群优化算法的多阈值图像分割. 山东大学学报:工学版, 35(6), 4.
部分理论引用网络文献,若有侵权联系博主删除。