【图像分割】粒子群优化T熵图像分割【含Matlab源码 286期】

news2024/9/23 23:32:44

⛄一、简介

本文所采用的基于熵的切割点和最小描述长度原则(MDLP)。

A.特征选择

特征选择是一个组合优化问题,因为在具有N个特征的数据集上有2N个可能的不同特征子集。FS方法通常有两个重要的部分组成,即搜索技术和特征评估方法。

在特征评估方面,FS方法通常可以分为过滤(filter)和包装(wrapper)方法。过滤法基于它们的内在特性来评估特性。过滤措施的例子有距离、信息增益、一致性和相关性。另一方面,包装法使用一种学习算法来度量所选特性的分类性能。在这个过程中可以使用不同的学习算法,比如k近邻(KNN)、决策树和支持向量机。一般来说,过滤器方法比包装器方法更快,然而,它们通常比包装器获得更低的分类精度。

在FS方法中搜索技术可以分为穷举搜索、启发式搜索、随机搜索和随机搜索。虽然穷举搜索保证找到最好的解决方案,但是由于它的计算时间太高,对大多数实际应用程序来说是不可行的。序列搜索如线性正向选择(LFS)和贪婪逐步逆向选择(GSBS)是启发式搜索的典型方法。这两种方法分别是序列正向选择(SFS)和序列逆向选择的派生版本。LFS通过限制每个步骤中考虑的特性的数量来提高SFS的有效性和效率。虽然向后选择可以考虑特性交互,而不是向前选择,但是对具有大量特性的数据集应用是不切实际的。GSBS不能在一个星期内完成,它运行在具有数百个特征的数据集上。另外,前后策略通常都要面对局部最优的问题。

随机搜索可能会以一种完全随机的方式生成子集,使用Las Vegas算法,比如LVW,在一个大的搜索空间中,它的收敛速度太慢。与随机生成不同,EC是一种随机的方法,它应用进化原理或群智能来从当前的子集生成更好的子集。PSO是一种应用于FS的群体智能技术,并显示了其有效性。大家可以通过使用EC技术对FS的不同策略进行更全面的调查。虽然PSO已经成功地应用于不同的优化问题,包括FS,但它还没有应用于离散化。

B.特征离散化

特征离散化是一个研究历史悠久的话题。在此领域提出了许多不同策略的离散化方法。但是,它们都具有相同的目的,即确定将特征值分割为离散值的分割点。在特征值的范围内,分割点或分点是真正的值,这些值被用来分割这个范围到若干个间隔。现有的离散化方法可以使用不同的标准进行分类。在直接方法中,间隔是基于预定义的参数生成的。另一方面,增量方法递归地分离(或合并)间隔,直到满足一些标准,从而产生分裂(或合并)方法。它们也被称为自顶向下或自底向上的方法。根据是否在离散化过程中使用类标签,对离散化方法进行监督或无监督。如果在每个离散化步骤中使用整个实例空间,或者如果每个离散步骤只使用一个实例子集,那么它将是全局的。一种方法也属于单变量或多变量,这取决于特征是离散的还是多个特性的离散化,同时考虑特征之间的交互。

等宽和等频是两种简单的无监督方法。它们将特性离散为一个预定义的m间隔,具有相同的宽度或相同数量的值。这些简单的方法易于实现,但对m的值敏感,通常很难确定,尤其是当特性不是均匀分布或包含异常值时。

使用类标签作为搜索切割点的引导,监督离散化通常比无监督的匹配要好。在不同的类的边界上定义了切点的特征值。除了不同的搜索技术,还有分类错误率、信息增益和统计度量等不同的评价方法。

在受监督的方法中,Fayyad和Irani提出的最小描述长度(MDL)是最常用的方法之一。它是一种基于熵的增量分割离散化方法。利用信息增益来评价候选点。MDL递归地选择最佳的切点,将一个间隔分割为两个,直到实现MDLP。受此策略启发,我们建议使用由MDLP所接受的基于熵的切点作为BBPSO的初始或候选切入点。

C.基于熵的切割点

基于熵的离散化的目的是找到最佳的分割,以便离散化的特性在类标签上尽可能的纯粹。这意味着在一个区间内的大多数值都更倾向于具有相同的类标签。如果用熵E(S)来衡量集合S的纯度,那么根据这一标准,获得最高信息增益的切点是最好的。以下公式用于计算特征A的切点T的信息增益,作为特征值的集合。S1和S2是S分区的子集。

D.通过离散化来进行特征选择

虽然FS和离散化是近几十年来新兴的领域,但是结合这些任务的方法并没有引起足够的重视。Chi2是通过离散化提出FS的第一个方法。它是一种自下而上的方法,从只有一个特征值的间隔开始。然后相邻间隔χ2最低的测试结果将合并后的递归,直到χ2值对超过一个阈值。此阈值是通过试图维护数据的预定义一致性级别来确定的。通过释放这个一致性级别,Chi2可以提出只有一个间隔的特征,可以为FS移除。结果表明,在两个合成数据集上,Chi2有效地消除了相关特征,消除了所有的噪声特征。然而,用户定义的不一致率很难预先定义,也可能导致离散化过程的不准确。改进的Chi2 (MChi2)是一种完全自动的离散化方法,解决了Chi2的缺点。

