所以我确信这是一个非常简单的问题,但我在读取和显示 .bin 文件中的数据时遇到了问题。基本上,我有一个图像(256x256,每像素 8 位),我试图读取并显示它。虽然我可以让它适用于 .jpg 或 .tif,但我无法让它适用于 .bin 文件。这是我现在的代码:
file = fopen('image.bin', 'r');
A = fread(file);
imshow(A) %not sure if this is correct...
% imshow(file) doesn't work
% imshow('image.bin') doesn't work either
fclose(file);
有什么想法吗?
最佳答案
我假设您的 .bin
文件由存储在二进制文件中的原始图像强度组成。您的 fread
调用只会将文件的内容读入数组,但您需要小心。默认情况下,这些值将在 MATLAB 中以 64 位 double
值的形式读入,因此单个 double
值将包含 8 图像像素。因此,您需要做的是修改使用 fread
读取值的方式。具体来说,您需要执行以下操作:
A = fread(file, 256*256, 'uint8=>uint8');
这表示您将总共读取 256 x 256 图像像素,其中输入二进制文件以无符号 8 位整数存储数据。之后,数据以相同类型读入 MATLAB。现在,您接下来需要做的是reshape
数组,使其成为 256 x 256 图像。
但是,由于 fread
读取column-major中的数据,因此该 reshape 图像的每一行都会被放入列中,因此您需要完成后,>转置重构后的矩阵。具体来说:
A = reshape(A, 256, 256).';
现在,A
将是您正在寻找的 256 x 256 图像。您现在可以使用 imshow(A);
显示此图像。
关于image - 如何在 Matlab 中显示 .bin 图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27935740/