主要内容

超立方体

读高光谱数据

    描述

    超立方体高光谱数据读取并返回一个函数超立方体对象。对象包含了高光谱数据立方体及其相关属性。使用对象函数来删除或选择所需的高光谱波段,分配新的像素值,生成彩色图像,并将高光谱数据写入的环境(环境可视化图像)文件格式。

    创建

    描述

    例子

    hcube=超立方体(文件名)读取指定输入文件的高光谱数据文件名。输入文件可以是一个国家图像传输格式(NITF)文件,亥伯龙神级1 r (L1R)文件存储在分层数据格式(HDF)、头或图像文件的环境或元数据文本扩展(MTL)文件,其中包含从地球观测卫星数据(EO)卫星。

    • eo - 1亥伯龙神

    • 阿里eo - 1搭载的先进陆地成像仪(eo - 1)

    • 陆地卫星多光谱扫描仪(陆地卫星MSS)

    • 陆地卫星主题映射器(陆地卫星TM)

    • 陆地卫星增强主题映射器+(陆地卫星ETM +)

    • 陆地卫星运营陆地成像仪/热红外扫描仪(陆地卫星奥利/行动)

    请注意

    超立方体函数读取卫星数据存储在地理标记图像文件格式(GeoTIFF)。

    例子

    hcube=超立方体(img,hdr)从数据文件中读取高光谱数据img。数据文件可以是一个图像文件的环境或亥伯龙神L1R文件。头文件中的函数使用元数据hdr解释的数据img

    例子

    hcube=超立方体(___,波长)指定每个光谱波段的波长的输入数据和设置波长输出的属性超立方体对象。

    hcube=超立方体(tifFile,波长)读高光谱数据从一个标记图像文件格式(TIFF)文件tifFile

    例子

    hcube=超立方体(图像,波长)创建一个超立方体从高光谱数据立方体对象图像和指定的中心波长值波长

    例子

    hcube=超立方体(图像,波长,元数据)创建一个超立方体从高光谱数据立方体对象图像指定的中心波长值波长和元数据元数据。您可以使用该语法修改元数据超立方体对象的属性。

    请注意

    这个函数需要图像处理工具箱™高光谱影像库。您可以安装图像处理工具箱高光谱影像库从附加的探险家。关于安装插件的更多信息,请参阅获取和管理插件

    输入参数

    全部展开

    输入文件名称,指定为一个特征向量或字符串标量。输入文件名称必须是其中的一个文件类型。

    文件格式 扩展 额外的需求
    NITF文件

    .ntf

    . nsf

    没有一个
    从EO卫星GeoTIFF的元数据文件 . txt 文件名和后缀“MTL”必须结束。

    图像文件的环境

    头文件的环境

    .dat

    .hdr

    形象,头文件必须位于同一个文件夹和文件名相同。

    亥伯龙神级1 r图像文件

    亥伯龙神头文件

    .L1R

    .hdr

    形象,头文件必须位于同一个文件夹和文件名相同。

    数据类型:字符|字符串

    图像文件名称,指定为一个特征向量或字符串标量。输入文件必须是一个平坦的二元光栅文件.dat.L1R文件扩展名。二进制数据必须在乐队顺序(BSQ) band-interleaved-by-pixel(毕普),或band-interleaved-by-line (BIL)格式。

    数据类型:字符|字符串

    头文件名称,指定为一个特征向量或字符串标量。头文件包含图像文件的元数据img并扩展.hdr

    数据类型:字符|字符串

    每个光谱带的中心波长值,指定为C元向量。C光谱维度,定义为谱带的数量,输入的高光谱数据。

    数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

    TIFF文件名称,指定为一个特征向量或字符串标量。文件名必须包括扩展. tiff.tif

    数据类型:字符|字符串

    输入高光谱数据,指定为一个三维数值数组的大小——- - - - - -N——- - - - - -CN行和列的数量在高光谱数据,分别。C是高光谱数据的光谱波段数目。

    数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

    高光谱数据的元数据,指定为一个结构数组。

    数据类型:结构体

    属性

    全部展开

    这个属性是只读的。

    高光谱数据立方体,存储为一个三维数值数组的大小——- - - - - -N——- - - - - -C。高光谱数据立方体存储的数据读取一个文件或数值数组作为二维数组单色图像。C图像的数量或光谱波段,N在像素图像的空间分辨率。多维数据集的数据是相同的大小和数据类型作为输入数据。

    数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

    这个属性是只读的。

    每个光谱带的中心波长值,指定为一个C元向量。C光谱维度,定义为谱带的数量,输入的高光谱数据。你可以设置这个属性使用波长输入参数。

    数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

    这个属性是只读的。

    高光谱数据的元数据,存储为一个结构数组与这些字段默认值。

    描述
    高度 高度的图像或数据立方体的行数,指定为一个正整数
    宽度 图像的宽度或列数的数据立方体,指定为一个正整数
    乐队 数量的光谱波段组成数据立方体,指定为一个正整数
    数据类型

    数据类型的数据,指定为任何这些价值观:

    • “单身”

    • “替身”

    • “uint8”

    • “uint16”

    • “int16”

    • “uint32”

    • “int32”

    • “uint64”

    • “int64”

    交错

    数据交错,指定为任何这些值之一:

    • “bsq”——Band-sequential

    • “比尔”——Band-interleaved-by-line

    • “毕普”——Band-interleaved-by-pixel

    HeaderOffset

    从零开始的第一个元素的位置在图像文件中,指定为一个正整数

    头抵消代表从一开始的字节数的图像文件的图像数据。默认值是0。

    ByteOrder 字节顺序的数据,指定为字符串“ieee-le”小端字节或“ieee-be”大端字节序。
    WavelengthUnits 单位波长的光谱波段,指定为一个字符串。默认值是“纳米”

    请注意

    元数据的属性超立方体对象可以有一个或多个附加字段根据参数值存储在头文件输入的高光谱数据。您可以修改的参数值元数据财产或添加新元数据超立方体对象通过指定输入参数元数据

    数据类型:结构体

    对象的功能

    assignData 将新数据分配给高光谱数据立方体
    cropData 作物感兴趣的
    enviwrite 高光谱数据写入文件格式的环境
    selectBands 选择信息最丰富的乐队
    removeBands 移除光谱波段的数据立方体
    彩色化 估计高光谱数据的彩色图像

    例子

    全部折叠

    高光谱数据的环境中存储格式读入工作区。创建一个超立方体对象通过指定一个数据文件的环境和相关的头文件的环境。

    hcube =超立方体(“paviaU.dat”,“paviaU.hdr”);

    显示的属性超立方体对象。

    hcube
    hcube =超立方体的属性:DataCube:波长(610×340×103双):(103×1双)元数据:[1×1 struct]

    估计的RGB图像利用高光谱数据彩色化函数。可视化RGB图像。

    rgbImg =再着色(hcube,“方法”,“RGB”);图显示亮度图像(rgbImg)标题(数据立方体的RGB图像)

    检查的元数据超立方体对象。

    hcube.Metadata
    ans =结构体字段:文件名:“Y: 2020 _06_16_h06m34s27_job1406120_pass \ jobarchive \ Bspkg20b \ \ matlab工具箱\ \ \ supp金宝apportpackages \高光谱图像\ hyperdata \ paviaU。hdr" FileModDate: "25-Feb-2020 14:29:34" FileSize: 654 Format: "HDR" FormatVersion: '' SensorType: [0×0 string] Description: [0×0 string] AcquisitionTime: [0×0 string] RasterFormat: "ENVI" Height: 610 Width: 340 Bands: 103 DataType: "double" Interleave: "bsq" HeaderOffset: 0 ByteOrder: "ieee-le" BandNames: [0×0 string] FWHM: [] Gain: [] Offset: [] ReflectanceGain: [] ReflectanceOffset: [] BadBands: [] CloudCover: [] SunAzimuth: [] SunElevation: []

    读取格式的环境数据到工作区中通过指定一个头文件,其中包含关于高光谱数据的信息。相关的环境必须存储二进制数据文件在同一文件夹一样头文件。

    hcube =超立方体(“paviaU.hdr”);

    显示的属性超立方体对象。

    hcube
    hcube =超立方体的属性:DataCube:波长(610×340×103双):(103×1双)元数据:[1×1 struct]

    估计的RGB图像数据立方体使用彩色化函数。增加对比度的RGB图像使用对比度拉伸。可视化RGB图像。

    rgbImg =再着色(hcube,“方法”,“RGB”,“ContrastStretching”,真正的);图显示亮度图像(rgbImg)标题(数据立方体的RGB图像)

    分配新中心波长值的高光谱数据。波长值的数量必须等于乐队在高光谱数据立方体的数量。每个波长值必须是唯一的值。

    minWavelength = 500;maxWavelength = 1010;newWavelength = minWavelength: 5: maxWavelength;

    创建一个新的超立方体对象与新波长值。

    newhcube =超立方体(“paviaU.hdr”,newWavelength);

    旧的和新的情节波长值。显示波长范围。

    图绘制(hcube.Wavelength,“o”)举行情节(newhcube.Wavelength”或“)包含(带数字的)ylabel (“波长”)str1 = (“原来的波长范围:”num2str(最低(hcube.Wavelength))“纳米”num2str (max (hcube.Wavelength))“纳米”];1075年文本(5日,str1) str2 = (“新波长范围:”num2str(最低(newhcube.Wavelength))“纳米”num2str (max (newhcube.Wavelength))“纳米”];1035年文本(5日,str2)传说(的原始值,“新值”,“位置”,“东南”)

    读一个RGB图像到工作区中。RGB图像包含三个光谱通道:红、绿、蓝通道。

    形象= imread (“peppers.png”);

    指定的中心波长值的红、绿、蓝通道作为700年,分别为530和470纳米(纳米)。

    波长= (700 530 470);

    创建一个超立方体使用图像和波长值对象。

    波长hcube =超立方体(图片)
    hcube =超立方体的属性:DataCube: (384×512×3 uint8)波长:[3×1双]元数据:[1×1 struct]

    高光谱数据读入工作区并检查它的属性。

    hcube =超立方体(“paviaU.dat”);

    检查元数据财产的超立方体对象。

    hcube.Metadata
    ans =结构体字段:文件名:“mathworks /猛击/棒/ Bdoc21b /构建/ matlab工具箱/ / supportpackages /高光谱金宝app图像/ hyperdata / paviaU。hdr" FileModDate: "25-Feb-2020 03:59:34" FileSize: 654 Format: "HDR" FormatVersion: '' SensorType: [0x0 string] Description: [0x0 string] AcquisitionTime: [0x0 string] RasterFormat: "ENVI" Height: 610 Width: 340 Bands: 103 DataType: "double" Interleave: "bsq" HeaderOffset: 0 ByteOrder: "ieee-le" BandNames: [0x0 string] FWHM: [] Gain: [] Offset: [] ReflectanceGain: [] ReflectanceOffset: [] BadBands: [] CloudCover: [] SunAzimuth: [] SunElevation: [] SolarIrradiance: [] EarthSunDistance: [] WavelengthUnits: "Nanometers"

    找到并删除元数据的空字段。

    元数据= hcube.Metadata;字段=字段名(元数据);indx =找到(structfun (@isempty、元数据)= = 1);newMetadata = rmfield(元数据字段(indx));

    设置的值AcquistionTime当前日期字段。

    currentDate = datestr(现在,“yyyy-mm-dd”);newMetadata。AcquistionTime = currentDate;

    创建一个超立方体与新的元数据对象。的DataCube波长属性的新超立方体对象是相同的输入数据。

    nhcube =超立方体(hcube.DataCube hcube.Wavelength newMetadata);

    检查元数据房地产的新超立方体对象。

    nhcube.Metadata
    ans =结构体字段:身高:610宽度:340乐队:103数据类型:“双”交错:“bsq”HeaderOffset: 0 ByteOrder:“ieee-le”AcquistionTime:“2021-10-16”WavelengthUnits:“纳米”
    介绍了R2020a