You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R语言中对HDF5高光谱数据执行逐像素向量归一化

在R中对高光谱HDF5数据逐像素进行L2归一化

1. 加载依赖包

使用rhdf5包处理HDF5文件,先安装并加载:

# 首次使用需安装
if (!require("rhdf5")) {
  BiocManager::install("rhdf5")
  library(rhdf5)
}

2. 读取HDF5中的高光谱数据

指定文件路径和数据存储路径,读取数据到R环境:

wd <- "你的工作目录路径/" # 替换为实际路径
f <- paste0(wd, "img1.h5")
data_path <- "/SITE-NAME/Reflectance/Reflectance_Data"

# 读取数据
hs_data <- h5read(f, data_path)
# 确认维度是否为(3311, 678, 425)
dim(hs_data)

3. 执行逐像素L2归一化

将三维数组重塑为二维矩阵(每行对应一个像素的光谱向量),计算每个向量的L2范数后完成归一化,最后恢复原三维结构:

# 重塑为二维矩阵:(总像素数, 波段数)
n_pixels <- dim(hs_data)[1] * dim(hs_data)[2]
n_bands <- dim(hs_data)[3]
hs_matrix <- matrix(hs_data, nrow = n_pixels, ncol = n_bands)

# 计算每个像素光谱向量的L2范数
l2_norms <- sqrt(rowSums(hs_matrix^2))
# 处理范数为0的情况(避免除以0)
l2_norms[l2_norms == 0] <- 1

# 执行归一化
hs_matrix_normalized <- hs_matrix / l2_norms

# 重塑回原三维维度
hs_data_normalized <- array(hs_matrix_normalized, dim = dim(hs_data))

4. 可选:保存归一化后的数据

将结果写入新的HDF5文件(或原文件,建议先备份原文件):

# 写入新文件
h5createFile(paste0(wd, "img1_normalized.h5"))
h5write(hs_data_normalized, paste0(wd, "img1_normalized.h5"), "/Normalized_Reflectance")

# 写入原文件(需谨慎操作)
# h5write(hs_data_normalized, f, "/SITE-NAME/Reflectance/Normalized_Reflectance")

内容的提问来源于stack exchange,提问作者MGD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 13:35:07