看腻了关于深度学习的图像分割算法,今天搞一篇基于萤火虫优化算法的图像分割文章,关于现在的各种优化算法(人群搜索算法、人工蜂群算法、帝国竞争算法、智能水滴算法、生物地理优化算法、萤火虫算法、布谷鸟搜索算法、引力搜索算法、觅食搜索算法、蝙蝠算法、风驱动优化算法、手榴弹爆炸算法、头脑风暴优化算法、基于教与学的优化算法、花授粉算法、果蝇优化算法、磷虾群算法、狼群算法、海豚回声定位算法、鸽群优化算法、灰狼优化算法、物体碰撞优化算法、水波优化算法、闪电搜索算法、Jaya算法、蜻蜓算法、鲸鱼优化算法、多元宇宙优化算法、乌鸦搜索算法、蝴蝶算法、雷电附着优化算法、斑鬣狗优化算法、松鼠搜索算法,看的我真是。。。),真是食之无味,弃之也不可惜,和故障诊断类一样,也都是大水泛滥,一发不可收拾

关于优化算法,可参考知乎上的一些文章

现有的各种群智能优化算法(比如遗传算法,粒子群算法,萤火虫算法等)有什么区别吗,其实质是不是相同的? - 知乎 https://www.zhihu.com/question/30326374

现在模拟退火算法、粒子群优化算法、遗传算法和蚁群优化算法现在用的还多吗? - 知乎 https://www.zhihu.com/question/316175486

关于萤火虫优化算法,可比遗传算法什么的简单多了,可适当参考如下文章,本文不再赘述

第2回:萤火虫算法 (Firefly algorithm) - 陈星星的文章 - 知乎 https://zhuanlan.zhihu.com/p/67065319

直接进入主题,首先导入一幅水果图片

img=imread('fruit.jpg');
img=im2double(img);
gray=rgb2gray(img);
gray=imadjust(gray);

将图片转化为向量

X=gray(:)

萤火虫算法聚类

k = 6; %设置聚类个数
CostFunction=@(m) ClusterCost(m, X);     % 代价函数
VarSize=[k size(X,2)];           % 决策变量矩阵大小
nVar=prod(VarSize);              % 决策变量矩阵个数
VarMin= repmat(min(X),k,1);      % 变量下界
VarMax= repmat(max(X),k,1);      % 变量上界

萤火虫优化算法的参数

MaxIt = 100;         % 最大迭代次数
nPop = 10;            % 萤火虫种群数量
gamma = 1;            % 光吸收系数
beta0 = 2;            % 吸引力系数值
alpha = 0.2;          % 突变系数
alpha_damp = 0.98;    % 突变系数阻尼比
delta = 0.05*(VarMax-VarMin);     %突变范围
m = 2;
if isscalar(VarMin) && isscalar(VarMax)
dmax = (VarMax-VarMin)*sqrt(nVar);
else
dmax = norm(VarMax-VarMin);
end
% 设置一个空萤火虫结构
firefly.Position = [];
firefly.Cost = [];
firefly.Out = [];
% 初始化种群
pop = repmat(firefly, nPop, 1);
% 初始化最优解
BestSol.Cost = inf;
% 创建初始萤火虫
for i = 1:nPop
pop(i).Position = unifrnd(VarMin, VarMax, VarSize);
[pop(i).Cost, pop(i).Out] = CostFunction(pop(i).Position);
if pop(i).Cost <= BestSol.Cost
BestSol = pop(i);
end
end
% 保存最佳代价函数值的数组
BestCost = zeros(MaxIt, 1);

萤火虫算法主循环

for it = 1:MaxIt
newpop = repmat(firefly, nPop, 1);
for i = 1:nPop
newpop(i).Cost = inf;
for j = 1:nPop
if pop(j).Cost < pop(i).Cost
rij = norm(pop(i).Position-pop(j).Position)/dmax;
beta = beta0.*exp(-gamma.*rij^m);
e = delta.*unifrnd(-1, +1, VarSize);
%e = delta*randn(VarSize);
newsol.Position = pop(i).Position ...
+ beta.*rand(VarSize).*(pop(j).Position-pop(i).Position) ...
+ alpha.*e;
newsol.Position = max(newsol.Position, VarMin);
newsol.Position = min(newsol.Position, VarMax);
[newsol.Cost newsol.Out] = CostFunction(newsol.Position);
if newsol.Cost <= newpop(i).Cost
newpop(i) = newsol;
if newpop(i).Cost <= BestSol.Cost
BestSol = newpop(i);
end
end
end
end
end
% 合并
pop = [pop
newpop];
% 排列
[~, SortOrder] = sort([pop.Cost]);
pop = pop(SortOrder);
% 截断
pop = pop(1:nPop);BestCost(it) = BestSol.Cost;
BestRes(it)=BestSol.Cost;
disp(['Iteration ' num2str(it) ': Best Cost = ' num2str(BestCost(it))]);
% 突变系数
alpha = alpha*alpha_damp;
end
FAlbl=BestSol.Out.ind;

训练图绘制

figure;
plot(BestRes,'--k','linewidth',1);
title('FA Train');
xlabel('FA Iteration Number');
ylabel('FA Best Cost Value');

将聚类中心及其索引转换为图像,并作出分割结果图

算法的详细代码及数据参见如下链接

https://mianbaoduo.com/o/bread/YpyWlppx

gray2=reshape(FAlbl(:,1),size(gray));
segmented = label2rgb(gray2); figure;
subplot(1,2,1);
imshow(img);title('Original');
subplot(1,2,2);
imshow(segmented,[]);title('Segmented Image');

