基于高光谱图像的压缩感知网络

news2024/9/21 12:36:01

压缩感知算法原理

压缩感知(Compressed Sensing, CS)是一种信号处理技术,它允许在远低于Nyquist采样率的情况下对信号进行有效采样和重建。压缩感知理论的核心思想是利用信号的稀疏性,通过少量的线性测量重建出原始信号。以下是压缩感知算法的主要原理:

1. 稀疏表示(Sparse Representation)

压缩感知的一个基本假设是信号在某个变换域中是稀疏的,即信号可以用少量非零系数进行表示。常见的稀疏变换包括傅里叶变换、小波变换等。稀疏表示可以表示为:x=Ψs;其中,x是原始信号,Ψ是变换矩阵,s是稀疏系数向量。这是压缩感知的前提条件,即信号需要在某个变换域中是稀疏的。

2. 线性测量(Linear Measurements)

在压缩感知中,通过一个测量矩阵Φ对稀疏信号进行线性投影,得到少量的观测值:
y=Φx
结合稀疏表示,可以表示为:
y=ΦΨs
其中,y是观测值向量,Φ是测量矩阵。

3. 稀疏重建(Sparse Reconstruction)

稀疏重建的目标是从观测值y中恢复稀疏系数s。这个问题可以形式化为一个优化问题:
在这里插入图片描述

  1. 测量矩阵的选择
    测量矩阵通常是随机生成的,如高斯随机矩阵或伯努利随机矩阵。这些矩阵具有良好的重建性能。

  2. 优化算法
    稀疏重建通常使用以下优化算法:

    • 匹配追踪算法(Matching Pursuit, MP)正交匹配追踪算法(Orthogonal Matching Pursuit, OMP):这些贪婪算法逐步选择和更新稀疏系数。
    • 基追踪算法(Basis Pursuit, BP):通过线性规划求解L1范数最小化问题。
    • 交替方向乘子法(Alternating Direction Method of Multipliers, ADMM):一种迭代优化算法,常用于大规模稀疏重建问题。

高光谱图像的性质

高光谱图像包含数百到上千个连续的光谱波段,而传统的多光谱图像通常只有少数几个波段(如红、绿、蓝)。这种高光谱分辨率使得高光谱图像能够捕捉到更多的光谱信息,从而区分出不同物质的细微差异,提供比传统成像技术更详细的物质识别能力。

现代高光谱传感器不仅具有高光谱分辨率,同时也具备较高的空间分辨率。这使得高光谱图像可以在细节层面上提供丰富的空间和光谱信息。并且高光谱图像在相邻波段之间存在较大的相关性,这导致了数据冗余。这种冗余性可以通过压缩感知等技术来进行压缩和优化,以减少存储和传输的压力。

基于高光谱图像的压缩感知网络

JTenRe3DTV、E3DTV

JTenRe3DTV(Joint Tensor Regularization and 3D Total Variation) 是一种结合张量正则化和三维总变分(3D TV)的方法,旨在压缩感知高光谱图像时保持高光谱和空间保真度。该算法利用张量分解和3D TV 正则化,通过优化问题重建稀疏信号。它能够有效地去除噪声,同时保留图像的细节和结构。

Y. Wang, L. Lin, Q. Zhao, T. Yue, D. Meng, and Y. Leung, “Compressive sensing of hyperspectral images via joint tensor tucker decomposition and weighted total variation regularization,” IEEE Geoscience and Remote Sensing Letters, vol. 14, no. 12, pp. 2457–2461, 2017.

E3DTV(Enhanced 3D Total Variation) 是对传统3D TV 方法的增强,专注于提高重建图像的质量,减少伪影,并增强图像细节。该算法将低秩约束与总变分约束结合起来,处理高光谱图像中的混合噪声。通过利用图像的空间和光谱信息,E3DTV 能够在减少噪声的同时保持图像的准确性和视觉效果。

J. Peng, Q. Xie, Q. Zhao, Y. Wang, L. Yee, and D. Meng, “Enhanced 3dtv regularization and its applications on hsi denoising and compressed sensing,” IEEE Transactions on Image Processing, vol. 29, pp. 7889–7903, 2020.

clc,clear; close all
clear all;clc;
addpath(genpath('compared method'));
addpath(genpath('quality assess'));
addpath(genpath('Enhanced3DTV'));
addpath(genpath('测试图片'));
seed = 2015; 
fprintf('Seed = %d\n',seed);
RandStream.setGlobalStream(RandStream('mt19937ar','seed',seed));

