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

时间:2015-01-14 04:11:24

标签: image matlab image-processing bin

所以我确定这是一个非常简单的问题,但是我无法从.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);

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

我将假设您的.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 中的数据,因此此重新整形图像的每一行都会放入列中,因此您需要转置< / strong>完成后重构的矩阵。具体做法是:

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

现在,A将是您正在寻找的256 x 256图像。您现在可以使用imshow(A);显示此图片。