⛄一、 灰狼算法简介

1 前言
灰狼优化算法(Grey Wolf Optimizer,GWO)由澳大利亚格里菲斯大学学者 Mirjalili 等人于2014年提出来的一种群智能优化算法。该算法受到了灰狼捕食猎物活动的启发而开发的一种优化搜索方法,它具有较强的收敛性能、参数少、易实现等特点。近年来受到了学者的广泛关注,它己被成功地应用到了车间调度、参数优化、图像分类等领域中。
2 算法原理
灰狼隶属于群居生活的犬科动物,且处于食物链的顶层。灰狼严格遵守着一个社会支配等级关系。如图:

社会等级第一层:狼群中的头狼记为 \alpha,\alpha 狼主要负责对捕食、栖息、作息时间等活动作出决策。由于其它的狼需要服从\alpha 狼的命令,所以 \alpha 狼也被称为支配狼。另外, \alpha 狼不一定是狼群中最强的狼,但就管理能力方面来说, \alpha 狼一定是最好的。
社会等级第二层:\beta 狼,它服从于 \alpha 狼,并协助 \alpha 狼作出决策。在 \alpha 狼去世或衰老后,\beta 狼将成为 \alpha 狼的最候选者。虽然 \beta 狼服从 \alpha 狼,但 \beta 狼可支配其它社会层级上的狼。
社会等级第三层:\delta 狼,它服从 \alpha 、\beta 狼,同时支配剩余层级的狼。\delta 狼一般由幼狼、哨兵狼、狩猎狼、老年狼及护理狼组成。
社会等级第四层:\omega 狼,它通常需要服从其它社会层次上的狼。虽然看上去 \omega 狼在狼群中的作用不大,但是如果没有 \omega 狼的存在,狼群会出现内部问题如自相残杀。
GWO 优化过程包含了灰狼的社会等级分层、跟踪、包围和攻击猎物等步骤,其步骤具体情况如下所示。

1)社会等级分层(Social Hierarchy)当设计 GWO 时,首先需构建灰狼社会等级层次模型。计算种群每个个体的适应度,将狼群中适应度最好的三匹灰狼依次标记为 \alpha、\beta 、\delta ,而剩下的灰狼标记为 \omega。也就是说,灰狼群体中的社会等级从高往低排列依次为; \alpha、\beta 、\delta 及 \omega。GWO 的优化过程主要由每代种群中的最好三个解(即 \alpha、\beta 、\delta )来指导完成。
2)包围猎物( Encircling Prey )灰狼捜索猎物时会逐渐地接近猎物并包围它,该行为的数学模型如下:

式中:t 为当前迭代次数:。表示 hadamard 乘积操作;A 和 C 是协同系数向量;Xp 表示猎物的位置向量; X(t) 表示当前灰狼的位置向量;在整个迭代过程中 a 由2 线性降到 0; r1 和 r2 是 [0,1] 中的随机向量。
3)狩猎( Hunring)
灰狼具有识别潜在猎物(最优解)位置的能力,搜索过程主要靠 \alpha、\beta 、\delta 灰狼的指引来完成。但是很多问题的解空间特征是未知的,灰狼是无法确定猎物(最优解)的精确位置。为了模拟灰狼(候选解)的搜索行为,假设 \alpha、\beta 、\delta 具有较强识别潜在猎物位置的能力。因此,在每次迭代过程中,保留当前种群中的最好三只灰狼( \alpha、\beta 、\delta ),然后根据它们的位置信息来更新其它搜索代理(包括 \omega)的位置。该行为的数学模型可表示如下:

式中:X_{{\alpha }}、X{{\beta }}、X{{\delta }} 分别表示当前种群中 \alpha、\beta 、\delta 的位置向量;X表示灰狼的位置向量;D{{\alpha }}、D{{\beta }}、D{_{\delta }} 分别表示当前候选灰狼与最优三条狼之间的距离;当|A|>1时,灰狼之间尽量分散在各区域并搜寻猎物。当|A|<1时,灰狼将集中捜索某个或某些区域的猎物。