%% read data
load FtMyers_63
%x_dc = Xim(1:10,1:10,1:1);
x=Xim(:,:,:);
[w,h,s] = size(x);
%% Generate measurements
ratio  = 0.10; 
N      = h*w;
% A      = PermuteWHT2(N,s,ratio);
A      = PermuteWHT_partitioned(N,s,ratio);
AT     = A';
% A      = PermuteWHT2(N,s,ratio);
b      = A*x(:);

%% NCS
fprintf('=========== SLTNCS ============\n');
clear opts
opts.mu    = 2^12;
opts.beta  = 2^7; %2^5
opts.tol   = 1E-3;
opts.maxit = 300;
opts.TVnorm = 1;
opts.nonneg = false;
t1 = cputime;
[U, out] = TVAL3(A,b,N,s,opts);
t1 = cputime - t1;
xrec_ncs = reshape(U,[w,h,s]);
i=1;[mpsnr(i),ssim(i),er(i),sam(i),rmse(i)] = msqia2(xrec_ncs,x);
% 保存为 .mat 文件
%save('SLTNCS_reconstructed_image.mat', 'xrec_ncs');


% % lrtdtv
fprintf('=========== JtenRe3DTV ============\n');
clear opts;
opts.maxIter = 100;
opts.tol     = 1e-9;
opts.trX     = x;
opts.gauss_frag = 1;
rk           = [ceil(h*0.6),ceil(w*0.6),6];
lam=0.001;
t2 = cputime;
x_rec_re= LrApprReTV(A,b,size(x),rk,lam,opts);
t2 = cputime - t2;
xrec_rettv=reshape(x_rec_re,size(x)); 
i=2;[mpsnr(i),ssim(i),er(i),sam(i),rmse(i)] = msqia2(xrec_rettv,opts.trX);
%fprintf('mpsnr = %f, ssim = %f, ergas =%f, sam =%f, rmse =%f.\n',mpsnr,ssim,ergas,sam,rmse);
% 保存为 .mat 文件
%save('jr3dtv_reconstructed_image.mat', 'xrec_rettv');
%band_set=[25 15 6];
%temp_show=xrec_rettv(:,:,band_set);
%normColor=@(R)max(min((R-mean(R(:)))/std(R(:)),2),-2)/3+0.5;
%temp_show=normColor(temp_show);
%figure;
%imshow(temp_show);
%imwrite(temp_show, "C:/Users/Z.LS/Desktop/数据对比/定性分析/JR3DTV(C).png", 'png');


gcs
fprintf('=========== Enhanced3DTV ============\n');
clear opts;
opts.maxIter = 100;
opts.tol     = 1e-6;
opts.trX     = x;
opts.gauss_frag = 1;
Rk           = 7;
weight       = [0.015,0.015,0.015];
t3 = cputime;
[x_gcs,x1,e,psnrpath] = EnhancedTV_CS(A, b, size(x), Rk, weight, opts);
t3 = cputime - t3;
xrec_ttv=reshape(x_gcs,[w,h,s]);
i=3;[mpsnr(i),ssim(i),er(i),sam(i),rmse(i)] = msqia2(xrec_ttv,opts.trX);
% 保存为 .mat 文件
%save('e3dtv_reconstructed_image.mat', 'xrec_ttv');
%band_set=[25 15 6];
%temp_show=xrec_ttv(:,:,band_set);
%normColor=@(R)max(min((R-mean(R(:)))/std(R(:)),2),-2)/3+0.5;
%temp_show=normColor(temp_show);
%figure;
%imshow(temp_show);
%imwrite(temp_show, "C:/Users/Z.LS/Desktop/数据对比/定性分析/E3DTV(MF).png", 'png');

DCSN (用于小型卫星高效高光谱数据传输的深度压缩感知网络)

C.-C. Hsu, C.-H. Lin, C.-H. Kao, and Y.-C. Lin, “Dcsn: Deep compressed sensing network for efficient hyperspectral data transmission of miniaturized satellite,” IEEE Transactions on Geoscience and Remote Sensing, vol. 59, no. 9, pp. 7773–7789, 2021.

DCSN源代码 github地址

提出了一个低秩驱动的解码器架构,联合空间和频谱超分辨率网络。
在这里插入图片描述
并且编码器端采用条状输入以及非平方卷积核的策略,解码器端由特征增强主干网络和超分辨率解码器组成。
在这里插入图片描述

BTC-Net (一种高效的高光谱图像比特级张量数据压缩网络)

X. Zhou, X. Zou, X. Shen, W. Wei, X. Zhu, and H. Liu, “Btc-net:Efficient bit-level tensor data compression network for hyperspectral image,” IEEE Transactions on Geoscience and Remote Sensing, vol. 62,pp. 1–17, 2024.

BTC-Net源代码 github地址

