粒子群算法优化的OTSU图像分割

文章目录

  • 1 基本概念
  • 2 算法实现
  • 3 算法优化举例
  • 4 算法构成要素分析
  • 5算法优缺点分析
  • 6 算法图像分割中应用

1 基本概念

粒子群优化算法(PSO):它是进化算法的一种,它源于鸟群捕食的行为研究,基本思想是通过群体中个体之间的协作和信息共享来寻找最优解。在PSO中,每个优化问题的潜在解都是搜索空间中的一只鸟,抽象为粒子,每个粒子都有一个由目标函数决定的适应值,以及决定它们飞行的方向和距离。
粒子几点解释:
1、每个寻优问题的解被称为“粒子”,所有粒子都在一个D维空间内进行搜索
2、每个粒子都由一个适应度函数确定适应值以判断目前位置的好坏
3、每一个粒子都有记忆功能,能记住它经过的最佳位置
4、每一个粒子有一个速度以决定其移动的距离和方向

2 算法实现

算法流程
在这里插入图片描述
1、初始化:
初始化粒子群,给每个粒子赋予随机的初始位置和速度
2、计算适应值:
根据适应度函数,计算每个粒子的适应值
3、求个体最佳适应值:
对每个粒子,将其当前位置适应值与其历史最佳位置对应适应值比较,若当前位置适应值更高,则用当前位置更新历史最佳位置
4、求群体最佳适应值:
对每一个粒子,将其当前位置适应值与其全局最佳位置对应适应值比较,如果当前位置的适应值更高,则用当前位置更新全局最佳位置
5、更新粒子位置和速度:
根据公式更新每个粒子的速度与位置
6、判断算法是否结束:
通常算法达到最大迭代次数或者最佳适应度值的增量小于某个给定的阈值时算法停止
速度位置更新公式:
粒子i的第D维速度更新公式:在这里插入图片描述
粒子i的第D维位置更新公式:
在这里插入图片描述
几点说明:
在这里插入图片描述
第一部分为粒子先前的速度
第二部分为“认知部分”,表示粒子本身的思考,可理解为粒子i当前位置与自己最好位置之间的距离
第三部分为“社会部分”,表示粒子间的信息共享和合作,可理解为粒子i当前位置与群体最好位置之间的距离。
粒子的速度是三个方向速度的加权矢量和
在这里插入图片描述

3 算法优化举例

y = (Asin(A) cos(2A) - 2 A sin(3 A))×(B sin(B) cos(2 B) - 2 Bsin(3 B))
Matlab代码实现

