光谱-空间特征分割提取:多光谱图像压缩
Spectral–Spatial Feature Partitioned Extraction Based on CNN for Multispectral Image Compression
(基于CNN的光谱-空间特征分割提取多光谱图像压缩)
近年来,多光谱成像技术的迅速发展引起了各领域的高度重视,这就不可避免地涉及到图像的传输和存储问题。针对这一问题,提出了一种基于光谱空间特征分割提取的端到端多光谱图像压缩方法。整个多光谱图像压缩框架是基于卷积神经网络(CNN),其创新之处在于特征提取模块被分为两个并行部分,一个是光谱部分,另一个是空间部分。首先,利用光谱特征提取模块独立提取光谱特征,并对空间特征提取模块进行操作以获得分离的空间特征。在特征提取之后,光谱和空间特征被逐元素融合,随后进行下采样,这可以减小特征图的大小。然后,通过量化和无损熵编码将数据转换为比特流。为了使数据更加紧凑,向网络添加了率失真优化器。解码器是编码器的相对逆过程。为了比较,所提出的方法进行了测试沿着JPEG 2000,3D-SPIHT和ResConv,另一个基于CNN的算法从Landsat-8和WorldView-3卫星的数据集。实验结果表明,在相同码率下,该算法的性能优于其他方法。
Introduction
通过捕获几个连续窄光谱带的数字图像,传感器可以生成包含丰富光谱和空间信息的三维多光谱图像。这些丰富的信息在军事侦察、目标监视、农作物状况评估、地表资源调查、环境研究、海洋应用等方面有着广泛的应用。然而,随着多光谱成像技术的快速发展,多光谱数据的光谱空间分辨率越来越高,导致其数据量迅速增长。庞大的数据量不利于图像的传输、存储和应用,阻碍了相关技术的发展。因此,有必要找到一种有效的多光谱图像压缩方法,在使用前对图像进行处理。
多光谱图像压缩方法的研究一直受到广泛关注。经过几十年的不懈努力,针对不同应用需求,开发出了各种多光谱图像压缩算法,可以概括如下:基于预测编码的框架、基于矢量量化编码的框架、基于变换编码的框架。预测编码主要应用于无损压缩。它的基本原理是利用像素之间的相关性来预测未知数据的基础上,然后对真实的值和预测值之间的残差进行编码。在[6]中,Slyz等人提出了一种基于块的带间无损多光谱图像压缩方法,将每幅图像分割成块,并利用相邻带中对应的块预测当前块。对于矢量量化编码,将若干标量数据集形成一个矢量,然后在矢量空间中将数据作为一个整体量化,以便在不损失太多信息的情况下进行压缩。由于矢量量化编码的性能与码本密切相关,为了提高时间效率,Qian在[7]中提出了一种快速码本搜索方法。在广义Lloyd算法(GLA)的全搜索过程中,如果到分区的距离比前一次迭代的更好,则不需要搜索来找到最小距离分区。变换编码是多光谱图像压缩中的一种重要方法,在有损压缩中有着广泛的应用。该算法通过将数据转换为变换域表示来降低像素之间的相关性,从而使信息集中,从而进行量化和编码。Karhunen-Loève变换(KLT)、离散余弦变换(DCT)和离散小波变换都是常用的变换编码算法。随着我们对多光谱图像的深入了解,开发了越来越多的改进算法,如3D-SPECK、3D-SPIHT等。
上述传统的压缩方法都是有效的,取得了很好的效果,但也存在着不足。例如,实现预测编码算法简单,但是压缩比相对较低。矢量量化编码算法虽然可以达到较为理想的效果,但由于其计算复杂度,不利于实现。为了克服传统压缩方法的不足,同时又保证压缩性能,近年来许多基于深度学习的多光谱图像压缩算法得到了迅速的发展。其中,卷积神经网络(CNN)是近年来图像压缩的主要算法之一。CNN的历史始于LeNet风格的模型,该模型包括用于特征提取的卷积层和用于下采样的最大池化层的简单堆栈。为了提取更多不同尺度的特征,2012年提出的AlexNet遵循了这一思想,并通过在每两个最大池化层之间添加几个卷积层进行了改进。为了获得更好的性能,需要增加网络的深度。于是,VGG、GoogLENet 、ResNet等优秀的网络架构开始陆续涌现。这些网络框架都是图像压缩技术发展的里程碑,在以往的ILSVRC等竞赛中都取得了很好的成绩。受这些杰出的网络框架的启发,许多基于CNN的压缩方法已经出现,并显示出适用于可见图像。在[18]中,Ballé提出了一种基于CNN的端到端优化图像压缩方法,具有广义分裂归一化(GDN)联合非线性,通过灵活使用线性卷积和非线性变换,所提出的网络实现了与JPEG2000相当的性能。为了进一步提高重建图像的质量,Jiang等人将CNN添加到编码器和解码器以进行联合训练。编码器中的CNN产生用于编码的紧凑呈现,并且解码器中的另一CNN是以高质量恢复解码图像,利用其可以显著减少块效应。已知多光谱图像是三维数据,其中两个维度是空间的,一个维度是光谱的。由于RGB图像也具有三个波段,因此可以将其视为特殊的多光谱数据。因此,许多用于可见光图像的压缩方法也可以应用于多光谱图像。在[20]中,提出了具有优化残差单元的多光谱图像的端到端压缩框架。它也基于CNN,并调整了网络中采用的ResNet的默认架构,以更好地适应多光谱图像。实验证明,该算法的有效性和PSNR比JPEG2000提高了约2 dB。尽管如此,上述方法仍然未能集中在多光谱图像的光谱之间的强相关性,因为这对RGB图像不太重要。然而,对于多光谱图像压缩,忽略光谱相关性会导致压缩后的信息丢失。因此,在本文中,我们提出了一种新的多光谱图像压缩方法的基础上的光谱空间特征的分割提取。
该网络是基于CNN的端到端框架,由编码器和解码器组成。在编码器中,有两个部分分别用于光谱特征提取和空间特征提取。第一部分采用连续光谱特征提取模块独立提取光谱特征。这一部分不涉及空间信息的融合。第二部分是用于空间特征提取,其中包含多个残差块。我们使用组卷积来分离每个通道,以便只有空间特征可以提取,而不混合其中的光谱信息。然后,所有特征被融合在一起,然后采用下采样来减小特征图的大小。此外,为了使数据更紧凑,在网络中使用了速率失真优化器。在获得中间特征数据后,进行量化和无损熵编码,以获得压缩的二进制比特流。在解码器中,比特流首先经过熵解码和逆量化,然后上采样有助于恢复图像大小。最后,通过相应的反卷积操作获得光谱和空间特征,并利用联合特征重建图像。实验结果表明,该网络优于JPEG 2000和3D-SPIHT。
Proposed Method
Spectral Feature Extraction Module
二维卷积技术已被证明具有很大的应用前景,并成功地应用于图像视觉和处理的许多方面,如目标检测、图像分类和图像压缩。然而,由于多光谱图像是三维的,更加复杂,丰富的光谱信息更加重要,因此,在采用二维卷积处理多光谱图像时,不可避免地会遇到信息丢失的问题。虽然将深度学习应用于多光谱图像压缩已有很多先例,并取得了很好的性能,超过了JPEG和JPEG2000等一些传统压缩方法,但在特征提取过程中,由于卷积核是二维的,无法有效去除第三维上的光谱冗余,抑制了网络的性能。
为了解决这个问题,我们提出了分别提取光谱或空间特征的想法。其中,提取光谱特征的灵感来源于。参考文献[21]使用三维核进行卷积运算,这可以保持多光谱图像数据中光谱特征的完整性。为了避免数据量过大,在谱维上采用1 × 1 × n卷积核,称为一维谱卷积,独立提取光谱特征。图1显示了2D卷积和1D光谱卷积之间的差异。
如图1a所示,图像通过2D卷积进行卷积,其内核是二维的,通常后跟激活函数,例如校正线性单元(ReLU),参数校正线性单元(PReLU)等。该操作可以表示如下:
类似地,考虑到光谱的维度,在3D图像上操作的1D光谱卷积可以公式化如下:
考虑到激活函数,我们采用ReLU作为我们的首选,因为当使用ReLU时,反向传播中的梯度通常是恒定的,这缓解了深度网络训练中梯度消失的问题,并有助于网络收敛。此外,使用ReLU时的计算成本比其他函数(例如,Sigmiod)。此外,ReLU可以使一些神经元的输出为零,这保证了网络的稀疏性,从而缓解过拟合问题。ReLU函数可以公式化如下:
综上所述,当对三维图像进行2D卷积运算时,输出总是二维的,这可能导致大量的光谱信息丢失。因此,我们采用一维光谱卷积保留更多的多光谱图像的特征数据。
Spatial Feature Extraction Module
为了确保空间信息不与光谱特征相混合,我们使用群卷积代替空间维度上的普通二维卷积。群卷积最早出现在AlexNet,是为了解决当时硬件资源有限的问题。特征图被分发到多个GPU进行同步处理,最后连接在一起。图2显示了正常卷积和群卷积之间的区别。
如图2a所示,输入数据的大小为C×H×W,分别表示特征图的通道数、宽度和高度。卷积核的大小为k×k,核的数目为N。这一点,输出特征图的大小为N×H’×W’。N个卷积核的参数数为:
组卷积,顾名思义,将输入的特征图分成若干组,然后分别卷积。假设输入的大小仍然是C×H×W并且输出特征图的数量是N。如果将输入分成G组,则每组中的输入特征图的数量为C/G,每组中的输出特征图的数量为N/G,卷积核的大小为k×k,即卷积核的数量保持不变,每组中的核的数量为N/G。由于特征图仅由相同组的卷积核卷积,所以参数的总数可以计算为:
通过比较两个方程(5)和(6),可以很容易地知道,群卷积可以大大减少参数的数量,准确地说,它可以减少到1/G。此外,根据[14],由于组卷积可以增加滤波器之间的对角相关性,因此滤波器关系变得稀疏和不相关。
图3示出了相邻层的滤波器之间的相关矩阵[23],高度相关的滤波器更亮,而较低相关的滤波器更暗。滤波器组(即组卷积)的作用是利用块对角稀疏性来学习关于信道维度的信息。低相关滤波器不需要学习,也就是说,它们不需要给定参数。此外,如图3所示,当使用组卷积时,可以以更结构化的方式训练高度相关的滤波器。因此,利用结构化稀疏性,群卷积不仅可以减少参数的数量,而且可以更准确地学习,以制作更高效的网络。
Framework ofthe Proposed Network
所提出的压缩网络的整个框架在图4中示出。该方法首先将多光谱图像送入前向网络,经过特征提取后,再经过量化和熵编码器压缩并转换为码流。解码器的结构与编码器的结构是对称的。因此,对于解码,比特流依次经过熵解码、逆量化和后向网络,以恢复图像。
The Forward Network and the Backward Network
前向和后向网络的架构如图5所示,频谱块和空间块如图6所示。
图5示出了我们的网络的详细过程。首先,将输入的多光谱图像同时分别送入光谱特征提取网络和空间特征提取网络,光谱特征提取网络和空间特征提取网络由相应的功能模块组成。在频谱部分中,存在若干频谱块(图6a),其基于残差块结构。我们将卷积层替换为调整后的1D谱卷积,以满足我们的期望,内核的大小为1×1×3。同样地,空间部分由具有类似结构的若干空间块组成,如图6 b所示,并且使用组卷积,使得每个通道将不会彼此交互。具体地,当输入多光谱图像具有七个或八个波段时,GROUP被设置为7或8。此外,为了增强特征的学习能力,增加了一些卷积层,其核大小为3 × 3。提取后,将两部分特征融合在一起,然后进行下采样以减小特征图的大小。在前向网络的末端,sigmoid函数起着限制中间输出值的作用,此外,与ReLU类似,它引入了非线性因素,使网络对模型更具表达力。
与前向网络对称,后向网络由上采样层、一些卷积层和分区提取部分形成。特别地,使用PixelShuffle实现上采样,其可以使用子像素操作将低分辨率图像变成高分辨率图像。
Quantization and Entropy Coding
在前向网络之后,中间数据首先由量化器量化成一系列离散整数。由于下降梯度用于后向传播以在训练网络时更新参数,因此梯度需要向下传递。然而,舍入函数是不可微的[25],这将阻碍网络的优化。因此,我们放松了函数,它被计算为:
其中Q是量化级别,Xs ∈(0,1)是Sigmoid激活之后的中间数据,round[·]是舍入函数,并且XQ是量化数据。该函数对前向网络中的数据进行舍入,并在反向传播期间跳过,以将梯度直接传递到前一层。
然后,我们采用ZPAQ作为无损熵编码标准,并选择“方法-6”作为压缩模式,以便进一步处理量化的XQ并生成二进制比特流。在解码器中,比特流经过熵解码器和去量化,数据XQ/( 2 Q 2^{Q} 2Q − 1)最终被馈送到反向网络以恢复图像。
Rate-Distortion Optimizer
评价一种压缩方法有两个标准,一个是比特率,另一个是恢复图像的质量。为了提高网络的性能,在这两个标准之间取得平衡至关重要。因此,引入了率失真优化:
其中L是在训练期间应当最小化的损失函数,LD指示失真损失,LR表示速率损失,其可以由惩罚λ控制。当我们使用MSE来测量恢复图像的失真损失时,LD可以表示如下:
其中,N表示批量大小,I表示原始多光谱图像,并且I是恢复图像,H、W和C分别是图像的高度、宽度和光谱带号。
为了估计速率损失,我们采用了一个重要的网络,以取代熵计算的代码长度的连续近似。重要性网络用于生成从输入图像学习的重要性图P(X)。目的是根据图像内容的重要性来分配比特率,将更多比特分配给复杂区域,并且将更少比特分配给平滑区域。重要网络简单地由四层组成,两个1 × 1卷积层和一个由两个3 × 3卷积层组成的残差块,如图7所示。
重要性网络中使用的激活函数是Mish [27],它已被证明比ReLU更平滑,并获得更好的结果。由于增加的补偿而导致的时间成本和有限的硬件条件仅在重要性网络中而不是整个网络中采用Mish,如下所示:
相关文章:

