matlab 显示高光谱反射率
时间: 2025-02-04 08:18:00 浏览: 48
### 如何在MATLAB中读取和可视化高光谱反射率数据
#### 使用 MATLAB 的高光谱工具箱加载 ENVI 格式的高光谱图像
为了处理 LIB-HSI 数据集中提供的 ENVI 格式文件,在 MATLAB 中可以利用其内置的高光谱工具箱来简化操作过程。对于版本 2020 及以上,MATLAB 已经包含了专门针对高光谱数据分析的功能[^2]。
```matlab
% 加载ENVI格式的高光谱数据
filename = 'path_to_file'; % 替换为实际路径名
datacube = hyperRead(filename);
```
这段代码会将指定位置下的 ENVI 文件作为三维数组 `datacube` 导入内存中,其中每一层代表不同波长下获取的空间分布情况。
#### 显示单个波段或合成彩色图像
一旦成功导入了整个立方体结构之后,就可以选取某些特定波段来进行单独展示或是组合成伪彩图以便更直观地观察目标区域内的细节特征:
```matlab
% 获取某一波段并显示灰度图
bandIndex = 50; % 假设选择第50个波段
singleBandImage = datacube(:,:,bandIndex);
imshow(singleBandImage, []);
title(['Band ', num2str(bandIndex), ' Image']);
colorbar;
% 创建真彩色(RGB)合成图片 (假设近似可见光范围)
rgbBandsIndices = [100, 200, 300]; % 自定义三个波段索引对应红绿蓝通道
trueColorComposite = ind2rgb(uint8(datacube(:,:,rgbBandsIndices)), parula(256));
figure;
imshow(trueColorComposite);
title('True Color Composite');
```
这里展示了两种不同的方式——一种是从原始多维矩阵抽取单一层面形成黑白视图;另一种则是挑选出接近于人类视觉感知范围内相对应的颜色分量构建出色彩丰富的全景画面。
#### 绘制光谱曲线
除了空间上的呈现外,有时还需要关注某一固定地点随时间变化所表现出的不同辐射强度特性。此时可以通过提取感兴趣区域内所有可用频带的信息绘制出完整的光谱响应图形:
```matlab
% 提取某个像素点处的完整光谱向量
pixelX = 100; pixelY = 150; % 定义坐标位置
spectrumVector = squeeze(datacube(pixelY,pixelX,:));
% 展现该位置对应的光谱曲线
figure;
plot(spectrumVector);
xlabel('Wavelength Index'); ylabel('Reflectance Value');
title(['Spectral Signature at Pixel(',num2str(pixelX),',',num2str(pixelY),')']);
grid on;
```
此部分实现了对选定坐标的逐波段扫描,并最终得到一条能够反映物体表面属性的独特指纹型图表。
阅读全文
相关推荐


















