从二进制文件读取波段交错文件 | 您所在的位置:网站首页 › matlab无法打开要读取的文件怎么解决呢视频 › 从二进制文件读取波段交错文件 |
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 实验室设备网 版权所有 |