MATLAB处理高光谱图像数据

以下内容主要包括四个方面:

(1)显示第2到5条光谱反射率和波长的关系(折线图);

(2)显示前四条叶绿素值的条形图

(3)显示叶绿素与各个波段的相关性折线图

(4)计算植被指数NDVI与叶绿素对应的散点图;

此链接为数据链接:MATLAB高光谱图像数据-数据集文档类资源-CSDN文库

 数据下载之后你可以选择将这个表格放在MATLAB运行路径下的bin路径下,那么在代码中则可以直接输入名称调用,也可以随便放在某个文件夹下,那么加载数据的时候就需要提供完整路径。

%% 数据导入
Data=xlsread('ASD_Cab.xlsx');% 导入光谱反射率,定义变量为Data,为Excel的sheet1
Chlo=xlsread('ASD_Cab.xlsx',2);% 导入叶绿素数据,定义变量为Chlo,为Excel的sheet2
% 行为波段350-2500;
% 列为波段(列1)+32条光谱(列2-33)
wavelength=Data(:,1);% 定义x轴变量为wavelength,数据列1
Ref=Data(:,2:33);% 光谱数据为Ref,数据列2-33

%% 绘图
Ref(1000:1050,:)=NaN;%由于把反射率数据单独拿出来之后,原本波长350nm现在到了第一行,所以在后续处理中要考虑到这一变化
Ref(1450:1600,:)=NaN;%   去除有噪音的波段1350-1400nm;1800-1950nm
%Ref(2120:2151,:)=NaN;
subplot(2,2,1);plot(wavelength,Ref(:,2:5));% 子图1:光谱反射率第2-5列显示(折线);
axis([400,2800,0,0.6]);%   横轴范围400-2500;纵轴范围0-1;
title('(a) 植被反射率');%   标题名:'(a) 植被反射率'
xlabel('波段/nm');%   x轴名:’波段/nm'
ylabel('光谱反射率');%   y轴名:'光谱反射率'

subplot(2,2,2); bar(Chlo(1:4));% 子图2:前4条叶绿素值显示(条形图);
axis([0 5 0 60]);%设置坐标轴的大小
title('\it\fontsize{10}(b) 植被叶绿素含量');%   标题名:'(b) 植被叶绿素含量'
xlabel('样本编号');%   x轴名:'样本编号'
ylabel('叶绿素含量ug/cm2');%   y轴名:'叶绿素含量ug/cm2'

corr_matrix=corr(Cab.',Ref.');%计算叶绿素和反射率的相关矩阵
subplot(2,2,3);plot(wavelength,corr_matrix);% 子图3:叶绿素与各个波段的相关性
axis([0,2650,-1,1]);%   相关性最佳位置显示
title('(c) 叶绿素与光谱相关性');%   标题名:'(c) 叶绿素与光谱相关性'
xlabel('波段/nm');%   x轴名:'波段/nm'
ylabel('相关系数');%   y轴名:'相关系数'

b790=Ref(441,:);%此处本应使用波长790nm,但是由于上述提到的350nm去了第一行,所以此处输入的441对应的就是790nm
b665=Ref(316,:);
NDVI = (b790-b665)./(b790+b665);%  NDVI = (b790-b665)/(b790+b665)
subplot(2,2,4);scatter(NDVI,Chlo,'filled');% 子图4:计算植被指数NDVI与叶绿素对应的散点图;
axis([0.4,1,20,60]);
title('(d) NDVI与叶绿素含量');%   标题名:'(d) NDVI与叶绿素含量'
xlabel('NDVI');%   x轴名:'NDVI'
ylabel('叶绿素含量ug/cm2');%   y轴名:'叶绿素含量ug/cm2'

%% 保存
%绘制图像并保存为jpg格式
print G:\MATLAB\result\ASD_Cab.jpg -djpeg -r900
print(gcf, '-djpeg', 'abc.jpg') 
% saveas(gcf, 'test', 'png')

此处提供的仅为最原始最简单的代码,在实际过程中你可以根据自己的需要进一步完善,比如修改字体字号、修改显示的形状颜色等等等等······

最后附上上述代码的执行结果:

 MATLAB处理高光谱图像数据_第1张图片

 

你可能感兴趣的:(MATLAB,遥感图像处理,matlab,图像处理)