如何在 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);
.
显示此图像
所以我确定这是一个非常简单的问题,但我在读取和显示 .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);
.