【Pavia】遙感圖像數據集下載地址和讀取數據集代碼 目錄【Pavia】遙感圖像數據集下載地址和讀取數據集代碼前言Pavia數據集Pavia數據集地址:Pavia數據集預覽PaviaU.matPaviaU_gt.matPavia數據集的Matlab讀取方式Pavia數據集中PaviaU.mat的ma ...
【Pavia】遙感圖像數據集下載地址和讀取數據集代碼
目錄
前言
遙感系列第13篇。遙感圖像處理方向的學習者可以參考或者復刻
本文初編輯於2024年3月28日
CSDN:https://blog.csdn.net/rvdgdsva
博客園:https://www.cnblogs.com/hassle
總結:有一說一,從新手的角度上來說,Pavia數據集比Houston數據集友好了不知道多少倍
Pavia數據集
Pavia University數據集是一個高光譜圖像數據集,由一個被稱為反射光學系統在義大利帕維亞市(ROSIS-3)的感測器收集。該圖像由610×340像素,115個光譜波段組成。該圖像被分為9類,共計42,776個標簽樣本,包括瀝青、草地、礫石、樹木、金屬板、裸土、瀝青、磚和陰影。
Pavia數據集地址:
下載的Pavia數據集是.mat格式的
下麵提供Matlab和Python兩種讀取方式
Pavia數據集預覽
PaviaU.mat
PaviaU_gt.mat
Pavia數據集的Matlab讀取方式
Pavia數據集中PaviaU.mat的matlab讀取代碼
% 載入PaviaU.mat文件
load('PaviaU.mat')
% 獲取輸入圖像的尺寸
InputMatImg = paviaU;
b = size(InputMatImg);
fprintf('輸入圖像寬度為 %d\n', b(1));
fprintf('輸入圖像高度為 %d\n', b(2));
fprintf('輸入圖像波段數為 %d\n', b(3));
% 選擇三個波段
i = 57; j = 34; k = 3;
% 獲取第i、j、k個波段
InputImg_r = InputMatImg(:,:,i);
InputImg_g = InputMatImg(:,:,j);
InputImg_b = InputMatImg(:,:,k);
% 列印每個波段的最大像素值
fprintf('%d\n', max(InputImg_r(:))); % 為8000
fprintf('%d\n', max(InputImg_g(:))); % 為8000
fprintf('%d\n', max(InputImg_b(:))); % 為8000
% 將像素值縮放到0-255範圍
InputImg_r = InputImg_r / 8000 * 255;
InputImg_g = InputImg_g / 8000 * 255;
InputImg_b = InputImg_b / 8000 * 255;
% 列印縮放後的最大像素值
fprintf('%d\n', max(InputImg_r(:))); % 為255
fprintf('%d\n', max(InputImg_g(:))); % 為255
fprintf('%d\n', max(InputImg_b(:))); % 為255
% 將像素值轉換為uint8類型
InputImg_r = uint8(InputImg_r);
InputImg_g = uint8(InputImg_g);
InputImg_b = uint8(InputImg_b);
% 合成RGB圖像
RGBImg = cat(3, InputImg_r, InputImg_g, InputImg_b);
% 顯示每個波段和合成波段的圖像
figure;
subplot(221); imshow(InputImg_r); title('1號波段');
subplot(222); imshow(InputImg_g); title('2號波段');
subplot(223); imshow(InputImg_b); title('3號波段');
subplot(224); imshow(RGBImg); title('合成波段');
% 將每個波段和合成波段保存為圖片文件
imwrite(InputImg_r, ['MATBand', num2str(i), '.jpg']);
imwrite(InputImg_g, ['MATBand', num2str(j), '.jpg']);
imwrite(InputImg_b, ['MATBand', num2str(k), '.jpg']);
imwrite(RGBImg, 'composite_img.jpg');
Pavia數據集中PaviaU_gt.mat的matlab讀取代碼
load('PaviaU_gt.mat')
fprintf('%d\n',max(paviaU_gt(:)));
paviaU_gt=paviaU_gt/max(paviaU_gt(:))*255
paviaU_gt= uint8(paviaU_gt);
imshow(paviaU_gt);title('這可就有點麻煩了');
Pavia數據集的Python讀取方式
Pavia數據集中PaviaU.mat的Python讀取代碼
# 導入所需的庫
from scipy import io
import numpy as np
from PIL import Image
# 定義圖像路徑
imgPth = "PaviaU.mat"
# 從.mat文件中載入圖像數據
img = io.loadmat(imgPth)['paviaU'][:,:,[57,34,3]]
img = np.asarray(img)
# 列印三個通道中的最大像素值
print(np.max(img[:,:,0]))
print(np.max(img[:,:,1]))
print(np.max(img[:,:,2]))
# 將每個通道的像素值縮放到0-255範圍內
img[:,:,0] = img[:,:,0]/np.max(img[:,:,0])*255
img[:,:,1] = img[:,:,1]/np.max(img[:,:,1])*255
img[:,:,2] = img[:,:,2]/np.max(img[:,:,2])*255
# 列印縮放後的每個通道的最大像素值
print(np.max(img[:,:,0]))
print(np.max(img[:,:,1]))
print(np.max(img[:,:,2]))
# 對圖像進行取整操作
img = np.ceil(img)
# 將numpy數組轉換為PIL圖像對象
img = Image.fromarray(np.uint8(img))
# 保存圖像為PNG格式
img.save("./PaviaU.png")
Pavia數據集中PaviaU_gt.mat的Python讀取代碼
from scipy import io
import numpy as np
from PIL import Image
gtPth = 'PaviaU_gt.mat'
img = io.loadmat(gtPth)['paviaU_gt'][:,:]
img = np.asarray(img)
img= img/np.max(img)*255
img = Image.fromarray(np.uint8(img))
img.save("./PaviaU_gt.png")