版本: v1.1
生成日期: 2026-05-19
数据集规模: 3个场景,共21个文件
生成工具: HSI Generator v4.0.0
本数据集是基于HSI Generator生成的模拟PaviaU高光谱数据集,包含三个不同场景的高光谱图像,用于高光谱图像处理、分类、目标检测等研究和应用。
PaviaU是高光谱遥感领域的经典基准数据集,由ROSIS传感器在意大利帕维亚大学上空采集。本数据集模拟了PaviaU的关键特征:
| 特征参数 | PaviaU原始数据 | 本数据集 | 说明 |
|---|---|---|---|
| 图像尺寸 | 610 × 340 像素 | 610 × 340 像素 | 完全一致 |
| 波段数 | 103 | 103 | 完全一致 |
| 波长范围 | 430-860 nm | 430-860 nm | 完全一致 |
| 光谱分辨率 | ~4 nm | ~4 nm | 完全一致 |
| 数据类型 | float32 | float32 | 完全一致 |
| 数据来源 | ROSIS传感器实测 | HSI Generator模拟 | 不同 |
重要说明: 本数据集是模拟数据,用于算法开发和测试,不应用于实际遥感应用。
文件: pavia_u_urban.mat, pavia_u_urban.npy
场景特征:
数据统计:
适用场景:
文件: pavia_u_agriculture.mat, pavia_u_agriculture.npy
场景特征:
数据统计:
适用场景:
文件: pavia_u_mixed.mat, pavia_u_mixed.npy
场景特征:
数据统计:
适用场景:
pavia_u_like/
├── README.md # 本文档
├── LICENSE # MIT许可证
├── pavia_u_visualization.png # 可视化图表
│
├── pavia_u_urban.mat # 城市场景 (MATLAB格式)
├── pavia_u_urban.npy # 城市场景 (NumPy格式)
├── pavia_u_urban_wavelengths.txt # 城市场景波长数据
├── pavia_u_urban_gt.mat # 城市场景标注 (MATLAB格式)
├── pavia_u_urban_gt.npy # 城市场景标注 (NumPy格式)
│
├── pavia_u_agriculture.mat # 农业场景 (MATLAB格式)
├── pavia_u_agriculture.npy # 农业场景 (NumPy格式)
├── pavia_u_agriculture_wavelengths.txt # 农业场景波长数据
├── pavia_u_agriculture_gt.mat # 农业场景标注 (MATLAB格式)
├── pavia_u_agriculture_gt.npy # 农业场景标注 (NumPy格式)
│
├── pavia_u_mixed.mat # 混合场景 (MATLAB格式)
├── pavia_u_mixed.npy # 混合场景 (NumPy格式)
├── pavia_u_mixed_wavelengths.txt # 混合场景波长数据
├── pavia_u_mixed_gt.mat # 混合场景标注 (MATLAB格式)
└── pavia_u_mixed_gt.npy # 混合场景标注 (NumPy格式)| 文件类型 | 单个文件大小 | 总大小 |
|---|---|---|
| .mat (MATLAB) | 81.49 MB | 244.47 MB |
| .npy (NumPy) | 162.98 MB | 488.94 MB |
| .mat (标注) | ~0.2 MB | ~0.6 MB |
| .npy (标注) | ~0.2 MB | ~0.6 MB |
| .txt (波长) | ~1 KB | ~3 KB |
| 总计 | - | ~734 MB |
数据结构:
load('pavia_u_urban.mat')
% 可用变量:
% - data: 高光谱数据 (340 × 610 × 103)
% - wavelengths: 波长数组 (103 × 1)
% - shape: 数据形状 [340, 610, 103]
% - metadata: 元数据字符串数据维度:
数据类型: float32
反射率范围: 0.0 - 1.0
数据结构:
import numpy as np
# 加载数据
hsi_data = np.load('pavia_u_urban.npy')
# 形状: (340, 610, 103)
# 类型: float64
# 加载波长
wavelengths = np.loadtxt('pavia_u_urban_wavelengths.txt', skiprows=1)
# 形状: (103,)
# 单位: nm数据维度: 与MATLAB格式相同
数据类型: float64 (NumPy默认)
格式: 纯文本,每行一个波长值
示例:
Wavelength (nm)
430.00
434.27
438.54
...
860.00波长范围: 430 - 860 nm
波段数: 103
光谱分辨率: ~4.17 nm
文件: pavia_u_urban_gt.mat, pavia_u_urban_gt.npy 等
格式: 与 PaviaU 数据集格式一致
数据结构:
import numpy as np
import scipy.io as sio
# 加载标注数据
gt = sio.loadmat('pavia_u_urban_gt.mat')
labels = gt['gt'] # (340, 610)
# 或
labels = np.load('pavia_u_urban_gt.npy') # (340, 610)数据维度: 2D 数组 (340 × 610)
数据类型: uint8
类别说明:
| ID | 类别名称 | 英文 | 样本数 |
|---|---|---|---|
| 0 | 背景 | Background | 27,400 |
| 1 | 沥青 | Asphalt | 47,500 |
| 2 | 混凝土 | Concrete | 37,500 |
| 3 | 钢铁 | Steel | 27,500 |
| 4 | 绿叶植被 | Vegetation | 35,000 |
| 5 | 沙土 | Sand | 17,500 |
| 6 | 水体 | Water | 7,500 |
| 7 | 枯草 | Dry Grass | 7,500 |
| ID | 类别名称 | 英文 | 样本数 |
|---|---|---|---|
| 0 | 背景 | Background | 27,400 |
| 1 | 小麦 | Wheat | 72,500 |
| 2 | 壤土 | Loam | 55,000 |
| 3 | 枯草 | Dry Grass | 27,500 |
| 4 | 水体 | Water | 17,500 |
| 5 | 沥青 | Asphalt | 7,500 |
| ID | 类别名称 | 英文 | 样本数 |
|---|---|---|---|
| 0 | 背景 | Background | 27,400 |
| 1 | 绿叶植被 | Vegetation | 47,500 |
| 2 | 沙土 | Sand | 37,500 |
| 3 | 沥青 | Asphalt | 37,500 |
| 4 | 混凝土 | Concrete | 25,000 |
| 5 | 水体 | Water | 17,500 |
| 6 | 钢铁 | Steel | 7,500 |
| 7 | 枯草 | Dry Grass | 7,500 |
import numpy as np
import scipy.io as sio
import matplotlib.pyplot as plt
# 加载MAT文件
mat_data = sio.loadmat('pavia_u_urban.mat')
hsi_data = mat_data['data'] # (340, 610, 103)
wavelengths = mat_data['wavelengths'].flatten() # (103,)
print(f'数据形状: {hsi_data.shape}')
print(f'波长范围: {wavelengths[0]:.1f} - {wavelengths[-1]:.1f} nm')
print(f'反射率范围: {hsi_data.min():.4f} - {hsi_data.max():.4f}')
# RGB合成显示
def get_rgb_image(hsi_data, r_band=80, g_band=40, b_band=20):
"""从高光谱数据提取RGB图像"""
rgb = np.zeros((hsi_data.shape[0], hsi_data.shape[1], 3))
rgb[:, :, 0] = hsi_data[:, :, r_band] # Red
rgb[:, :, 1] = hsi_data[:, :, g_band] # Green
rgb[:, :, 2] = hsi_data[:, :, b_band] # Blue
# 归一化到 0-1
rgb = (rgb - rgb.min()) / (rgb.max() - rgb.min())
return rgb
rgb_img = get_rgb_image(hsi_data)
plt.figure(figsize=(10, 6))
plt.imshow(rgb_img)
plt.title('PaviaU Urban - RGB合成')
plt.axis('off')
plt.show()
# 显示光谱曲线
pixel_y, pixel_x = 170, 305 # 中心像素
spectrum = hsi_data[pixel_y, pixel_x, :]
plt.figure(figsize=(12, 4))
plt.plot(wavelengths, spectrum, linewidth=2)
plt.xlabel('波长 (nm)')
plt.ylabel('反射率')
plt.title(f'像素 ({pixel_x}, {pixel_y}) 光谱曲线')
plt.grid(True, alpha=0.3)
plt.show()from sklearn.preprocessing import StandardScaler
# 加载数据
hsi_data = np.load('pavia_u_urban.npy')
# 1. 去除噪声波段(可选)
valid_bands = np.arange(10, 95) # 去除前10和后8个波段
hsi_clean = hsi_data[:, :, valid_bands]
# 2. 归一化
scaler = StandardScaler()
h, w, b = hsi_clean.shape
hsi_normalized = scaler.fit_transform(
hsi_clean.reshape(-1, b)
).reshape(h, w, b)
# 3. PCA降维
from sklearn.decomposition import PCA
n_components = 30
pca = PCA(n_components=n_components)
hsi_pca = pca.fit_transform(
hsi_clean.reshape(-1, b)
).reshape(h, w, n_components)
print(f'原始数据: {hsi_data.shape}')
print(f'PCA后数据: {hsi_pca.shape}')
print(f'解释方差比: {pca.explained_variance_ratio_.sum():.2%}')from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report, accuracy_score
# 加载数据
hsi_data = np.load('pavia_u_urban.npy')
h, w, b = hsi_data.shape
# 创建模拟标签(实际应用中应使用真实标签)
# 这里简单地将图像分为4个区域
labels = np.zeros((h, w), dtype=int)
labels[:h//2, :w//2] = 0 # 类别0
labels[:h//2, w//2:] = 1 # 类别1
labels[h//2:, :w//2] = 2 # 类别2
labels[h//2:, w//2:] = 3 # 类别3
# 准备训练数据
X = hsi_data.reshape(-1, b)
y = labels.flatten()
# 采样部分数据用于训练(加速)
sample_idx = np.random.choice(len(X), size=5000, replace=False)
X_sample = X[sample_idx]
y_sample = y[sample_idx]
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(
X_sample, y_sample, test_size=0.3, random_state=42
)
# 训练SVM分类器
clf = SVC(kernel='rbf', random_state=42)
clf.fit(X_train, y_train)
# 预测
y_pred = clf.predict(X_test)
# 评估
print(f'准确率: {accuracy_score(y_test, y_pred):.4f}')
print('\n分类报告:')
print(classification_report(y_test, y_pred))% 加载数据
load('pavia_u_urban.mat');
% 显示基本信息
disp(['数据形状: ', num2str(shape)]);
disp(['波长范围: ', num2str(wavelengths(1)), ' - ', num2str(wavelengths(end)), ' nm']);
% RGB合成显示
rgb_img = zeros(340, 610, 3);
rgb_img(:,:,1) = data(:,:,80); % Red
rgb_img(:,:,2) = data(:,:,40); % Green
rgb_img(:,:,3) = data(:,:,20); % Blue
% 归一化
rgb_img = (rgb_img - min(rgb_img(:))) / (max(rgb_img(:)) - min(rgb_img(:)));
figure;
imshow(rgb_img);
title('PaviaU Urban - RGB合成');
colorbar;
% 显示光谱曲线
pixel_y = 170;
pixel_x = 305;
spectrum = squeeze(data(pixel_y, pixel_x, :));
figure;
plot(wavelengths, spectrum, 'LineWidth', 2);
xlabel('波长 (nm)');
ylabel('反射率');
title(['像素 (', num2str(pixel_x), ', ', num2str(pixel_y), ') 光谱曲线']);
grid on;% PCA降维
load('pavia_u_urban.mat');
[h, w, b] = size(data);
% 重塑为2D矩阵
X = reshape(data, [h*w, b]);
% PCA
[coeff, score, latent] = pca(X, 'NumComponents', 30);
% 重塑回3D
data_pca = reshape(score, [h, w, 30]);
disp(['原始波段数: ', num2str(b)]);
disp(['PCA后波段数: ', num2str(30)]);
disp(['解释方差: ', num2str(sum(latent(1:30))/sum(latent)*100), '%']);本数据集使用HSI Generator v4.0.0生成,采用以下方法:
基于项目的光谱库(9,182个光谱),包括:
使用参数化方法生成光谱,考虑:
采用分块随机分布方法:
添加传感器噪声:
所有数据均通过以下验证:
✅ 数据完整性
✅ 数值范围
✅ 格式一致性
✅ 光谱特性
| 场景 | 最小值 | 最大值 | 平均值 | 标准差 |
|---|---|---|---|---|
| Urban | 0.0000 | 0.7755 | 0.2550 | 0.1950 |
| Agriculture | 0.0000 | 0.6328 | 0.1279 | 0.1583 |
| Mixed | 0.0000 | 0.7594 | 0.1512 | 0.1658 |
| 波段范围 | 波段数 | 中心波长 | 主要应用 |
|---|---|---|---|
| 蓝光 | 430-500 nm | ~465 nm | 水体穿透、土壤区分 |
| 绿光 | 500-600 nm | ~550 nm | 植被绿峰 |
| 红光 | 600-700 nm | ~650 nm | 叶绿素吸收 |
| 红边 | 700-750 nm | ~725 nm | 植被胁迫 |
| 近红外 | 750-860 nm | ~805 nm | 植被生物量 |
✅ 算法开发与测试
✅ 教育与培训
✅ 基准测试
❌ 实际遥感应用
❌ 科学研究
原因: 本数据集是模拟数据,不包含真实地物的物理特性和空间分布。
高光谱图像分类
光谱解混
降维方法
如有关于本数据集的问题,请:
关于HSI Generator的问题,请:
本数据集免费开放,可用于:
如在论文或报告中使用本数据集,请引用:
@dataset{pavia_u_like_2026,
author = {HSI Generator Project},
title = {PaviaU-Like Hyperspectral Dataset},
year = {2026},
version = {1.0},
generator = {HSI Generator v4.0.0},
url = {https://atomgit.com/hunyuan2026/ggp}
}本数据集的生成得益于:
最后更新: 2026-05-19
文档版本: v1.1
数据集版本: v1.1