一、粒子群算法自适应多阈值图像分割简介

理论知识参考:【基础教程】基于matlab图像处理图像分割【含Matlab源码 191期】
粒子群优化的多阈值图像自分割算法

二、部分源代码

clc;clear;close all;                %% 输入图像;
Imag = imread('24063.jpg');%296059
Imag=rgb2gray(Imag);
Image_OSTU=Imag;%% 开始种群等基本定义
N = 500;                           % 初始种群个数
d = 2;                             % 阈值个数(参看上述的函数表达式)
ger = 300;                         % 最大迭代次数
plimit = [1,256];vlimit = [-2.5, 2.5;-2.5, 2.5];    % 设置速度限制
w = 0.8;                           % 惯性权重,个体历史成绩对现在的影响0.5~1之间
%还有自适应调整权重、随机权重等等
%(不同的权重设置很影响性能,按需要选取)c1 = 0.5;                          % 自我学习因子
c2 = 0.5;                          % 群体学习因子 x = zeros(N, 2);
for i = 1:N                                             %对每一个个体x(i,1) = floor(plimit(1) + (plimit(2) - plimit(1)) * rand);%初始种群的位置x(i,2) = floor(x(i,1) + (plimit(2) - x(i,1)) * rand);%初始种群的位置
end v = rand(N, d);                   % 初始种群的速度,500行2列分别在两个维度上
xm = x;                           % 每个个体的历史最佳位置
ym = zeros(1, d);                 % 种群的历史最佳位置,两个维度,设置为0
fxm = zeros(N, 1);                % 每个个体的历史最佳适应度,设置为0
fym = -inf;                       % 种群历史最佳适应度,求最大值先设置成负无穷iter=1;                             %初始的迭代次数因为用while设置为一
times = 1;
record = zeros(ger, 1);             %记录器%% 迭代更新开始
while iter <= gerfx = f(x);               % 代入x中的二维数据,算出个体当前适应度,为500行1列的数据   for i = 1:N                    %对每一个个体做判断if fxm(i) < fx(i)           %如果每个个体的历史最佳适应度小于个体当前适应度fxm(i) = fx(i);         % 更新个体历史最佳适应度,第一轮就是把小于零的清除xm(i,:) = x(i,:);       % 更新个体历史最佳位置end endif fym < max(fxm)                  %种群历史最佳适应度小于个体里面最佳适应度的最大值[fym, nmax] = max(fxm);    % 更新群体历史最佳适应度,取出最大适应度的值和所在行数即位置endv = v * w + c1 * rand *(xm - x) + c2 * rand *(repmat(ym, N, 1) - x); % 速度更新公式,repmat函数把ym矩阵扩充成N行1列%%边界速度处理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 = floor(x + v);                          % 位置更新for j=1:Nif  x(j,1)> plimit(2)x(j,1)=plimit(2);endif  x(j,1) < plimit(1)x(j,1)=plimit(1);endif  x(j,2)> plimit(2)x(j,2)=plimit(2);endif  x(j,2) < x(j,1)x(j,2)=x(j,1);endendend%% 作图
figure(3);
plot(record);                %画出最大值的变化过程
title('收敛过程')threshold1 = ym(1);
threshold2 = ym(2);
[height,length]=size(Image_OSTU);
for i=1:lengthfor j=1:heightif Image_OSTU(j,i)>=threshold2Image_OSTU(j,i)=255;elseif Image_OSTU(j,i)<=threshold1Image_OSTU(j,i)=0;else  Image_OSTU(j,i)=(threshold1+threshold2)/2;endend
end
figure(4);
imshow(Image_OSTU);
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:lengthfor j=1:heightnumber=Imag(j,i)+1;pixelCount(number)=pixelCount(number)+1;end
enda=1:256;fx = zeros(1, 500);
for i=1:500m=x(i,1);n=x(i,2);w0=sum(pi(1:m));w1=sum(pi(m+1:n));w2=sum(pi(n+1:256));mean0=sum(pi(1:m).*a(1:m))/w0;mean1=sum(pi(m+1:n).*a(m+1:n))/w1;mean2=sum(pi(n+1:256).*a(n+1:256))/w2;fx(i)=w0*w1*(mean0-mean1)^2+w0*w2*(mean0-mean2)^2+w1*w2*(mean1-mean2)^2;
end
end

三、运行结果


四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 蔡利梅.MATLAB图像处理——理论、算法与实例分析[M].清华大学出版社,2020.
[2]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013.
[3]周品.MATLAB图像处理与图形用户界面设计[M].清华大学出版社,2013.
[4]刘成龙.精通MATLAB图像处理[M].清华大学出版社,2015.