//粒子群算法Matlab代码实现
clc;clear;close all;
%% 初始化种群
f= @(a,b)(a .* sin(a) .* cos(2 * a) - 2 * a .* sin(3 * a)).*(b .* sin(b) .* cos(2 * b) - 2 * b .* sin(3 * b)); % 函数表达式
figure(1);
[x0_1, x0_2]=meshgrid(0:.2:20);
y0=f(x0_1,x0_2);
mesh(x0_1, x0_2, y0);
hold on;N = 500;                         % 初始种群个数
d = 2;                          % 空间维数
ger = 300;                      % 最大迭代次数     
limit = [0, 20;0,20];                % 设置位置参数限制(矩阵的形式可以多维)
vlimit = [-1.5, 1.5;-1.5, 1.5];               % 设置速度限制
c_1 = 0.8;                        % 惯性权重
c_2 = 0.5;                       % 自我学习因子
c_3 = 0.5;                       % 群体学习因子 for i = 1:dx(:,i) = limit(i, 1) + (limit(i, 2) - limit(i, 1)) * rand(N, 1);%初始种群的位置
end    
v = rand(N, d);                  % 初始种群的速度
xm = x;                          % 每个个体的历史最佳位置
ym = zeros(1, d);                % 种群的历史最佳位置
fxm = zeros(N, 1);               % 每个个体的历史最佳适应度
fym = -inf;                      % 种群历史最佳适应度plot3(xm(:,1),xm(:,2),f(xm(:,1),xm(:,2)), 'ro');title('初始状态图');
hold on;
figure(2);
mesh(x0_1, x0_2, y0);
hold on;
plot3(xm(:,1),xm(:,2),f(xm(:,1),xm(:,2)), 'ro');
hold on;
%% 粒子群工作
iter = 1;
times = 1; 
record = zeros(ger, 1);          % 记录器
while iter <= gerfx = f(x(:,1),x(:,2)) ; % 个体当前适应度   for i = 1:N      if fxm(i) < fx(i)fxm(i) = fx(i);     % 更新个体历史最佳适应度xm(i,:) = x(i,:);   % 更新个体历史最佳位置end end
if fym < max(fxm)[fym, nmax] = max(fxm);   % 更新群体历史最佳适应度ym = xm(nmax, :);      % 更新群体历史最佳位置endv = v * c_1 + c_2 * rand *(xm - x) + c_3 * rand *(repmat(ym, N, 1) - x);% 速度更新% 边界速度处理for i=1:d for j=1:Nif  v(j,i)>vlimit(i,2)v(j,i)=vlimit(i,2);endif  v(j,i) < vlimit(i,1)v(j,i)=vlimit(i,1);endendend       x = x + v;% 位置更新% 边界位置处理for i=1:d for j=1:Nif  x(j,i)>limit(i,2)x(j,i)=limit(i,2);endif  x(j,i) < limit(i,1)x(j,i)=limit(i,1);endendendrecord(iter) = fym;%最大值记录if times >= 10cla;mesh(x0_1, x0_2, y0);plot3(x(:,1),x(:,2),f(x(:,1),x(:,2)), 'ro');title('状态位置变化');pause(0.5);times=0;enditer = iter+1;times=times+1;
end
figure(3);plot(record);title('收敛过程')
figure(4);
mesh(x0_1, x0_2, y0);
hold on;
plot3(x(:,1),x(:,2),f(x(:,1),x(:,2)), 'ro');title('最终状态图');disp(['最大值:',num2str(fym)]);
disp(['变量取值:',num2str(ym)]);

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4 算法构成要素分析

1.种群大小N
N过小,陷入局优的可能性很大; N过大,优化能力很好,但计算时间大幅提高,收敛速度慢。
2.权重因子w
w较大,有利于跳出局部极小点,增强粒子的全局搜索能力。w较小,利于粒子的局部搜索能力
3.最大速度
作用在于维护算法的探索能力与开发能力的平衡, Vm较大时,增强了全局搜素能力,但粒子容易飞过最优解,导致局部搜索能力下降。较小时,开发能力增强,但会极大地增加全局搜索的时间,容易陷入局部最优。速度取值一般为优化变量范围的10-20%。
4.学习因子c1、c2
c1=0,“只有社会,没有自我”迅速丧失群体多样性,易陷入局优而无法跳出。c2=0,“只有自我,没有社会”完全没有信息的社会共享,导致算法收敛速度缓慢 。

5算法优缺点分析

PSO算法的优点:
算法通用性强,不依赖于问题信息,全局搜索精度高。
群体搜索,并具有记忆功能,保留局部个体和全局种群的最优信息,无需梯度信息。
原理结构简单,设置参数少,容易实现。
协同搜索,同时利用个体局部信息和群体全局信息指导搜索,收敛速度快。
PSO算法的缺点:
算法局部搜索能力较差,搜索精度不够高。
算法不能够绝对保证搜索到全局最优解,容易陷入局部最优解。
算法搜索性能对参数具有一定的依赖性。

6 算法图像分割中应用

粒子群算法优化OTSU图像分割:
1.粒子群的个体初始化
确定种群数量,在OTSU图像分割中一般设定粒子群数量为15,这15个粒子代表15个不同的灰度值(15个不同的阈值),这15个粒子的灰度值只能在0-255内的整数
2.设置每个粒子的初始速度
初始速度就相当于每次改变位置的步长,不能太大也不能太小,更不能超出0-255范围
3.计算每个粒子的最佳位置和全局最佳位置
根据最大类间方差公式,计算每个粒子的最大类间方差,并找到全局最大类间方差确定其位置
4.判断算法是否结束
如果全局最大方差对应的位置不是你最终要的位置就重复1~3步骤,直到找到最佳分割阈值。
PSO算法已在图像分割、图像配准、图像融合、图像识别、图像压缩和图像合成等方面发挥作用
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/61104.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习(四十三):使用粒子群优化进化神经网络