该网络在DCSN的基础上加入了量化卷积和Huffman编码,并在解码器的特征增强主干网络中加入了通道注意力模块,依然保留了网络的整体结构。
在这里插入图片描述

CTCSN (基于CNN-Transformer混合结构的高光谱图像压缩感知网络)

L. Zhang, L. Zhang, C. Song and P. Zhang, “Hyperspectral Image Compression Sensing Network With CNN–Transformer Mixture Architectures,” in IEEE Geoscience and Remote Sensing Letters, vol. 21, pp. 1-5, 2024, Art no. 5506305, doi: 10.1109/LGRS.2024.3403828.

CTCSN源代码 github地址

该网络在DCSN的基础上融合了Transformer和CNN的并行结构,但仍保留了解码器端特征增强主干网络及超分辨率解码器的结构。
在这里插入图片描述
在特征增强主干网络中,添加了混合注意力机制。
在这里插入图片描述
综上三种基于深度学习的高光谱压缩感知网络,共通之处如下:

强调了将深度学习方法与传统压缩感知技术相结合的优势

  • DCSN 利用了卷积神经网络(CNN)来处理高光谱数据的压缩感知问题,强调了轻量级编码器和多尺度特征融合模块(MFA)的重要性。
  • BTC-Net 通过数据驱动的量化神经编码器进行两阶段比特压缩,极大地提高了压缩性能。
  • CTCSN 结合了卷积神经网络(CNN)和Transformer的优点,通过CNN的局部建模能力和Transformer的全局信息处理能力来增强高光谱图像的重建质量。

在处理高光谱图像时,同时考虑空间和光谱信息是至关重要的

轻量级和高效的编码器设计

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

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

相关文章

指令重排:

目录 指令重排: 代码: 执行结果: 分析原因: 解决办法: 加入语句: 完整代码: 补充: 1.printStackTrace(); 2.yield() 指令重排: 在class文件执行的时候&#…

OAK-FFC 分体式相机使用入门介绍