【阙值分割】基于matlab粒子群算法自适应多阈值图像分割【含Matlab源码 1459期】相关推荐

  1. 【ELM回归预测】基于matlab粒子群算法优化ELM回归预测【含Matlab源码 036期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源: [优化预测]基于matlab粒子群算法优化ELM神经网络预测[含Matlab源码 036期] 二.粒子群算法及ELM简介 1 粒子群算法简 ...

  2. 【SVM回归预测】基于matlab粒子群算法优化SVM回归预测【含Matlab源码 1424期】

    ⛄一.粒子群算法简介 1 引言 自然界中的鸟群和鱼群的群体行为一直是科学家的研究兴趣所在.生物学家Craig Reynolds在1987年提出了一个非常有影响的鸟群聚集模型,在他的仿真中,每一个个体都 ...

  3. 【ELM回归预测】基于matlab粒子群算法优化ELM回归预测【含Matlab源码 1722期】

    一.粒子群算法优化极限学习机ELM简介 PSO-ELM优化算法预测模型 ELM模型在训练之前可以随机产生ω和b, 只需要确定隐含层神经元个数及隐含层神经元激活函数, 即可实现ELM预测模型的构建.在E ...

  4. 【ELM回归预测】基于matlab粒子群算法优化ELM回归预测【含Matlab源码 1586期】

    一.粒子群算法简介 1 粒子群算法简介 1.1 引言 自然界中的鸟群和鱼群的群体行为一直是科学家的研究兴趣所在.生物学家Craig Reynolds在1987年提出了一个非常有影响的鸟群聚集模型,在他 ...

  5. 【图像融合】基于matlab粒子群优化自适应多光谱图像融合【含Matlab源码 004期】

    一.图像融合简介 1 图像融合的具体步骤 (1)对全色图像和多光谱图像进行图像预处理,包括图像滤波.重采样.图像配准. (2)将预处理后的多光谱图像fmul进行IHS变换,分别得到fmul-i(亮度) ...

  6. 【飞行器】基于matlab蚁群算法飞行器巡检路径【含Matlab源码 268期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[飞行器]基于matlab蚁群算法飞行器巡检路径[含Matlab源码 268期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: ...

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

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

  8. 【Matlab身份证识别】身份证号码识别【含GUI源码 014期】

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

  9. 【Matlab车牌识别】停车计费系统【含GUI源码 735期】

    一.代码运行视频(哔哩哔哩) [Matlab车牌识别]停车计费系统[含GUI源码 735期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MATLA ...

  10. 【Matlab生物电信号】生物电信号仿真【含GUI源码 684期】

    一.代码运行视频(哔哩哔哩) [Matlab生物电信号]生物电信号仿真[含GUI源码 684期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]董兵,超于毅,李 ...

最新文章

  1. FineUI小技巧(5)向子窗口传值,向父窗口传值
  2. aspxgridview 增加行号
  3. Spring Cloud云服务架构 - HongHu云架构代码结构分析
  4. java 操作系统 模拟 daima_编写一个程序,利用Java语言模拟操作系统进程调度管理...
  5. 使用机器视觉模式识别屏幕
  6. c语言学习进阶-C语言程序稳定性测试
  7. Git 的origin和master分析 push/diff/head
  8. python importlib
  9. 游戏筑基之选择分支语句(C语言)
  10. 1000mx3连电脑没声音_Mac电脑没声音了怎么办?解决Mac上声音问题
  11. 聚合路由器的原理和应用
  12. 怎么用计算机测出来体脂,如何测自己的体脂率?
  13. 因执迷而绽放,终登聆听贡献者荣誉榜
  14. 数据即服务(DaaS)
  15. 使用winrar压缩分卷(csdn上传大资源使用)
  16. None、Null与空字符‘‘什么区别
  17. 密码的常见加密方式,你都了解多少?
  18. SQL SERVER 用户自定义函数(UDF)深入解析
  19. 【Android】Mac M1 Android开发环境搭建(Android Studio和JDK安装)
  20. 丹佛斯变频器al14故障代码_丹佛斯变频器常见故障代码分析及维修办法

热门文章

  1. Myeclipse2014在线安装SVN插件
  2. sort排序命令 uniq 去除排序过的文件中的重复行 cut提取命令 wc 统计命令
  3. 全触摸模式,让你尽享ipad 开发出的精品
  4. hdu 1907John博弈
  5. caffe 安装(only cpu)
  6. 3D数学——Unity中的向量运算
  7. 传智播客 C/C++学习笔记 内存四区模型
  8. Atitit 防烫伤指南与规范 attilax总结
  9. Atiitt 降低财政赤字风险性实施方案
  10. Atitit 界面接口技术 cli gui nui cui管理 attilax总结 1. NUI 1 1.1. 问:什么是“自然用户界面”? 1 2. Cli到gui到nui CUI 2 2.1.