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

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

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

 

 

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
MATLAB是一种强大的数值计算和数据可视化软件,可以用于处理高光谱图像。在MATLAB中,我们可以采用以下步骤处理高光谱图像。 1. 读取图像:使用MATLAB提供的图像处理函数,例如"imread"函数,可以将高光谱图像从文件中读取到MATLAB工作区中。 2. 数据处理高光谱图像通常具有较高的维度和复杂的噪声。为了提高后续处理的效果,可以进行数据处理。例如,可以使用滤波器函数平滑图像,降低噪声水平。 3. 数据可视化:MATLAB提供了丰富的数据可视化工具,可用于观察高光谱图像的空间和频谱特征。通过绘制图像的直方图、频谱图和散点图等,可以更好地理解高光谱图像的特性。 4. 特征提取:高光谱图像通常具有数百个波段,因此可以从中提取有用的信息。MATLAB提供了很多特征提取函数,例如主成分分析(PCA)和线性判别分析(LDA),可用于降低维度并提取重要的特征。 5. 分类与识别:通过使用机器学习和模式识别算法,可以将高光谱图像进行分类和识别。MATLAB提供了许多机器学习工具箱,如支持向量机(SVM)和人工神经网络(ANN),用于训练分类模型,并将高光谱图像分为不同的类别。 6. 结果评估:在进行分类和识别之后,可以使用性能评估指标对结果进行评估。MATLAB提供了许多评估指标函数,如准确率、召回率和F1分数,可用于评估分类模型的性能。 总之,MATLAB提供了广泛的工具和函数,可用于处理高光谱图像。通过使用这些工具,我们可以进行数据处理、特征提取、分类与识别,并评估结果的准确性。MATLAB的强大功能使其成为处理高光谱图像的理想工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

周周写代码

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

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

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

打赏作者

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

抵扣说明:

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

余额充值