基于萤火虫优化算法的图像分割相关推荐

  1. 【图像分割】基于萤火虫优化的半监督谱聚类彩色图像分割方法(Matlab代码实现)

    目录 0 概述 1 萤火虫算法 1.1 思想来源 1.2 数学模型 1.2.1 萤火虫相对荧光亮度 1.2.2 萤火虫吸引度 1.2.3 位置更新 1.3 算法步骤 2 基于萤火虫优化的半监督谱聚类彩 ...

  2. 【智能优化算法-热交换算法】基于热交换优化算法求解多目标优化问题附matlab代码

    ​1 内容介绍 热 交 换 优 化 (Thermal Exchange Optimization, TEO)算法是一种基于牛顿冷却定律的新型优化算 法,在该算法中,物体的热损失率与物体和其周围 环境的 ...

  3. 【智能优化算法】萤火虫优化算法 (Firefly algorithm,FA),2009

    前言 萤火虫优化算法(Firefly algorithm,FA).由英国剑桥大学的 Yang 等人于 2009 年提出,主要模拟了萤火虫根据个体亮度而相互吸引的行为.作为最新的群智能优化算法之一 , ...

  4. 基于萤火虫优化的BP神经网络(分类应用) - 附代码

    基于萤火虫优化的BP神经网络(分类应用) - 附代码 文章目录 基于萤火虫优化的BP神经网络(分类应用) - 附代码 1.鸢尾花iris数据介绍 2.数据集整理 3.萤火虫优化BP神经网络 3.1 B ...

  5. Python构建基于elkan优化算法的K-Means聚类模型

    Python构建基于elkan优化算法的K-Means聚类模型 目录 Python构建基于elkan优化算法的K-Means聚类模型 #elkan优化算法

  6. 基于Kmeans聚类算法的图像分割(色彩分割)实战

    基于Kmeans聚类算法的图像分割(色彩分割)实战 图像分割是将一幅图像分割成多个像素区域的任务.属于同一对象类型的所有像素都被分配到同一类别下.图像分类是给一副完整的图像一个类别,目标检测是检测到图 ...

  7. 论文: 基于智能优化算法的测试数据生成综述

    缘由: 最近一直在看智能算法,然后进行了在测试函数上的实验,遇到问题. (1)测试函数 不是现实的问题,单纯的在测试函数 上进行一遍遍的比较,看不到具体的用途, 他的结果在我看来反应的 只是一个指标值 ...

  8. 模拟退火算法团簇matlab,基于模拟退火优化算法的二元团簇结构优化方法与流程...

    本发明涉及一种基于模拟退火优化算法的二元团簇结构优化方法. 背景技术: 在催化.光学.电学等诸多领域,二元合金团簇在基础科学与应用方面吸引了广泛的研究热情.而这些性质与二元团簇的几何结构有着密切的联系 ...

  9. MATLAB中果蝇味道浓度判定函数,基于果蝇优化算法对栓接结合部间距的优化方法与流程...

    本发明涉及机床基础制造领域,特别是涉及基于果蝇优化算法优化机床结合部螺栓之间间距的研究. 背景技术: 栓接结合部作为组成机床的基本部件,由于栓接结构在机床的组装和拆卸过程中的方便.简易,而被广泛用在机 ...

最新文章

  1. MyBatis逆向工程:根据table生成Model、Mapper、Mapper.xml
  2. 人工智能,机器学习,深度学习入门好文,强烈推荐
  3. 2017.4.11 AM
  4. C#命名空间namespace中不能直接包含字段(变量)或方法(函数)之类的成员
  5. TCPMP0.72RC1的编译与移植以及自己另外做UI完整方法
  6. C#中的DES加解密方法
  7. 掌握这8个CSS开发工具让你瞬间成为开发高手
  8. 鸿蒙2秒开机官方,两款荣耀智慧屏发布:鸿蒙OS首秀2秒开机,安卓应用迁移不难...
  9. 最最牛的SQL客户端软件
  10. c语言oj得pe,ACM入门之OJ~
  11. fiddler手机模拟器抓包_fiddler抓取手机模拟器数据
  12. php批量邮件地址,PHP通过phpmailer批量发送邮件功能
  13. 绿色数据中心“东数西算”全面启动
  14. 软件测试周刊(第67期):用一颗浏览的心,去看待人生,一切的得与失、隐与显,都是风景与风情。
  15. Hadoop3.2.0 HDFS DataNode管理员指南
  16. 笔记本无法连接WiFi
  17. 6617: Finite Encyclopedia of Integer Sequences
  18. 一文万字带你入门智能路由器OpenWrt系统,并在虚拟中安装配置OpenWrt
  19. vue 移动端头像裁剪_vue头像上传裁剪组件_一个漂亮的Vue组件,用于图像裁剪和上传...
  20. stata中计算公式命令_Stata数据处理:各种求和方式一览

热门文章

  1. 单元主服务器解决性能瓶颈的方法,HBase
  2. SAP物料主数据修改利润中心
  3. Ubuntu安装以及简单设置
  4. 外盘期货策略|9月17日美原油期货日内操盘策略
  5. 关于调用阿里云短信服务接口实现短信验证码的过程
  6. vue-cli3环境变量之打包文件没有hash值
  7. 一图掌握项目管理的20条锦囊妙计
  8. 功放前级的左右_Altitude32前级功放题 - 什么是全景声功放_全景声功放有哪些
  9. 小有成就感了 教会父母玩平板电脑
  10. 富士康计算机类笔试题,富士康笔试题目及答案