光谱-空间特征分割提取:多光谱图像压缩
Spectral–Spatial Feature Partitioned Extraction Based on CNN for Multispectral Image Compression (基于CNN的光谱-空间特征分割提取多光谱图像压缩) 近年来,多光谱成像技术的迅速发展引起了各领域的高度重视,这就不可避免…...

绝缘子主要尺寸
声明 本文是学习GB-T 1000-2016 高压线路针式瓷绝缘子尺寸与特性. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了高压线路针式瓷绝缘子的结构型式、尺寸、机械特性和电气特性。 本标准适用于标称电压为10 kV 及以下、频率不高于…...
什么是哈希表?如何使用哈希表进行数据存储和查找?
什么是哈希表? 哈希表(Hash Table),也被称为散列表,是一种用于存储键值对数据的数据结构。它是一种非常高效的数据结构,可以实现快速的数据插入、查找和删除操作。哈希表的核心思想是通过将键(…...
脑机接口的发展研究
1.调研对象:智能制造人机交互; 2.作业内容,关于个人所选技术的近期发展(2020-2023年)期间的相关技术问题和研究进展; 3.内容结构,分为摘要介绍(100字以内),近…...

短期光伏发电量短期预测(Python代码,先对异常值处理,再基于XGBoost模型预测)
一.代码流程(运行效果:短期光伏发电量短期预测(Python代码,先对异常值处理,再基于XGBoost模型预测)_哔哩哔哩_bilibili 模型流程: 导入所需的库,包括NumPy、Pandas、Matplotlib、Sea…...

SpringCloud Gateway--Predicate/断言(详细介绍)中
😀前言 本篇博文是关于SpringCloud Gateway–Predicate/断言(详细介绍)中,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以…...
Linux内核启动流程-第一阶段汇编流程简介
一. Linux启动流程 看完 Linux 内核的顶层 Makefile 以后再来看 Linux 内核的大致启动流程, Linux 内核的启 动流程要比 uboot 复杂的多,涉及到的内容也更多。 本文中,我们就大致的了解一下 Linux 内 核的启动流程。 要分析 Li…...
SpringBoot-Druid
目录 1.什么是Druid 2.主要优点和原因 3.误区 4.Part代码 0.pom 1.Spring.datasource.type: com.alibaba.druid.pool.DruidDataSource 2.Druid用Jasypt加密任意内容 EnableEncryptableProperties开启加密注解 3.Druid监控平台 1.什么是Druid Druid 是一个开源的数据库…...
PAT甲级真题1006:签到与签出
🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的…...

【架构篇】Supabase架构和功能介绍
Supabase是什么 Supabase将自己定位为Firebase的开源替代品,提供了一套工具来帮助开发者构建web或移动应用程序。Supabase是建立在Postgres之上的,Postgres是一个免费的开源数据库,被认为是世界上最稳定、最先进的数据库之一。Supabase对标F…...
Github主页无法打开和Assets转圈
1、cmd启动命令行 2、github.com打不开,多刷新几遍。等成功打开时,命令行输入nslookup github.com,把非权威应答下的IP地址复制到C:\Windows\System32\drivers\etc\hosts里,如查到的IP是192.30.255.112,则填写 192.30.255.112 gi…...

rm误删文件恢复
rm误删文件恢复 问题描述安装extundeleteyum安装extundelete编译安装extundelete 常用参数动作(action): 尝试数据恢复前置条件卸载磁盘分区查看被删除数据信息 恢复文件恢复指定inode号文件恢复指定文件名恢复指定目录恢复所有可恢复文件恢复指定时间的文件恢复指定…...

爬虫 — 多线程
目录 一、多任务概念二、实现多任务方式1、多进程 (Multiprocessing)2、多线程(Multithreading)3、协程(Coroutine) 三、多线程执行顺序四、多线程的方法1、join()2、setDaemon()3、threading.enumerate() …...
Cython 笔记 (Python/Jython)
目录 1. Cython 笔记 (Python)2. python 加速库 cython 简介2.1. Cython 是什么?2.2. 如何安装 Cython?2.3. 简单示例2.4. 性能比对2.5. 总结 3. PYTHON, CYTHON, JYTHON, IRONPYTHON 的区别 (注意: 此篇有误导,表述不一定正确,只提供一个方向)3.1. PY…...

[React] react-hooks如何使用
react-hooks思想和初衷,也是把组件,颗粒化,单元化,形成独立的渲染环境,减少渲染次数,优化性能。 文章目录 1.为什么要使用hooks2.如何使用hooks2.1 useState2.2 useEffect2.3 useLayoutEffect2.4 useRef2.5…...

多个pdf合并成一个文件,3个方法合并pdf
如何把多个pdf合并成一个文件?在我们日常的工作中,经常会遇到一些需要处理的文件,其中包括PDF文件。特别是当我们需要将多个PDF文件合并成一个PDF文件时,会面临一些困难。这样的情况下,我们的阅读能力会受到限制&#…...
代码随想录 动态规划Ⅸ
198. 打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个…...

【数据结构】散列表(哈希表)的学习知识总结
目录 1、散列表 2、散列函数 2.1 定义 2.2 散列函数的构造 2.2.1 除留余数法 2.2.2 直接定址法 2.2.3 数字分析法 2.2.4 平方取中法 3、冲突(碰撞) 4、处理冲突的方法 4.1 拉链法(链接法) 4.2 开放定址法 5、C语言…...

2023智慧云打印小程序源码多店铺开源版 +前端
智慧自助云打印系统/智慧云打印小程序源码 前端 这是一款全新的基于Thinkphp的最新自助打印系统,最新UI界面设计的云打印小程序源码...

利用亚马逊 云服务器 EC2 和S3免费套餐搭建私人网盘
网盘是一种在线存储服务,提供文件存储,访问,备份,贡献等功能,是我们日常中不可或缺的一种服务。很多互联网公司都为个人和企业提供免费的网盘服务。但这些免费服务都有一些限制,比如限制下载速度࿰…...

铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...

QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...

3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...

华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...

C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...

佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!
本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...
【WebSocket】SpringBoot项目中使用WebSocket
1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖,添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...