另一种通过离散化的方法是基于离散化过程中计算出的一些度量方法进行排序。然后,将选择一些级别最高的特征。这个方法的一个例子是PEAR,其中的特性是从最小的切点数量到最大的。顶级的特征被认为是相关的,并被选择形成最终的子集。结果表明,该算法具有与原特性集相似的性能,且效果较好。但是,很难为PEAR选择合适的参数,以及应该选择哪些特性来形成最终子集。同样,特征根据原始连续值的方差和用于编码离散特征的比特数的比值进行排序。

综上所述,通过离散化的特征选择在两个不同的阶段。但是,将他们整合到同一个阶段的研究目前还没有。

E.粒子群优化算法

具体可参考本人文章“计算智能(CI)之粒子群优化算法(PSO)”。本篇文章将不再赘述。

⛄二、部分源代码

%%无递推
clc;
clear;
C=imread(‘1.jpg’);
C=rgb2gray©;
%C=imnoise(C,‘gaussian’,0,0.005);
figure
subplot(1,2,1)
imshow©
tic
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%确定基本粒子群算法的迭代次数和粒子个数
Iter =80;
global popsize
popsize = 12; %%粒子个数
global dimsize
dimsize=3; %%粒子维数

%初始化基本粒子群优化算法的参数
Wmax = 0.9; %最大惯性因子
Wmin = 0.1; %最小惯性因子
c1 = 2.0; %个体学习因子
c2 = 2.0; %群体学习因子
xmax = 254; %粒子允许的最小位置
xmin = 2;
speedmax=10;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
gBest
toc
% t=toc-tic;
%写入最终结果图
[m,n]=size©;
z=zeros(m,n);
% percentege=0;
for i=1:m
for j=1:n
if C(i,j)<=round(gBest(1))-1
z(i,j)=0;
elseif C(i,j)<=round(gBest(2))-1
z(i,j)=75;
elseif C(i,j)<=round(gBest(3))-1
z(i,j)=175;
else
z(i,j)=255;
% percentege=percentege+1;
end
end
end
z=z/255;
subplot(1,2,2);
imshow(z);

⛄三、运行结果

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

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]黄力明.基于混沌粒子群优化算法的二维熵图像分割方法[J].陕西理工学院学报(自然科学版). 2007,(04)

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python项目之文化和旅游数据可视化

文章目录关键词一、做什么二、怎么做1.爬取数据和处理2.数据库设计&#xff0c;并将数据写入数据库3.开发后端接口4.使用Echarts官方模板三、效果展示关键词 Python后端开发Python网络爬虫Echarts可视化面向对象(见源码) 一、做什么 国家5A级旅游景区数据可视化 国家级旅游休…

状态设计模式

一、状态模式 1、定义 状态模式&#xff08;State Pattern&#xff09;又称作状态机模式&#xff08;State Machine Pattern&#xff09;&#xff0c;允许对象在内部状态发生改变时改变它的行为&#xff0c;对象看起来好像修改了它的类。属于行为型设计模式。 状态模式的核心是…

Python:面向对象

目录 一、类的定义 基本语法 python与Java关于类的封装的区别 自定义构造方法 Java与Python的区别 源码 同一个类多种构造函数的构建 源码 二、魔法方法 基础部分 比较部分 与Java的区别 容器类型 三、属性管理 四、封装 基础部分 方法拓展 五、继承&多态 继…

基础IO——系统调用文件

文章目录1. 知识补充和回顾1.1 回顾C文件接口1.2 理论理解2. 系统调用文件接口2.1 open2.2 怎么使用2.3 close和write2.4 read1. 知识补充和回顾 1. 文件文件内容文件属性。即使创建一个空文件&#xff0c;也会占据磁盘数据。 2. 文件操作文件内容操作文件属性操作。在操作文件…

域名+七牛云+PicGo+pypora

域名七牛云PicGopypora 前提准备&#xff1a; 域名&#xff08;自己的域名&#xff09;七牛云 免费注册申请10G空间够用picGo 地址pypora &#xff08;自行下载&#xff09; GO&#xff01;&#xff01;&#xff01; 七牛云 注册--->登录--->控制台找到对象存储新建…

如何在AndroidStudio中使用GitHub

文章目录1.确认是否安装git2.添加GitHub账户3.创建库4.创建分支5. push内容在项目中肯定要集成版本管理工具&#xff0c;不过有时候更换电脑或者升级AndroidStudio时原来集成的内容就不在了&#xff0c;还在再次集成git。时间长了就容易忘记如何集成Git&#xff0c;因此整理总结…

工作10年我面试过上百个程序员,真想对他们说…

V-xin&#xff1a;ruyuanhadeng获得600页原创精品文章汇总PDF 一、写在前面 最近收到不少读者反馈&#xff0c;说自己在应聘一些中大型互联网公司的Java工程师岗位时遇到了不少困惑。 这些同学说自己也做了精心准备&#xff0c;网上搜集了不少Java面试题&#xff0c;然而实际…

