(转载)高光谱数据读取by multibandread函数

高光谱数据读取

 

原文地址:http://www.cnblogs.com/yxxx/p/6873834.html

利用matlab中multibandread函数参考数据的hdr文件读取:

函数格式:

im = multibandread(filename,dims,precision,... offset,interleave,byteOrder,varargin)

参数说明:

DIMS:

    A 3 element vector of integers consisting of [HEIGHT, WIDTH, N].

PRECISION参数与matlab数据类型相应的关系如下所示:

    precision='uint8=>uint8';%头文件中datatype=1对应ENVI中数据类型为Byte,对应MATLAB中数据类型为uint8

    precision='int16=>int16';%头文件中datatype=2对应ENVI中数据类型为Integer,对应MATLAB中数据类型为int16

    precision='uint16=>uint16';%头文件中datatype=12对应ENVI中数据类型为Unsighed Int,对应MATLAB中数据类型为uint16

    precision='int32=>int32';%头文件中datatype=3对应ENVI中数据类型为Long Integer,对应MATLAB中数据类型为int32

    precision='uint32=>uint32';%头文件中datatype=13对应ENVI中数据类型为Unsighed Long,对应MATLAB中数据类型为uint32

    precision='float32=>float32';%头文件中datatype=4对应ENVI中数据类型为Floating Point,对应MATLAB中数据类型为float32

    precision='double=>double';%头文件中datatype=5对应ENVI中数据类型为Double Precision,对应MATLAB中数据类型为double

OFFSET:

    可以在hdr文件中找到

INTERLEAVE:

    The format in which the data is stored.  This can be either 'bsq','bil', or 'bip' for Band-Sequential, Band-Interleaved-by-Line or Band-Interleaved-by-Pixel respectively

    可以在hdr文件中找到:bsq,bil或bip

BYTEORDER:

    The byte ordering (machine format) in which the data is stored. This can be 'ieee-le' for little-endian or 'ieee-be' for big-endian.

     在hdr文件中找到:ieee-le' 对应 little-endian

                                  'ieee-be' 对应 big-endian.

 

这里用hydice中urban的例子:

其hdr文件为:samples = 307; lines = 307 ;bands = 210 ;header offset = 0; file type = multiband ;data type = 2 ;interleave = bil ;xstart = 1 ;ystart = 1; numpixels = 307; numlines = 307 ;byte order = big endian

matlab函数为:

a= multibandread('URBAN', [307,307,210], 'int16', 0, 'bil', 'ieee-be');

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Matlab中,您可以使用multibandreadmultibandwrite函数读取和写入高光谱数据。 使用multibandread函数读取高光谱数据的示例代码如下: ```matlab filename = 'example.hdr'; % 高光谱数据的文件名(包括hdr和img文件) info = hdrread(filename); % 读取hdr文件中的信息 data = multibandread('example.img', [info.lines, info.samples, info.bands], 'float', 0, 'bsq', 'ieee-le'); % 读取img文件中的数据 ``` 上述代码中,`hdrread`函数用于读取hdr文件中的信息,`multibandread`函数用于读取img文件中的数据。`[info.lines, info.samples, info.bands]`参数用于指定高光谱数据的尺寸,`'float'`参数用于指定数据类型,`0`参数用于指定数据偏移量,`'bsq'`参数用于指定数据存储格式,`'ieee-le'`参数用于指定数据字节顺序。 使用multibandwrite函数写入高光谱数据的示例代码如下: ```matlab filename = 'example_output.hdr'; % 输出高光谱数据的文件名(包括hdr和img文件) data_output = data + 1; % 对读取数据进行处理 hdrwrite(info, filename); % 写入hdr文件 multibandwrite(data_output, filename, 'bsq', 'precision', 'float', 'ieee-le'); % 写入img文件 ``` 上述代码中,`hdrwrite`函数用于写入hdr文件,`multibandwrite`函数用于写入img文件。`'bsq'`参数用于指定数据存储格式,`'precision'`参数用于指定数据精度,`'float'`参数用于指定数据类型,`'ieee-le'`参数用于指定数据字节顺序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值