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

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=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');

结果:

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凯少dfgh

你的鼓励就是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值