文章目录 神经网络粒子群优化 (PSO)粒子常数迭代实现构建神经网络神经网络优化函数配置PSO优化PSO可视化K折交叉PSO优化K折查看结果神经网络 神经网络是机器学习算法,它学习如何使用训练示例来完成任务。该算法模拟我们大脑的行为来学习数据中的模式。 我们在神经网络中有三…

生成树与快速生成树(STP、RSTP)原理

STP生成树&#xff08;IEEE 802.1D&#xff09; 为什么需要生成树&#xff1f; 链路聚合技术只有线路的冗余&#xff0c;没有设备的冗余&#xff0c;如果要做设备上的冗余&#xff0c;就可以做生成树。表面上看生成树的作用是做设备冗余时&#xff0c;防止成环的一种途径&…

改进粒子群算法,遗传粒子群优化算法GAPSO,混沌粒子群算法CPSO,matlab程序

改进粒子群算法&#xff0c;遗传粒子群优化算法GAPSO&#xff0c;混沌粒子群算法CPSO&#xff0c;matlab程序 ID:91100672404209154专业算法工程师

2021-10-06 粒子群算法记录学习

粒子群算法的寻优算法记录学习&#xff08;由于时间关系未添加代码&#xff09; 粒子群算法&#xff08;PSO&#xff09;是计算智能领域&#xff0c;除了蚁群算法&#xff0c;鱼群算法之外的一种群体智能的优化算法。PSO算法源于对鸟类捕食行为的研究&#xff0c;鸟类捕食时&am…

粒子群算法原理|python实现|参数调优

粒子群算法是比较有名的群体智能算法之一&#xff0c;其他群体智能算法还包括蚁群算法、鱼群算法、人工蜂群算法等。今天学习一下粒子群算法。 文章目录 算法原理&#xff08;Inspiration&#xff09;优化过程python实现参数调优w参数的设置参数 c i c_i ci​的设置速度范围的…

STP生成树原理

环路引起的问题 二层交换网络 随着局域网规模的不断扩大&#xff0c;越来越多的交换机被用来实现主机之间的互连。如果交换机之间仅使用一条链路互连&#xff0c;则可能会出现单点故障&#xff0c;导致业务中断。为了解决此类问题&#xff0c;交换机在互连时一般都会使用冗余…

系统发育树的美化~Figtree(图文教程)

前言 figtree是一款用于进化生物学的进化树作图软件&#xff0c;常用于进化树的美化&#xff0c;可以设置颜色、名称、样式等参数。官网如下&#xff1a; FigTreehttp://tree.bio.ed.ac.uk/software/figtree/ 一、Figtree的安装 进入figtree的官网后&#xff0c;点击下图箭…

MEGA软件——系统发育树构建方法(图文讲解) 转载

转载&#xff1a;http://www.plob.org/2012/12/02/4927.html 一、序列文本的准备 构树之前先将目标基因序列都分别保存为txt文本文件中&#xff08;或者把所有序列保存在同一个txt文本中,可以用“>基因名称”作为第一行&#xff0c;然后重起一行 编辑基因序列&#xff09;&a…

粒子群算法介绍、matlab实现及相关改进

粒子群算法介绍、matlab实现及相关改进 参数 N&#xff1a;粒子数量 ⟹ \Longrightarrow ⟹一般取[20,40]&#xff0c;对于较难或者特定类别的问题&#xff0c;可以取[100,200]; D&#xff1a;决策变量维度 iter_Max&#xff1a;最大迭代次数 X&#xff1a;决策变量 V&…

文件树生成器

文件树生成 (批处理指令) 就是一个WIN的批处理指令 前言 最近在编写文档时,发现数据量有点多,并且文件的位置繁杂,于是就想着弄一个文件树的软件, 发现 Win 的的 CMD 命令中有tree这个指令, 于是就弄了下BAT 文件 好处 整体因人而异 我说说,我觉得的优点 可以快速的帮我…

STP生成树详解_01

