从二进制文件读取波段交错文件 您所在的位置:网站首页 matlab无法打开要读取的文件怎么解决呢视频 从二进制文件读取波段交错文件

从二进制文件读取波段交错文件

2024-04-22 09:16| 来源: 网络整理| 查看: 265

multibandread

从二进制文件读取波段交错文件

语法

X = multibandread(filename,size,precision,offset,interleave,byteorder) X = multibandread(...,subset1,subset2,subset3)

说明

X = multibandread(filename,size,precision,offset,interleave,byteorder) 从二进制文件 filename 读取波段顺序 (BSQ)、波段按行交错 (BIL) 或波段按像素交错 (BIP) 数据。filename 输入指定为字符向量或字符串标量。该函数将波段>定义为三维数组的第三个维度,如下图所示。

您可以使用 multibandread 的参数来指定读取操作的各个方面,例如读取哪些波段。有关详细信息,请参阅参数。

X 是二维数组(如果只读取一个波段);否则是三维数组。默认情况下,X 返回为 double 数据类型的数组。使用 precision 参数可将数据映射到不同数据类型。

X = multibandread(...,subset1,subset2,subset3) 读取文件中数据的子集。您最多可以使用三个子集设置参数指定沿行、列和波段维度的数据子集。有关详细信息,请参阅子集设置参数。

注意

除了 BSQ、BIL 和 BIP 文件,还可以使用 TIFF 文件格式存储多波段图像。在这种情况下,可使用 imread 函数导入数据。

参数

该表格介绍了 multibandread 所接受的参量。

参量

描述

filename

字符向量或字符串标量,包含要读取的文件的名称。

size

三元素整数向量包含 [height, width, N],其中

height 是总行数

width 是每行元素总数

N 是总波段数。

如果全部读取,那么它们就是数据的维度。

precision

指定要读取的数据格式的字符向量或字符串标量,例如 'uint8'、'double'、'integer*4' 或 fread 函数支持的其他任何精度。

注意:还可以使用 precision 参数指定输出数据的格式。例如,若要读取 uint8 数据并输出一个 uint8 数组,可将精度指定为 'uint8=>uint8'(或 '*uint8')。若要读取 uint8 数据并向 MATLAB® 软件输出单精度数据,可将其指定为 'uint8=>single'。有关详细信息,请参阅 fread。

offset

指定文件中第一个数据元素位置的标量(从 0 开始计算)。该值表示文件起始处到数据起始处的字节数。

interleave

存储数据的格式,指定为下列值之一:

'bsq' - 波段顺序

'bil'- 波段按行交错

'bip'- 波段按像素交错

有关这些交错方法的详细信息,请参阅 multibandwrite 参考页。

byteorder

指定数据存储字节顺序(机器格式)的字符向量或字符串标量,例如:

'ieee-le' - Little-endian

'ieee-be' - Big-endian

关于支持格式的完整列表,请参阅 fopen。

子集设置参数

最多可以指定三个子集设置参数。每个取子集参数都是一个三元素元胞数组 {dim,method,index},其中

参数

描述

dim

取子集时所沿的维度。指定为下列任意值之一:

'Column'

'Row'

'Band'

method

子集设置方法。指定为下列值之一:

'Direct'

'Range'

如果忽略此子集元胞数组元素,multibandread 将使用 'Direct' 作为默认值。

index

如果 method 是 'Direct',index 则是指定沿波段维度读取索引的向量。

如果 method 是 'Range',index 则是三元素向量 dim,用来确定要沿 [start, increment, stop] 指定维度读取的范围和步长。如果 index 是二元素向量,multibandread 假设 increment 的值是 1。

示例示例 1

为数据集设置初始参数。

rows=3; cols=3; bands=5; filename = tempname;

定义数据集。

fid = fopen(filename, 'w', 'ieee-le'); fwrite(fid, 1:rows*cols*bands, 'double'); fclose(fid);

使用波段顺序格式每隔一个波段读取一次数据。

im1 = multibandread(filename, [rows cols bands], ... 'double', 0, 'bsq', 'ieee-le', ... {'Band', 'Range', [1 2 bands]} )

使用波段按像素交错格式读取数据前两行和前两列。

im2 = multibandread(filename, [rows cols bands], ... 'double', 0, 'bip', 'ieee-le', ... {'Row', 'Range', [1 2]}, ... {'Column', 'Range', [1 2]} )

使用波段按行交错格式读取数据。

im3 = multibandread(filename, [rows cols bands], ... 'double', 0, 'bil', 'ieee-le')

删除本例中创建的文件。

delete(filename); 示例 2

从 FITS 文件 tst0012.fits 第 74880 个字节开始读取 int16 BIL 数据。

im4 = multibandread('tst0012.fits', [31 73 5], ... 'int16', 74880, 'bil', 'ieee-be', ... {'Band', 'Range', [1 3]} ); im5 = double(im4)/max(max(max(im4))); imagesc(im5); 版本历史记录

在 R2006a 之前推出

另请参阅

fread | fwrite | imread | memmapfile | multibandwrite



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有