我有一个二进制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'
),但我不确定确切的过程。
答案 0 :(得分:4)
一种方法是使用按位运算拆分当前img
。 LSB图像将是:
img1 = bitand(img, 255); %// 0x00FF
,MSB图像将是:
img2 = bitsra(img, 8);
不是强制性的,但也许你也想将它们转换为uint8
s:
img1 = uint8(img1);
img2 = uint8(img2);