压缩感知算法原理
压缩感知(Compressed Sensing, CS)是一种信号处理技术,它允许在远低于Nyquist采样率的情况下对信号进行有效采样和重建。压缩感知理论的核心思想是利用信号的稀疏性,通过少量的线性测量重建出原始信号。以下是压缩感知算法的主要原理:
1. 稀疏表示(Sparse Representation)
压缩感知的一个基本假设是信号在某个变换域中是稀疏的,即信号可以用少量非零系数进行表示。常见的稀疏变换包括傅里叶变换、小波变换等。稀疏表示可以表示为:x=Ψs;其中,x是原始信号,Ψ是变换矩阵,s是稀疏系数向量。这是压缩感知的前提条件,即信号需要在某个变换域中是稀疏的。
2. 线性测量(Linear Measurements)
在压缩感知中,通过一个测量矩阵Φ对稀疏信号进行线性投影,得到少量的观测值:
y=Φx
结合稀疏表示,可以表示为:
y=ΦΨs
其中,y是观测值向量,Φ是测量矩阵。
3. 稀疏重建(Sparse Reconstruction)
稀疏重建的目标是从观测值y中恢复稀疏系数s。这个问题可以形式化为一个优化问题:
-
测量矩阵的选择:
测量矩阵通常是随机生成的,如高斯随机矩阵或伯努利随机矩阵。这些矩阵具有良好的重建性能。 -
优化算法:
稀疏重建通常使用以下优化算法:- 匹配追踪算法(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的全局信息处理能力来增强高光谱图像的重建质量。