基于MATLAB读取高光谱影像每个像素的光谱信息
1.安装高光谱工具箱
首先,利用MATLAB对高光谱影像进行处理需要安装高光谱工具箱,这要求MATLAB版本至少为2020版本及以上,否则会出现不兼容的问题。
下载地址:https://ww2.mathworks.cn/help/images/ref/hyperspectralviewer-app.html
2.示例代码
clear, clc, close all;
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);
% 提取每个点的光谱曲线保存到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.结果展示
3.1 单个像素光谱信息
3.2 图像所有像素光谱信息
行:每一行代表一个像素
列:1,2列是图像像素坐标(以左上角的像素设置为原点进行编码),后面的每一列代表一个波段,其值为反射率值。
基于MATLAB读取高光谱影像每个像素的光谱信息相关推荐
- matlab读取高光谱影像
1.函数multibandread读取读取多波段二进制影像文件(ENVI主菜单file-save file as-envi standard得到的就是二进制影像文件,有时甚至会看到后缀名为bsq.bi ...
- matlab编程读取导航文件文件,基于Matlab读取标准RINEX格式的GPS星历数据
[实例简介] 基于Matlab读取标准RINEX格式的GPS星历数据,采用Matlab直接读取Rinex文件 张妮,等基于 Matlab读取标准 RINEX格式的GPS星历数据 navdata(i). ...
- Matlab中的dyna,基于 MATLAB 读取 LS-DYNA 的计算结果文件
LS-DYNA 的输出文件包含两类,分别为二进制文件和 ASCII 文件,分别由如下的控制命令输出. 二进制文件 *DATABASE_BINARY_OPTION ASCII 文件 *DATABASE_ ...
- 基于matlab读取envi格式高光谱图像数据
1关于光谱: 电磁波按波长大小分为射线,可见光,近红外(780nm-2526nm),无线电等. 波长:一个振动周期内传播的距离. 什么是光谱:复色光色散后按波长大小排列的图案. 什么是高光谱:1光谱信 ...
- 基于python的Spectral模块读取高光谱影像信息的一些笔记
1. 安装spectral模块 spectral模块的安装需要有numpy.pillow.wxpython.matplotlib.ipython等这几个包的铺垫,而且安装spectral模块时看的教程 ...
- 利用ArcGIS提取高光谱图像每个像素的光谱信息,再利用matlab显示每个像素的光谱信息
1.示例高光谱图像 2.像素光谱信息提取步骤 2.1 栅格转点 在ArcGIS的工具箱中选择[栅格转点]工具,将每个像素都转成一个点,如下图所示: 2.2 多值提取至点 在ArcGIS的工具箱中选择[ ...
- matlab读取RGB888或RGB565像素文件并绘图
1.matlab下,通过读取txt文件中的RGB888格式的像素文件绘图,并将其转换为RGB565格式后再绘图.代码如下: clear all; close all; a=textread('E:\m ...
- MATLAB读取高光谱数据
只能读取dat类型的高光谱数据 以下为头文件 clc clear all close allhdr = read_envihdr('d.hdr'); Image = multibandread('d. ...
- 基于matlab 读取文件夹 保存文件夹
mydir='E:'; bw = 'E:'; if mydir(end)~='\' mydir=[mydir,'\']; end DIRS=dir([mydir,'*.txt']); %扩展名 n=l ...
最新文章
- GPU版TensorFlow怎么指定让CPU运行
- oracle9201怎么安装,Solaris10上安装64位Oracle9201
- 深入理解CSS盒模型
- Solr集群搭建,zookeeper集群搭建,Solr分片管理,Solr集群下的DataImport,分词配置。
- BZOJ1566 [NOI2009]管道取珠
- centos8安装mysql_CentOS8+FreeRadius+Mysql8.0+daloRadius建立Radius服务器
- 这又何止呢的openeim002
- java持续集成soapui_接口自动化测试持续集成--Soapui接口功能测试参数化
- Java实现求二叉树的路径和
- PHP 中 new static 和 new self 的区别
- vscode 左侧图标_分钟将vscode撸成小霸王
- Android学习分享:执行某ViewGroup的动画时,子控件太多导致动画执行卡顿的问题...
- fences卸载_WIN10专业版彻底删除fences的技巧
- python数字转换成中文大写_Python将阿拉伯数字转化为中文大写
- 魔方cfop公式软件_按这七步训练,你可以快速玩转魔方!
- 火狐插件 打开html 死机,Firefox火狐Flash插件卡死问题完美解决方法
- 王垠的40行代码,究竟diao在哪里
- 浙江大学计算机学院就业办,浙江大学就业信息网
- “测验你左右脑分别有几岁”到底是个什么鬼?
- 硒化钼纳米颗粒/MoSe2 Nanoparticles的介绍 提供氨基/NH2/羧基COOH/PEG/蛋白Protein/抗体antibody功能化修饰的硒化钼纳米颗粒/MoSe2 Nanoparti