从图中可看出,候选解的位置最终落在被 \alpha、\beta 、\delta 定义的随机圆位置内。总的来说, \alpha、\beta 、\delta 需首先预测出猎物(潜
在最优解)的大致位置,然后其它候选狼在当前最优兰只狼的指引下在猎物附近随机地更新它们的位置。

4)攻击猎物(Attacking Prey)构建攻击猎物模型的过程中,根据2)中的公式,a值的减少会引起 A 的值也随之波动。换句话说,A 是一个在区间[-a,a](备注:原作者的第一篇论文里这里是[-2a,2a],后面论文里纠正为[-a,a])上的随机向量,其中a在迭代过程中呈线性下降。当 A 在[-1,1]区间上时,则捜索代理(Search Agent)的下一时刻位置可以在当前灰狼与猎物之间的任何位置上。

5)寻找猎物(Search for Prey)灰狼主要依赖 \alpha、\beta 、\delta 的信息来寻找猎物。它们开始分散地去搜索猎物位置信息,然后集中起来攻击猎物。对于分散模型的建立,通过|A|>1使其捜索代理远离猎物,这种搜索方式使 GWO 能进行全局搜索。GWO 算法中的另一个搜索系数是C。从2)中的公式可知,C向量是在区间范围[0,2]上的随机值构成的向量,此系数为猎物提供了随机权重,以便増加(|C|>1)或减少(|C|<1)。这有助于 GWO 在优化过程中展示出随机搜索行为,以避免算法陷入局部最优。值得注意的是,C并不是线性下降的,C在迭代过程中是随机值,该系数有利于算法跳出局部,特别是算法在迭代的后期显得尤为重要。

⛄二、部分源代码

%% 清空环境
clc
clear
close all

%%
img = imread(‘lena.jpg’);

% img_ori=rgb2gray(img);
% img=rgb2gray(img);

%目标函数
fitness=@(X)OTSU(img,X);
%阈值个数,优化下边界,上边界,最大迭代次数,种群数量。
num_Threshold=3;
lb=0;
ub=255;
max_iter=100;
sizepop=20;
%调用优化算法
[Best_pos,Best_score,GWO_curve]=GWO(sizepop,max_iter,lb,ub,num_Threshold,fitness);
max_xigama2=1/Best_score;
best_threshold=sort(floor(Best_pos));

%% 迭代图
figure
plot(GWO_curve)
title(‘GWO优化曲线’)
xlabel(‘迭代次数’)
ylabel(‘适应度’)
disp([‘最大类间方差为:’,num2str(max_xigama2)])

%% 多阈值分割后的图片
%每一段的灰度值
value_gray=floor(255/num_Threshold);
class_num=num_Threshold+1;

for i=1:class_num
if i==1
index=find(img<=best_threshold(i));
img(index)=0;
elseif i<=class_num-1
index=find(img>best_threshold(i-1) & img<=best_threshold(i));
img(index)=value_gray*(i-1);
else
index=find(img>=best_threshold(i-1) & img<=255);
img(index)=255;

end

end

%% 绘制阈值分割后的图
figure;
%绘制原图
subplot(131)
imshow(img);
title(‘原图’)

subplot(132)
imhist(img)
title(‘灰度直方图’)
subplot(133)
imshow(img),title(‘GWO算法多阈值分割后的图像’,‘fontsize’,16);
%% 得到的最佳阈值为:
disp([‘GWO优化算法优化得到的阈值分别为:’,num2str(floor(Best_pos))])

⛄三、运行结果



⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]周晨航,田力威,赵宏伟.基于改进萤火虫算法的二维Otsu图像分割法[J].沈阳大学学报(自然科学版). 2016,28(01)
[2]王钛,许斌,李林国,亓晋.基于离散灰狼算法的多级阈值图像分割[J].计算机技术与发展,2016年07期

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

