在Matlab中将图像加倍到二进制

时间:2013-09-30 06:37:50

标签: image matlab

早上好,

我有一个关于如何将卫星图像转换为二进制数的问题。每个波段的格式是double类型的矩阵(655x639长度),数字类似于:204080,200等。我想将其转换为二进制格式。所以,例如:

20480 = 101000000000000 200 = 11001000

我尝试过使用“dec2bin”命令,但它会创建一个长度不同的矩阵(418545x8 char),我认为它不能正常工作(我想要相同的大小)。此外,我试图将格式更改为uint16或uint8等。我该怎么做?

问候,

1 个答案:

答案 0 :(得分:1)

我有一个问题:你如何表示图像中每个像素的二进制数? 最初,每个像素由浮点数表示,即655 * 639 * 1浮点数。转换为uint16uint8并不会改变每个像素由数字表示的事实。
但是,当您使用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