详解c++---内存管理

这里写目录标题c语言在堆上申请空间malloccallocreallocfreec中向堆中申请空间的形式new的介绍delete的介绍new与自定义类型new与malloc的不同定位newoperator new与operator delete函数c语言在堆上申请空间 在之前的学习中我们知道c语言主要是通过malloc free calloc&#xf…

Java基础-常用API的使用方法(Math,System,Runtime,Object,BigInteger,BigDecimal)(1)

1 Math类 1.1 概述 tips&#xff1a;了解内容 查看API文档&#xff0c;我们可以看到API文档中关于Math类的定义如下&#xff1a; Math类所在包为java.lang包&#xff0c;因此在使用的时候不需要进行导包。并且Math类被final修饰了&#xff0c;因此该类是不能被继承的。 Math类…

J - 食物链 POJ - 1182

思路&#xff1a; 首先我们要理清楚三种动物之间的关系&#xff0c;那么可以用A到B的距离为1代表为A吃B&#xff0c; 那么就有下图的关系 那么我们用d1表示吃&#xff0c;d2表示被吃&#xff0c;d3表示是同类 对于另一张图也是符合的 然后我们去找每个点和他的根节点的关系 …

resnet(4)------全连接层与softmax

文章目录1. 全连接层2. SoftMax算法1. 全连接层 全连接层&#xff0c;指的是每一个结点都与上一层的所有结点相连&#xff0c;用来把前面几层提取到的特征综合起来。 举个例子&#xff0c;前面通过卷积和池化层提取出来的特征有眼睛鼻子和嘴巴&#xff0c;那我们能单独通过这…

基于tensorflow的深层神经网络(一)为什么神经网络需要解决非线性和异或问题

参考为什么神经网络需要解决多层和非线性问题 - 云社区 - 腾讯云 维基百科对深度学习的精确定义为“一类通过多层非线性变换对高复杂性数据建模算法的合集”。因为深度神经网络是实现“多层非线性变换”最常用的一种方法&#xff0c;所以在实际中基本上可以认为深度学习就是深度…

音频信号特征

1.声音 音信号是由空气压力的变化而产生的&#xff0c;可以测量压力变化的强度&#xff0c;并绘制这些测量值随时间的变化。 声音信号经常在规律的、固定的区间内重复&#xff0c;每个波都具有相同形状&#xff0c;高度表示声音的强度&#xff0c;称之为振幅。 信号完成一个…

论文笔记-时序预测-FEDformer

论文标题&#xff1a;FEDformer: Frequency Enhanced Decomposed Transformer for Long-term Series Forecasting 论文链接&#xff1a; https://arxiv.org/abs/2201.12740 代码链接&#xff1a; https://github.com/DAMO-DI-ML/ICML2022-FEDformer 摘要 尽管基于变压器的方法…

笔记--Ubuntu20.04安装Nvidia驱动、CUDA Toolkit和CUDA CuDNN

目录 1--安装Nvidia驱动 2--安装CUDA 2-1--禁用nouveau 2-2--选择CUDA Toolkit 2-3--下载和安装CUDA Toolkit 2-4--配置环境变量 2-5--测试是否安装成功&#xff1a; 3--安装CUDA CuDNN 4--测试pytorch能否使用Cuda 1--安装Nvidia驱动 ① 查看可安装的Nvidia驱动版本…

Matplotlib学习笔记(第二章 2.13 Matplotlib中的图形(一))

在这里&#xff0c;您将发现大量示例图&#xff0c;其中包含生成它们的代码。 线图(Line Plot) 下面是如何使用plot()创建带有文本标签的线图。 Fig. 1: Simple Plot 多个绘图区域(Multiple subplots in one figure) 多个绘图区域由subplot()函数创建&#xff1a; Fig. 2:…

【小程序】内容滚动方案,视频或者照片上方不随滚动而滚动

&#x1f4ad;&#x1f4ad; ✨&#xff1a;内容滚动方案&#xff0c;视频或者照片上方不随滚动而滚动   &#x1f49f;&#xff1a;东非不开森的主页   &#x1f49c;: 优于别人&#xff0c;并不高贵&#xff0c;真正的高贵应该是优于过去的自己。——海明威&#x1f49c;&a…

【图像去噪】基于自适应滤波器消除椒盐噪声图像附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

web前端课程设计(HTML和CSS实现餐饮美食文化网站)静态HTML网页制作

&#x1f468;‍&#x1f393;静态网站的编写主要是用HTML DIVCSS JS等来完成页面的排版设计&#x1f469;‍&#x1f393;,常用的网页设计软件有Dreamweaver、EditPlus、HBuilderX、VScode 、Webstorm、Animate等等&#xff0c;用的最多的还是DW&#xff0c;当然不同软件写出的…

论文笔记-时序预测-Informer

论文标题&#xff1a; Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting 论文链接&#xff1a; https://arxiv.org/abs/2012.07436 源码链接&#xff1a; https://github.com/zhouhaoyi/ETDataset 摘要 许多实际应用都需要对长序列时间序列…