php 网站开发收费,大都会app官网,建的网站打开很慢,中英双语外贸网站源码以下是基于文档中高光谱数据处理的核心代码及输出示例总结#xff1a;一、基本操作1. 读取高光谱数据import spectral
# 读取ENVI格式数据#xff08;支持.raw/.spe/.lan等#xff09;
img spectral.envi.read_envi(filemy_data.hdr, imagemy_data)在使用 spectral#xf…以下是基于文档中高光谱数据处理的核心代码及输出示例总结一、基本操作1.读取高光谱数据import spectral # 读取ENVI格式数据支持.raw/.spe/.lan等 img spectral.envi.read_envi(filemy_data.hdr, imagemy_data)在使用spectralSPy库处理遥感数据时这些文件通常都必须配合一个同名的.hdr头文件才能被正确读取。以下是这三种格式的具体解释 1. raw (Raw Binary)含义原始二进制文件Raw Binary。特点这是最通用的格式。它只包含纯粹的图像数据流像素值没有任何文件头信息。计算机本身不知道这个文件有多少行、多少列、多少个波段。如何读取必须依赖同目录下的.hdr文件。.hdr文件中记录了数据的维度行、列、波段数、数据类型如float32、存储方式BSQ/BIL/BIP等元数据。对应代码在你的代码中如果数据是这种格式imagemy_data.raw。 2. spe (Spectral Image)含义光谱图像文件。特点这是某些遥感软件如早期的 ENVI 版本或其他光谱处理工具中专门用于存储光谱数据的二进制格式。注意它本质上也是二进制数据只是扩展名被约定为.spe来表明其光谱属性。处理方式与.raw完全一致同样需要.hdr头文件来解释数据结构。 3. lan (Landsat Image)含义特定格式的图像文件可能是旧版 ENVI 的特定数据格式。背景在 ENVI 软件的早期版本或某些特定模块中.lan曾被用作某些图像处理结果的输出后缀。在spectral库的文档中它被列为支持的读取格式之一。特点它依然是二进制栅格数据结构上与.raw类似但在某些特定的数据集如经典的 AVIRIS 数据集示例中会出现。2.加载数据与元数据# 加载完整数据为多维数组 data img.load() # 读取元数据坐标系、变换系数 metadata img.metadata projection metadata[pseudo projection info] rpc metadata[rpc info]这三行代码是处理高光谱遥感数据时读取关键元数据的操作具体含义如下1.metadata img.metadata作用从高光谱数据对象img中提取元数据metadata说明img是通过spectral库如open_image()或read_envi()加载的高光谱数据对象其metadata属性包含数据的附加信息如坐标系、波段信息、采集参数等。此操作将元数据存储为字典对象metadata。2.projection metadata[pseudo projection info]作用获取数据的坐标系和空间投影信息关键字段pseudo projection info是 ENVI 格式文件中存储投影信息的特定键名其值通常是一个列表或字符串包含坐标系类型如地理坐标系GEOGCS或投影坐标系PROJCS椭球体参数如WGS84投影方式如UTM、Albers等单位如meter或degree示例值[PROJCS[WGS84_UTM_Zone_50N, ...], UNIT[meter,1]] # 表示 WGS84 坐标系下的 UTM 投影3.rpc metadata[rpc info]作用读取 RPCRational Polynomial Coefficients 有理多项式系数模型参数核心意义RPC 是遥感影像几何校正的数学模型用于描述图像坐标行列号与地理坐标经纬度之间的转换关系。其值通常是一个包含 80 个系数的列表或字典分为正向模型图像→地理和反向模型地理→图像两组。应用场景高精度几何校正尤其适用于卫星影像三维地形重建与其他地理数据的空间配准3.波段操作# 获取前10个波段子集 subset img.extract(0, 10) # 读取单个波段 data0 img.read_band(0) # 获取波长信息 wavelength_units img.bands.band_unit # 波长单位 wl img.bands.centers # 中心波长 bandwidth img.bands.bandwidths # 光谱分辨率 # 输出示例 # [10.0, 8.0, 12.0] # 单位纳米nm4.显示与保存图像from spectral import * img open_image(92AV3C.lan) #每个波段对应特定波长范围的光谱信息。29, 19, 9 表示选择第 29、19、9 个波段按波长顺序排列作为 RGB 三通道用于生成彩色图像 view imshow(img, (29, 19, 9)) # 显示RGB合成图像 save_rgb(rgb.jpg, img, ) # 保存为RGB图像输出示例ImageView object: Display bands : (29, 19, 9) RGB data limits : R: [2054.0, 6317.0] G: [2775.0, 7307.0] B: [3560.0, 7928.0]二、光谱算法1.K-means聚类(m, c) kmeans(imageimg, nclusters20, max_iterations30) # 可视化聚类中心 import matplotlib.pyplot as plt plt.figure() for i in range(c.shape): plt.plot(c[i]) plt.grid()2.监督分类高斯最大似然法# 加载真实标签 gt open_image(92AV3GT.GIS).read_band(0) # 创建训练集并训练分类器 classes create_training_classes(img, gt) gmlc GaussianClassifier(classes) clmap gmlc.classify_image(img) # 分类结果图 # 显示分类结果与误差 gtresults clmap * (gt ! 0) gterrors gtresults * (gtresults ! gt) imshow(classesgterrors) # 误差图3.降维主成分分析# 计算主成分 pc principal_components(img) # 保留99.9%方差的主成分 pc_0999 pc.reduce(fraction0.999) img_pc pc_0999.transform(img) # 降维后数据 # 可视化前3个主成分 imshow(img_pc[:, :, :3], stretch_allTrue)三、应用案例植被与土壤分类SVM示例# 1. 数据预处理PCA降维 from sklearn.decomposition import PCA X img.load().reshape((-1, img.shape[-1])) pca PCA(n_components30) X_pca pca.fit_transform(X) # 2. 划分训练集 from sklearn.model_selection import train_test_split y img.read_band(145) # 真实标签 X_train, X_test, y_train, y_test train_test_split(X_pca, y, test_size0.3) # 3. SVM分类 from sklearn.svm import SVC clf SVC(kernellinear) clf.fit(X_train, y_train) # 4. 评估结果 from sklearn.metrics import classification_report y_pred clf.predict(X_test) print(classification_report(y_test, y_pred))输出示例precision recall f1-score support 0 0.95 0.92 0.93 150 1 0.88 0.93 0.90 120 accuracy 0.91 270 macro avg 0.91 0.92 0.92 270 weighted avg 0.92 0.91 0.92 270关键依赖库spectral高光谱数据处理核心库。scikit-learn机器学习算法分类、降维。matplotlib可视化光谱曲线与结果。以上代码均基于文档中的实际案例适用于高光谱数据的读取、分析、分类及应用开发。