一 、生成树协议产生的背景 1、局域网中出现的主要问题&#xff1a; 1) 网络互联 交换机和网线 2) 广播过多 分隔广播域 vlan 3) 局域网中终端设备较多&#xff0c;200台以上的计算机互通&#xff0c;需要多台交换机&#xff1f; 多台交换机之间如何连线&#xff1f; 交换机…

粒子群算法实现之python

python实现粒子群算法 粒子群算法&#xff08;PSO&#xff09;&#xff0c;又可以叫做鸟群算法&#xff0c;是学者观察模仿鸟群的行为而发展的一种智能搜索算法&#xff0c;和遗传算法一样&#xff0c;也是一种群智能算法。 总的来说&#xff0c;粒子群算法也是一种进化算法&a…

【iOS-Cocos2d游戏开发之十】添加粒子系统特效并解决粒子特效与Layer之间的坐标问题;

李华明Himi 原创,转载务必在明显处注明&#xff1a; 转载自 【黑米GameDev街区】 原文链接: http://www.himigame.com/iphone-cocos2d/472.html 一直以来Himi特别想在游戏中使用粒子系统&#xff0c;但是之前做J2me与Android中发现使用粒子做的效果都会造成游戏运行内存的一…

第十二讲:生成树概念及STP技术应用

在传统的交换网络中&#xff0c;设备通过单条链路进行连接&#xff0c;当某一个点或是某一个链路发生故障时可能导致网络无法访问&#xff0c;解决这种问题的办法是在网络中提供冗余链路&#xff0c;但是交换机网络中的冗余链路会产生广播风暴、MAC地址失效等现象&#xff0c;最…

粒子群算法及其改进

1 粒子群算法介绍 求解非线性最优化问题时&#xff0c;有一种比较常用的算法为智能体算法&#xff0c;这里我们介绍的粒子群算法就隶属于智能体算法。 粒子群算法是模拟鸟寻找食物&#xff1a;一群鸟在随机的搜索食物。在这个区域里只有一块食物&#xff0c;所有的鸟都不知道食…

系统发育树的生成与美化(MEGA7和iTOL)--1.MEGA7生成系统发育树

#小白学习生成系统发育树 1.序列准备-本文中的数据LOC号是在文献中的附件中所找到的&#xff0c;然后在Phytozome v13中逐个查找氨基酸序列&#xff0c;需要输入所查找的物种名称&#xff0c;以及基因号&#xff0c;如下图所示&#xff1a; 下滑看到蛋白质序列 然后将蛋白质序…

PCL 基于最小生成树(MST)获取单木骨架(粗)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 提取的过程大体上分为两个部分:生成单木MST(最小生成树)以及基于该MST获取大致的骨架结构(线条)。 具体的计算过程如下所述: 1、首先应用Delaunay三角剖分来构造初始图。Delaunay三角剖分是MST计算的基础,因…

详解综合学习粒子群算法——CLPSO(附该文作者给出的matlab代码)

最近团队出了两篇基于CLPSO[1]的改进算法&#xff0c;这里根据自己的理解分析一下这个综合学习的算法&#xff0c;并将文章作者给出的源代码分享出来供大家学习&#xff1a;https://download.csdn.net/download/Bernard_S/12612817 (免费下载&#xff0c;本身就是从作者的主页搬…

进化算法之粒子群算法和Matlab实现(多维)

&#xff08;粒子群算法进阶讲解传送门&#xff1a;(https://blog.csdn.net/DBLLLLLLLL/article/details/103036067) &#xff09; 前面一篇文章介绍了遗传算法&#xff0c;这里再介绍一种进化算法&#xff0c;称为粒子群算法。同遗传算法类似&#xff0c;粒子群算法也是仿照了…

粒子群算法及通过惯性权重和学习因子对其进行改进—MATLAB实现

本文的代码将放在最后&#xff0c;需要的小伙伴们可以免费获取哦&#xff01;&#xff01;&#xff01; 不要忘记点赞加关注奥&#x1f60b;&#x1f60b; 文章目录 粒子群算法一、理论基础1、介绍2、核心公式3、图形直观解释 二、问题描述三、解题思路四、MATLAB实现1、参数设…