【图像分割】基于灰狼算法最小交叉熵多阈值图像分割matlab代码

273 阅读1分钟

1 简介

针对复杂图像的分割问题,提出一种基于灰狼算法的二维交叉熵多阈值图像分割方法.根据二维直方图斜分法得出交叉熵阈值选取公式,并将此推广到多阈值分割,以求得多个极值提高分割效果.由于二维交叉熵法在多阈值分割时计时长,复杂性高等问题,引入灰狼算法的思想,实现对多个阈值快速精确的寻优.最后,对标准图像进行分割以验证该算法,结果表明此算法比二维交叉熵穷举法计算效率高.

2 部分代码

%% 基于灰狼算法的最小交叉熵多阈值分割
clear all
clc
rng('default');
I = imread('lena.jpg');%读取图像
SearchAgents_no=50; %种群数量

Max_iteration=100; % 最大迭代次数

dim = 4;%阈值个数

lb = ones(1,dim); %下边界1
ub = 255.*ones(1,dim);%上边界255
fobj =@(thresh)fun(I,thresh);%适应度函数

[Best_score,Best_pos,GWO_cg_curve]=GWO(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);


%画阈值分割后的图
Best_Thresh = Best_pos;
Best_Thresh = sort(Best_Thresh);%阈值排序
[Iout]=YuZhiplot(I,Best_Thresh);
figure(1)
imshow(Iout,[]);
title('分割结果')

figure(2)
plot(GWO_cg_curve,'Color','r','linewidth',1.5)
title('适应度函数')
xlabel('迭代次数');
ylabel('适应度值');
legend('灰狼算法')
grid on;

display(['灰狼算法获得最优阈值为 : ', num2str(round(Best_pos))]);
display(['适应度值为 : ', num2str(Best_score)]);

3 仿真结果

4 参考文献

[1]李薇, 胡晓辉, and 王鸿闯. "基于BBO算法的二维交叉熵多阈值图像分割." 计算机应用研究 35.9(2018):3.

部分理论引用网络文献,若有侵权联系博主删除。

5 MATLAB代码与数据下载地址

见博客主页