因为仅针对测试和简单的训练,不需要太好的网络环境,我便使用colab完成
下载代码
%cd /content/drive/MyDrive/Colab_Notebooks/remote dataset
!git clone https://github.com/J-FHu/Fusformer.git
%cd /content/drive/MyDrive/Colab_Notebooks/remote dataset
!git clone https://github.com/wgcban/HyperTransformer.git
Fusformer
test
Demo data download link: Release Fusformer: A Transformer-based Fusion Approach for Hyperspectral Image Super-resolution · J-FHu/Fusformer · GitHub
Complete training and test data download link:
1.https://drive.google.com/drive/folders/11EsA_qLtf306RxEReFSA_iKltdpn-IJT?usp=sharing or 2.百度网盘 请输入提取码 Password:kjra
其中demo_cave_patches_h5是由demo_cave_h5裁剪而成,如果内存不够大,使用demo_cave_patches_h5.
test_set = DatasetFromHdf5("/更改为你自己的路径/demo_cave_patches.h5")
path_checkpoint = '/更改为你自己的路径/1000.pth'
最后会生成PatchOutput-cave.mat结果
在matlab中使用resharp2big.m再重新恢复原图大小
如下
若要得到诸如PSNR SAM ERGAS SSIM之类的指标,使用此demo图和原图作比较即可。
PSNR
% 修改版 加载原图和更改后的图像
original = imread('untitled1.png'); % 请替换为原图像的路径
changed = imread('untitled无损.png'); % 请替换为更改后的图像的路径
% 确保图像是 double 类型,以便进行计算
original = im2double(original);
changed = im2double(changed);
% 计算 PSNR
psnrValue = psnr(changed, original);
% 显示 PSNR 值
disp(['PSNR between original and changed images: ' num2str(psnrValue)]);
SAM
% 读取图像
originalPath = 'untitled1.png'; % 请替换为原图像的路径
changedPath = 'untitled无损.png'; % 请替换为更改后的图像的路径
% 读取图像
original = imread(originalPath);
changed = imread(changedPath);
% 将图像转换为 double 类型
img1 = im2double(original);
img2 = im2double(changed);
% 将图像转换为向量形式(每个像素为一个元素)
vec1 = reshape(img1, [], size(img1, 3));
vec2 = reshape(img2, [], size(img2, 3));
% 计算两个图像之间的 Spectral Angle Mapper (SAM)
cosine_similarity = sum(vec1 .* vec2, 2) ./ (sqrt(sum(vec1.^2, 2)) .* sqrt(sum(vec2.^2, 2)));
% 处理可能的 acos 函数返回 NaN 的情况
cosine_similarity(isnan(cosine_similarity)) = 1; % 假设对角线上的相似度为 1
% 使用 min 函数确保传递给 acosd 的值在 [-1, 1] 范围内
cosine_similarity = min(max(cosine_similarity, -1), 1);
sam = acosd(cosine_similarity);
% 显示计算得到的 SAM 值
disp(['Spectral Angle Mapper (SAM): ' num2str(mean(sam))]);
ERGAS
% 读取图像
original = imread('untitled1.png'); % 请替换为原图像的路径
changed = imread('untitled无损.png'); % 请替换为处理后的图像的路径
% 转换为 double 类型
original = im2double(original);
changed = im2double(changed);
% 计算均方根误差 (RMSE)
rmse = sqrt(mean((original(:) - changed(:)).^2));
% 计算原始图像的均值
original_mean = mean(original(:));
% 计算 ERGAS 指标
ergas = (rmse / original_mean) * 100;
% 显示计算得到的 ERGAS 值
disp(['ERGAS: ' num2str(ergas)]);
SSIM
% 读取图像
original = imread('untitled1.png'); % 请替换为原图像的路径
changed = imread('untitled无损.png'); % 请替换为处理后的图像的路径
% 将图像转换为 double 类型
original = im2double(original);
changed = im2double(changed);
% 计算 SSIM
ssimValue = ssim(original, changed);
% 显示计算得到的 SSIM 值
disp(['SSIM: ' num2str(ssimValue)]);