所以我确定这是一个非常简单的问题,但是我无法从.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);
有什么想法吗?
答案 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);
显示此图片。