5

符号なし 16 ビット (2 バイト) 整数であるバイナリ バンド シーケンシャル (1 バンド、BSQ ファイル) があります。

現在、 multibandreadを使用して全体 (画像) を読み取っています。

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

MATLAB のどのプロセスで、両方のバイトを個別に読み取ることができますか? つまり、ファイルを MATLAB の 2 つの新しい配列 (byte1 (400x400x1) と byte2 (400x400x1) など) に読み込みたいと考えています。

これはfreadで実現できますか? 「精度」セクションで、ソース値をスキップできることに注意してください (例: 'N*source=>output') が、正確なプロセスはわかりません。

4

1 に答える 1

4

img1 つの方法は、現在のビット単位の操作を分割することです。LSB イメージは次のようになります。

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

MSB イメージは次のようになります。

img2 = bitsra(img, 8);

必須ではありませんが、これらをuint8s に変換したい場合もあります:

img1 = uint8(img1);
img2 = uint8(img2);
于 2013-01-17T16:37:46.797 に答える