概述 OAK FFC 主控板和多种可选配镜头模组非常适合灵活的搭建您的3D人工智能产品原型。由于镜头是分体式的,因此你可以根据需要测量的距离,自定义深度相机安装基线,并根据你的项目要求(分辨率、快门类型、FPS、光学元件&#xff…

【C++】选择结构-switch语句

switch 语句语法格式: switch (已定义整型或字符型变量名) { case 单个整型或字符型1: 满足这个 case 下整型或字符型执行的操作 break; case 单个整型或字符型2: 满足这个 case 下整型或字符型执行的操作 break; ...... default : 所有 ca…

SpringBoot3整合Druid报错Cannot load driver class: org.h2.Driver

报错显示springboot自带的H2数据库报错,其实是因为druid并未加载进去。如果你其它配置都没问题的话,请检查druid的依赖是什么版本的,因为springboot3刚开始是不支持druid的。 方案一: 即需要手动在resources目录下创建META-INF/s…

opencascade AIS_MouseGesture AIS_MultipleConnectedInteractive源码学习

AIS_MouseGesture //! 鼠标手势 - 同一时刻只能激活一个。 enum AIS_MouseGesture { AIS_MouseGesture_NONE, //!< 无激活手势 // AIS_MouseGesture_SelectRectangle, //!< 矩形选择&#xff1b; //! 按下按钮开始&#xff0c;移动鼠标定义矩形&…

队列--顺序队列的表示和实现

#include<stdio.h> #define MAXQSIZE 10 typedef int QElemType; typedef int Status; //顺序队列 (循环队列,有一个空间不用) typedef struct{QElemType *base;int rear;int front; }SqQueue; //初始化队列 Status InitQueue(SqQueue &Q){Q.basenew QElemType[MAX…

微信Android一面凉经(2024)

微信Android一面凉经(2024) 笔者作为一名双非二本毕业7年老Android, 最近面试了不少公司, 目前已告一段落, 整理一下各家的面试问题, 打算陆续发布出来, 供有缘人参考。今天给大家带来的是《微信Android一面凉经(2024)》。 面试职位: 微信-客户端开发工程师-基础功能(广州) And…

数据结构——二叉树性质

性质1:在二叉树的第i层上至多有2^(i-1)个结点(i>1)。 这个性质很好记忆&#xff0c;观察一下图6-5-5。 第一层是根结点&#xff0c;只有一个&#xff0c;所以2^(1-1)2^01。 第二层有两个&#xff0c;2^(2-1)22。 第三层有四个&#xff0c;2^(3-1)2^24。 第四层有八个&am…

centos7 mysql 基本测试(6)主从简单测试

centos7 xtrabackup mysql 基本测试&#xff08;6&#xff09;主从简单测试 mysql -u etc -p 1234aA~1 参考&#xff1a; centos7 时区设置 时间同步 https://blog.csdn.net/wowocpp/article/details/135931129 Mysql数据库&#xff1a;主从复制与读写分离 https://blog.csd…

【中项】系统集成项目管理工程师-第5章 软件工程-5.3软件设计

前言&#xff1a;系统集成项目管理工程师专业&#xff0c;现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试&#xff0c;全称为“全国计算机与软件专业技术资格&#xff08;水平&#xff09;考试”&…

800G以太网测试之FEC压力测试(FEC统计,FEC Error Injection)

目录 FEC是什么 FEC测试需要关注哪些内容 基础的 FEC 性能监测 需要测试和验证的 FEC 特性 FEC Error Injection / FEC误码压力测试 Codeword & Symbol Error Configuration Errored Symbol Per CW Configuration Bit Error Mask Configuration Loop Mode FEC 引擎…

JavaScript Let

ECMAScript 2015 ES2015 引入了两个重要的 JavaScript 新关键词&#xff1a;let 和 const。 这两个关键字在 JavaScript 中提供了块作用域&#xff08;Block Scope&#xff09;变量&#xff08;和常量&#xff09;。 在 ES2015 之前&#xff0c;JavaScript 只有两种类型的作…

为边缘开发由生成式 AI 驱动的视觉 AI 智能体

为边缘开发由生成式 AI 驱动的视觉 AI 智能体 文章目录 为边缘开发由生成式 AI 驱动的视觉 AI 智能体什么是可视化 AI 智能体&#xff1f;使用 Jetson 平台服务为边缘构建视觉 AI 智能体构建基于 VLM 的视觉 AI 智能体应用程序VLM AI 服务提示工程与 Jetson 平台服务和移动应用…

针对网络延迟与弱网下的测试

学习的时候看见大佬这样的回复 作为一个测试小白&#xff0c;我心想&#xff0c;这我不得上手试一试 大佬说的工具模拟&#xff0c;大概是指Charles和fiddler两个软件&#xff0c;都可以模拟弱网&#xff0c;但是Charles收费&#xff0c;我拿fiddler练手 另一个故意引入固定百…

21-C语言的结构体尺寸——地址对齐问题

21-C语言的结构体尺寸——地址对齐问题 文章目录 21-C语言的结构体尺寸——地址对齐问题一、CPU 字长二、 地址对齐2.1 原理和原因2.2 地址对齐的主要思想2.3 示例代码说明地址对齐 三、普通变量的M值M值的计算规则例子 四、手动干预M值4.1 规则4.2 例子 五、结构体的M值5.1 例…

每天一个设计模式之职责链模式(第一天)

特别感谢刘伟老师&#xff0c;看他的书我学到了很多东西&#xff0c;从今天开始我要开始更新啦&#xff01; 在csdn个人博客来总结知识&#xff0c;把他们变成自己的能力。 对三&#xff0c;要不起&#xff0c;张三李四王五几个人在玩斗地主&#xff0c;过过过&#xff0c;一…

谷粒商城实战笔记-错误记录-启动失败

文章目录 一&#xff0c;lombok报错二&#xff0c;Output directory is not specified 一&#xff0c;lombok报错 java: You arent using a compiler supported by lombok, so lombok will not work and has been disabled. Your processor is: com.sun.proxy.$Proxy8 Lombok …

靶场实战 _ ATTCK 实战 Vulnstack 红队

环境配置 网络拓扑图 (仅供参考) 攻击机&#xff1a;kali ip:192.168.111.5靶机&#xff1a;web-centos 外网ip:192.168.111.10 内网ip:192.168.93.100web1-ubuntu ip: 192.168.93.120PC ip: 192.168.93.30win 2008 ip:192.168.93.20win 2012 ip:192.168.93.10 信息搜集 端口…

【QT】常用控件(概述、QWidget核心属性、按钮类控件、显示类控件、输入类控件、多元素控件、容器类控件、布局管理器)

一、控件概述 Widget 是 Qt 中的核心概念&#xff0c;英文原义是 “小部件”&#xff0c;此处也把它翻译为 “控件”。控件是构成一个图形化界面的基本要素。 像上述示例中的按钮、列表视图、树形视图、单行输入框、多行输入框、滚动条、下拉框都可以称为 “控件”。 Qt 作为…

世界渲染大赛含金量高吗?含金量怎么样?水平要求?

世界渲染大赛&#xff0c;作为全球3D艺术与渲染领域的顶级赛事&#xff0c;以其高含金量和专业水平要求而闻名。这一赛事不仅吸引了世界各地的专业3D艺术家、设计师和技术爱好者的积极参与&#xff0c;更以其严格的评审标准和创新性的主题设置&#xff0c;确保了参赛作品的高质…