如何在 Matlab 中显示 .bin 图像?

How to display a .bin image in Matlab?

所以我确定这是一个非常简单的问题,但我在读取和显示 .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中的数据,所以这个整形图像的每一行都会被放入列中,所以你需要完成后 转置 重塑后的矩阵。具体来说:

A = reshape(A, 256, 256).';

现在,A 就是您正在寻找的 256 x 256 图片。您现在可以使用 imshow(A);.

显示此图像