早上好,
我有一个关于如何将卫星图像转换为二进制数的问题。每个波段的格式是double类型的矩阵(655x639长度),数字类似于:204080,200等。我想将其转换为二进制格式。所以,例如:
20480 = 101000000000000 200 = 11001000
我尝试过使用“dec2bin”命令,但它会创建一个长度不同的矩阵(418545x8 char),我认为它不能正常工作(我想要相同的大小)。此外,我试图将格式更改为uint16或uint8等。我该怎么做?
问候,
答案 0 :(得分:1)
我有一个问题:你如何表示图像中每个像素的二进制数?
最初,每个像素由单浮点数表示,即655 * 639 * 1浮点数。转换为uint16
或uint8
并不会改变每个像素由单数字表示的事实。
但是,当您使用dec2bin
转换为二进制字符串时,您希望使用几个(8或16)二进制数字来表示每个像素。因此,您的结果现在大小为418,545乘8(请注意418,545 = 655 * 639)。
您可以做的是reshape
使用第三维来存储每像素二进制向量的结果
sz = size(myDoubleIm);
binIm = dec2bin( uint16(myDoubleIm) ); % convert to 16 bit
binIm = reshape( binIm, sz(1), sz(2), [] ); % convert to 3D