1.安装高光谱工具箱 首先,利用MATLAB对高光谱影像进行处理需要安装高光谱工具箱,这要求MATLAB版本至少为2020版本及以上,否则会出现不兼容的问题。
下载地址:https://ww2.mathworks.cn/help/images/ref/hyperspectralviewer-app.html
2.示例代码
clear, clc, close all;3.结果展示 3.1 单个像素光谱信息
hcube = hypercube('temp.hdr'); % caijian.hdr 为高光谱数据
datacube = hcube.DataCube;
wl = hcube.Wavelength;
% lines 为行数,samples 为列数,bands 为波段数
[lines, samples, bands] = size(datacube);
% 新建表格用于存放光谱数据,行数为画面中所有像素点的数据,列数包括像素x,y的坐标列和波长列
data_table = zeros(lines*samples, bands+2);
【matlab|基于MATLAB读取高光谱影像每个像素的光谱信息】
% 提取每个点的光谱曲线保存到data_table中
sum = 0;
for x = 1:1:lines
for y = 1:1:samples
sum = sum+1;
data_table(sum, 1) = x; % 第一列为像素的行索引
data_table(sum, 2) = y; % 第二列为像素的列索引
spectrum = datacube(x, y, :);
spectrum_1d = reshape(spectrum, [1, bands]);
data_table(sum, 3:end) = spectrum_1d; % 第三列到最后一列为波段
end
end
% % 通过两种方式,绘制第3行,第10列像素的光谱曲线,验证提取的光谱曲线是否准确
wl_1d = reshape(wl, [1, bands]);
figure, plot(wl_1d, data_table((3-1)*samples+10, 3:end), "LineWidth",5, "Color","blue"); % 从data_table 中取点
hold on;
spectrum_1d = reshape(datacube(3, 10, :), [1, bands]); % 从图像中取点
plot(wl_1d, spectrum_1d, "LineWidth", 1, "Color","red");
hold off
文章图片
3.2 图像所有像素光谱信息
行:每一行代表一个像素
列:1,2列是图像像素坐标(以左上角的像素设置为原点进行编码),后面的每一列代表一个波段,其值为反射率值。
文章图片
推荐阅读
- matlab|matlab 显示高光谱,Matlab在高光谱图像处理上的使用指南(不断补充ing)
- 笔记|打印dataframe数据的几种方法
- python|Python进阶系列 - 18讲 伟大的*号
- python|python运行速度太慢(那是你打开的方式不对)
- python|python--数据容器--列表
- matlab|【SVM预测】基于matlab蝙蝠算法之改进的SVM预测(二)【含Matlab源码 141期】
- matlab|【路径规划】遗传算法之考虑分配次序的多无人机协同目标分配建模【Matlab 021期】
- GoLang底层|GoLang之Go1.17泛型
- golang|golang泛型介绍