0

早上好,

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

20480 = 101000000000000 200 = 11001000

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

问候,

4

1 回答 1

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
于 2013-09-30T07:06:54.697 回答