MATLAB:读取无符号16位二进制文​​件的两个字节

时间:2013-01-17 16:30:24

标签: matlab integer byte binaryfiles

我有一个二进制Band Sequential(1波段,BSQ文件),这是一个无符号的16位(2字节)整数。

目前我正在通过multibandread阅读整个(图片):

img=multibandread('IMAGE.bsq',[400 400 1],'uint16',0,'bsq','n');

MATLAB中的哪个过程允许我单独读取两个字节?即我想在MATLAB中将文件读入2个新数组,例如byte1(400x400x1)和byte2(400x400x1)。

这可以通过fread实现吗?我注意到在'精度'部分中可以跳过源值(例如'N*source=>output'),但我不确定确切的过程。

1 个答案:

答案 0 :(得分:4)

一种方法是使用按位运算拆分当前img。 LSB图像将是:

img1 = bitand(img, 255);   %// 0x00FF

,MSB图像将是:

img2 = bitsra(img, 8);

不是强制性的,但也许你也想将它们转换为uint8 s:

img1 = uint8(img1);
img2 = uint8(img2);