主要内容

超立方体

读高光谱数据

    描述

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

    创建

    描述

    例子

    hcube=超立方体(文件名从指定的输入文件读取高光谱数据文件名.输入文件可以是NITF (national imagery transmission format)文件、HDF (hierarchical data format)存储的Hyperion level 1R (L1R)文件、ENVI头文件或图像文件或包含EO (earth observing satellite)卫星数据的元数据文本扩展(metadata text extension)文件。

    • eo - 1亥伯龙神

    • EO-1高级陆地成像仪(EO-1 ALI)

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

    • 陆地卫星专题制图器(Landsat TM)

    • 陆地卫星增强型专题制图器(Landsat ETM+)

    • 陆地卫星运行陆地成像仪/热红外扫描仪(Landsat OLI / TIRS)

    请注意

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

    例子

    hcube=超立方体(img,hdr从数据文件中读取高光谱数据img.数据文件可以是ENVI镜像文件或Hyperion L1R文件。函数使用头文件中的元数据hdr解释…的数据img

    例子

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

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

    例子

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

    例子

    hcube=超立方体(图像,波长,元数据创建一个超立方体物体从高光谱数据立方体图像,指定中心波长值波长,以及元数据元数据.可以使用此语法修改元数据属性。

    请注意

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

    输入参数

    全部展开

    输入文件名,指定为字符向量或字符串标量。输入文件名必须是这些文件类型之一。

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

    .ntf

    . nsf

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

    图像文件的环境

    头文件的环境

    .dat

    .hdr

    图像和头文件必须在同一个文件夹中,并具有相同的文件名。

    Hyperion级1R图像文件

    亥伯龙神头文件

    .L1R

    .hdr

    图像和头文件必须在同一个文件夹中,并具有相同的文件名。

    数据类型:字符|字符串

    图像文件名,指定为字符向量或字符串标量。输入文件必须是一个平面二进制光栅文件.dat.L1R文件扩展名。二进制数据必须为BSQ (band sequence)、BIP (band interleavedby pixel)或BIL (band interleavedby line)三种格式。

    数据类型:字符|字符串

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

    数据类型:字符|字符串

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

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

    TIFF文件名,指定为字符向量或字符串标量。文件名必须包含扩展名. tiff.tif

    数据类型:字符|字符串

    输入高光谱数据,指定为大小的三维数字数组——- - - - - -N——- - - - - -C而且N分别为高光谱数据中的行数和列数。C是高光谱数据中的光谱频带数。

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

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

    数据类型:结构体

    属性

    全部展开

    此属性是只读的。

    高光谱数据立方体,存储为大小的三维数字数组——- - - - - -N——- - - - - -C.数据立方体将从文件或数字数组中读取的高光谱数据存储为二维单色图像数组。C是图像或光谱带的数量,而且N是以像素为单位的图像的空间分辨率。数据多维数据集的大小和数据类型与输入数据相同。

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

    此属性是只读的。

    每个光谱波段的中心波长值,用a表示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 将高光谱数据写入ENVI文件格式
    selectBands 选择信息量最大的波段
    removeBands 从数据立方体中删除光谱带
    彩色化 估计高光谱数据的彩色图像

    例子

    全部折叠

    将存储在ENVI格式中的高光谱数据读取到工作空间中。创建一个超立方体对象,通过指定ENVI数据文件和相关的ENVI头文件。

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

    的属性超立方体对象。

    hcube
    数据立方:[610×340×103 double]波长:[103×1 double]元数据:[1×1 struct]

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

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

    的元数据超立方体对象。

    hcube。米etadata
    ans =结构体字段:文件名:“Y: 2020 _06_16_h06m34s27_job1406120_pass \ jobarchive \ Bspkg20b \ \ matlab工具箱\ \ \ supp万博1manbetxortpackages \高光谱图像\ 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: []

    通过指定包含高光谱数据信息的头文件,将ENVI格式数据读入工作空间。相关的ENVI二进制数据文件必须存储在与ENVI头文件相同的文件夹中。

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

    的属性超立方体对象。

    hcube
    数据立方:[610×340×103 double]波长:[103×1 double]元数据:[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。波长,“o”)举行情节(newhcube。波长,”或“)包含(带数字的) ylabel (“波长”) str1 = [“原始波长范围:”num2str(最低(hcube.Wavelength))“纳米”num2str (max (hcube.Wavelength))“纳米”];文本(5,1075,str1) str2 = [“新的波长范围:”num2str(最低(newhcube.Wavelength))“纳米”num2str (max (newhcube.Wavelength))“纳米”];1035年文本(5日,str2)传说(的原始值,“新值”,“位置”,“东南”

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

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

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

    波长= [700 530 470];

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

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

    将高光谱数据读入工作空间并检查其属性。

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

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

    hcube。米etadata
    ans =结构体字段:文件名:“mathworks /猛击/棒/ Bdoc21b /构建/ matlab工具箱/ / supportpackages /高光谱万博1manbetx图像/ 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。米etadata
    ans =结构体字段:高度:610宽度:340带宽:103数据类型:"double" Interleave: "bsq" HeaderOffset: 0 ByteOrder: "ieee-le" AcquistionTime: '2021-09 '波长单位:"Nanometers"
    介绍了R2020a