利用ArcGIS提取高光谱图像每个像素的光谱信息,再利用matlab显示每个像素的光谱信息

1.示例高光谱图像

利用ArcGIS提取高光谱图像每个像素的光谱信息,再利用matlab显示每个像素的光谱信息_第1张图片

 2.像素光谱信息提取步骤

2.1 栅格转点

在ArcGIS的工具箱中选择【栅格转点】工具,将每个像素都转成一个点,如下图所示:

利用ArcGIS提取高光谱图像每个像素的光谱信息,再利用matlab显示每个像素的光谱信息_第2张图片

 2.2 多值提取至点

在ArcGIS的工具箱中选择【多值提取至点】工具,点要素选择2.1步骤生成的点图层,图像选择高光谱图像:

利用ArcGIS提取高光谱图像每个像素的光谱信息,再利用matlab显示每个像素的光谱信息_第3张图片

3.结果

操作完成后,打开点图层属性表就可以看到每个像素光谱信息已提取出来,如图所示:

利用ArcGIS提取高光谱图像每个像素的光谱信息,再利用matlab显示每个像素的光谱信息_第4张图片

4.matlab进行像素光谱显示

首先,在ArcGIS中将点图层的属性表导出,导出为excel格式文件:

利用ArcGIS提取高光谱图像每个像素的光谱信息,再利用matlab显示每个像素的光谱信息_第5张图片

然后方便显示,我们可以将1,2列删除,然后在把第一行每个波段代表序号换成中心波长信息(这个可以在envi中获取每个波段的中心波长,你打开高光谱图像属性表可以看到),如下图所示:每一行代表一个像素,每列代表像素在这个波段的光谱信息(反射率值)。

 利用ArcGIS提取高光谱图像每个像素的光谱信息,再利用matlab显示每个像素的光谱信息_第6张图片

 代码示例:

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=csvread(Nameall,1,1); %读取csv文件去掉第一行第一列的标签和波数

else

[num,txt,raw] = xlsread(Nameall)%读取xls文件

[m1,n1]=size(num)

data=num(1:m1,1:n1);

end

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显示每个像素的光谱信息_第7张图片

 

 

你可能感兴趣的:(arcgis)