【图像分割】基于matlab灰狼算法二维oust图像分割【含Matlab源码 2574期】相关推荐

  1. 【图像分割】灰狼算法二维oust图像分割【含Matlab源码 2574期】

    ⛄一. 灰狼算法简介 1 前言 灰狼优化算法(Grey Wolf Optimizer,GWO)由澳大利亚格里菲斯大学学者 Mirjalili 等人于2014年提出来的一种群智能优化算法.该算法受到了灰 ...

  2. 【图像分割-阈值分割】基于灰狼算法二维oust图像分割附matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  3. 【Matlab图像加密】正交拉丁方置乱算法图像加解密【含GUI源码 182期】

    一.代码运行视频(哔哩哔哩) [Matlab图像加密]正交拉丁方置乱算法图像加解密[含GUI源码 182期] 二.matlab版本及参考文献 一.代码运行视频(哔哩哔哩) [Matlab图像处理]自动 ...

  4. 【Matlab条形码识别】二维条形码识别【含GUI源码 607期】

    一.代码运行视频(哔哩哔哩) [Matlab条形码识别]二维条形码识别[含GUI源码 607期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  5. 【Matlab图像检索】综合特征图像检索【含GUI源码 395期】

    一.代码运行视频(哔哩哔哩) [Matlab图像检索]综合特征图像检索[含GUI源码 395期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  6. 【Matlab肌电信号】肌电信号处理【含GUI源码 966期】

    一.代码运行视频(哔哩哔哩) [Matlab肌电信号]肌电信号处理[含GUI源码 966期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余继周,杨 ...

  7. 【Matlab语音处理】声音信号频谱分析仪【含GUI源码 325期】

    一.代码运行视频(哔哩哔哩) [Matlab语音处理]声音信号频谱分析仪[含GUI源码 325期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊, ...

  8. 【LSTM回归预测】基于matlab灰狼算法优化LSTM回归预测【含Matlab源码 2038期】

    ⛄一.灰狼算法及LSTM简介 1 灰狼算法简介 1.1 前言 灰狼优化算法(Grey Wolf Optimizer,GWO)由澳大利亚格里菲斯大学学者 Mirjalili 等人于2014年提出来的一种 ...

  9. 【图像增强】基于matlab萤火虫算法图像对比度增强【含Matlab源码 2142期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[图像增强]基于matlab萤火虫算法图像对比度增强[含Matlab源码 2142期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方 ...

最新文章

  1. PHP APC安装与使用
  2. 使用OPATCH_DEBUG环境变量调试Opatch工具
  3. Struts2基础学习总结
  4. C语言求两个链表的合并点的算法(附完整源码)
  5. 计算机硬件相关名词,计算机硬件基础名词解释
  6. ssm(Spring+Spring mvc+mybatis)Dao接口——IDeptDao
  7. python基础小白题3
  8. 【youcans 的 OpenCV 例程200篇】147. 图像分割之孤立点检测
  9. Android开发--Button的应用
  10. java函数式编程入口_Java中的函数式编程
  11. javascript基础知识(6) 对象
  12. Windows Azure 云服务角色架构
  13. MyBatis之sql映射文件
  14. 突发!甲骨文严查Java授权,很多公司连夜卸载了JDK,启用OpenJDK 替代....
  15. ACM模板(Java)
  16. 大学什么专业学c语言和机械制图,机械设计工程师大学时应该学什么
  17. Packet Tracer 思科模拟器入门教程 实验报告1
  18. 大数据解决方案:Hadoop监控
  19. 如何用 canvas 画出分形图
  20. Linux(一):初识ARM Linux

热门文章

  1. linux 环境套件,环境安装
  2. VISP学习:二、Visp的手动安装
  3. 【简单易用的傻瓜式图标设计工具】Logoist 3.1 for Mac
  4. git pull时出现Enter passphrase for key ‘xxx/id_rsa‘
  5. 心跳信号分类-- 学习反馈TASK5
  6. 机器视觉之UVW平台纠偏原理与实现
  7. 驾驶技师用计算机考试咋答题,驾驶员技师考试题库与搜题,用到这款软件就行了!...
  8. JavaScript之变量提升
  9. PyCharm安装和配置
  10. html调取随机数字图片,05-图片随机数与访问(views)