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

标签 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);

有什么想法吗?

最佳答案

我假设您的 .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/

相关文章:

javascript Date.now() 继续堆栈

java - 在 Swing Java Netbeans 中的 JTextField 上设置图像

c# - 如何查找位图和 JPEG 文件的结构?

opencv - 如何将 SIFT 描述符与局部敏感散列结合使用?

python - 如何从图像创建 4D numpy 数组?

jquery - 根据屏幕分辨率更改img src路径

arrays - 这在 Matlab 中是什么意思 : x=x(: , N)

matlab - 控制 MATLAB 中 MSERRegions.plot() 使用的颜色?

c - 使用Mex环境时设置环境变量

使用 AForge 对 Kinect 视频进行 C# 图像处理