1.示例高光谱图像
文章图片
2.像素光谱信息提取步骤
2.1 栅格转点
在ArcGIS的工具箱中选择【栅格转点】工具,将每个像素都转成一个点,如下图所示:
文章图片
2.2 多值提取至点 在ArcGIS的工具箱中选择【多值提取至点】工具,点要素选择2.1步骤生成的点图层,图像选择高光谱图像:
文章图片
3.结果 操作完成后,打开点图层属性表就可以看到每个像素光谱信息已提取出来,如图所示:
文章图片
4.matlab进行像素光谱显示 首先,在ArcGIS中将点图层的属性表导出,导出为excel格式文件:
文章图片
然后方便显示,我们可以将1,2列删除,然后在把第一行每个波段代表序号换成中心波长信息(这个可以在envi中获取每个波段的中心波长,你打开高光谱图像属性表可以看到),如下图所示:每一行代表一个像素,每列代表像素在这个波段的光谱信息(反射率值)。
文章图片
代码示例:
clc;结果:
clear;
close all;
%输入文件
[inputfile,PathName]= uigetfile({'*.*'; '*.xls'; '*.csv'; '*.csv'},'选择目标文件夹')
%获取输入文件的路径
Nameall=strcat(PathName,inputfile)%将路径和文件名拼接
Position=strfind(Nameall,'.xls'); %判断文件是不是xls文件
Filetype=isempty(Position); %判断文件是不是xls文件
if Filetype==1
data=https://www.it610.com/article/csvread(Nameall,1,1); %读取csv文件去掉第一行第一列的标签和波数
else
[num,txt,raw] = xlsread(Nameall)%读取xls文件
[m1,n1]=size(num)
data=https://www.it610.com/article/num(1:m1,1:n1);
end
https://www.it610.com/article/data=data';
Absorbance=data(:,2:end); %得到反射率
Absorbance=Absorbance';
[Absorbance_m,Absorbance_n]=size(Absorbance);
Wavenumber=data(:,1); %得到波数
Wavenumber=Wavenumber';
%原始光谱图
figure(1);
for sample=1:1:Absorbance_m
plot(Wavenumber(1,:),Absorbance(sample,:));
hold on;
end
title('原始光谱');
xlabel('Wavenumber(nm)');
ylabel('Absorbance');
文章图片
【利用ArcGIS提取高光谱图像每个像素的光谱信息,再利用matlab显示每个像素的光谱信息】
推荐阅读
- 云存储|ArcGIS与MINIO系列文章(1)-MINIO搭建
- ArcGIS|Linux上安装ArcGIS for Server超详细教程——以Redhat6.5上安装ArcGIS for Server 10.3.1为例