主要内容

dn2reflectance

将数字转换为反射率

描述

例子

newhcube= dn2reflectance (hcube将高光谱数据立方体的像素值从数字数字(DN)转换为反射率值。函数返回一个new超立方体对象和数据立方体的像素值是大气(TOA)反射率值的顶部。有关TOA反射率值的详细信息,请参见从dn计算TOA反射率值

newhcube= dn2reflectance (hcube“BlockSize”,blocksize通过使用名称-值对参数指定高光谱数据立方体的块处理的块大小“BlockSize”

该函数将输入图像划分为不同的分块,对每个分块进行处理,然后将每个分块处理后的输出连接起来,形成输出矩阵。高光谱图像是多维数据集,它们可能太大,无法全部装进系统内存。方法时,可能导致系统内存不足dn2reflectance函数。如果遇到这样的问题,请使用此语法执行块处理。

例如,dn2reflectance (hcube BlockSize, [50 50])将输入图像分割成大小为50x50的互不重叠的块,然后计算每个块中像素的反射率值。

请注意

来执行块处理“BlockSize”名值对参数,你必须有MATLAB®R2021a或更高版本。

请注意

此函数需要图像处理工具箱™高光谱成像库.您可以安装图像处理工具箱高光谱成像库从Add-On Explorer。有关安装插件的更多信息,请参见获取和管理插件

例子

全部折叠

将高光谱数据读入工作空间。

超立方(“EO1H0440342002212110PY_cropped.hdr”);

确定坏的光谱带号使用BadBands参数。

bandNumber = find(~hcube.Metadata.BadBands);

从数据立方体中删除坏的光谱带。

hcube = removeBands(hcube,“BandNumber”, bandNumber);

将数字转换为大气顶部(TOA)反射率。输出数据立方体中的像素值是TOA反射率。

Newhcube = dn2反射率(hcube);

读取和显示输入和输出反射率数据立方体中的第80光谱波段图像。

inputBand = hcube.DataCube;reflectanceBand = newhcube.DataCube;Band = 80;图subplot(1,2,1) imagesc(inputBand(:,:,band))“输入乐队”)轴subplot(1,2,2) imagesc(reflectanceBand(:,:,band)) title(“反射带”)轴colormap灰色的

图中包含2个轴对象。标题为Input Band的Axes对象1包含一个类型为image的对象。标题为Reflectance Band的Axes对象2包含一个类型为image的对象。

输入参数

全部折叠

输入高光谱数据,指定为a超立方体对象。的DataCube的属性超立方体对象存储高光谱数据立方体。的元数据的属性超立方体对象必须包含反射率增益值。

数据块的大小,指定为两个元素的正整数向量。向量的元素分别对应于每个块中的行数和列数。数据块的大小必须小于输入图像的大小。将高光谱图像划分为更小的块使您能够处理大数据集而不会耗尽内存。

  • 如果blocksize值过小,函数的内存使用量会减少,但会增加执行时间。

  • 如果blocksize值较大或等于输入图像大小时,执行时间会减少,但会增加内存使用量。

例子:“BlockSize”,[20]20指定每个数据块的大小为20 × 20。

输出参数

全部折叠

输出高光谱数据,返回为超立方体对象。在输出处返回的数据立方体的像素值指定了大气顶部(TOA)反射率值。

更多关于

全部折叠

从dn计算TOA反射率值

给定一个数字(DN), TOA反射率通过使用反射率增益(R获得)和反射率偏移(R抵消)的每个光谱波段。

反射 ρ λ D N × R G 一个 n + R O f f 年代 e t

每个光谱波段的反射率增益和反射率偏移值存储在头文件中。

另外,TOA反射率值可以通过以下两个步骤从数字(DN)中估计出来:

  1. 从数字数字(DN)计算亮度值。

    光辉L λ D N × G 一个 n + B 一个 年代

    获得λ而且偏见λ每个光谱波段的增益和偏移值(λ分别)。的元数据的属性超立方体对象包含增益和偏移值。

  2. 从辐射值计算TOA反射率值。

    反射 ρ λ π d 2 l λ E 年代 U N λ θ E

    d是地日距离的天文单位,丰德丽λ是每个光谱波段的平均太阳辐照度,和θE为太阳仰角。

版本历史

在R2020b中引入