在MATLAB中读取.img文件

时间:2016-02-13 15:23:50

标签: matlab image-processing

我是MATLAB的新手。我想在MATLAB中读取.img文件,并希望导出它是任何通用的图像格式。我没有关于文件的任何信息(即图像分辨率)我尝试使用fread命令读取文件。

fid=fopen('image.img');
A=fread(fid,256*378,'unit8=>unit8');
fclose(fid);
b=reshape(A,256,378);
imshow(A);

只有当我知道.img文件的分辨率时,我才能打开它。请帮助我做同样的事情而不知道开始的决议,或者是否有人可以提出更好的方法来做到这一点。

下载.img文件here

3 个答案:

答案 0 :(得分:0)

目前尚不清楚您正在处理的是什么类型的.img文件。 .img文件通常是磁盘映像文件。 Mac,Windows和ISO有不同的文件格式。但是,这听起来像是在询问图形图像文件格式,这可能是专有的。如果您知道用于创建.img文件的程序,您可以了解有关其内部格式的更多信息。

dir函数可用于确定文件中的总字节数,这将允许您使用fread读取文件。但是,您仍然需要知道重塑图像的尺寸。

答案 1 :(得分:0)

如果你想处理图像,Matlab有一个很好的图像处理工具箱,我强烈建议你阅读帮助/手册。你会发现几个可以随时使用的内置函数可以解决你的问题。

imageinfo()就是其中之一:将显示一个包含多个与图像有关的信息的结构,imread()将以矩阵形式导入您的图像,mat2grey()将转换您的RGB图像灰度图像......列表继续。

请勿对图片使用fopen() / fread() / fclose():此类函数主要用于处理文本文件。

PS:你提供的链接包含一个磁盘映像(当然,正如@Herb正确指出的那样,给出了扩展名)。

答案 2 :(得分:0)

代码中fread()函数的sintax是错误的。

首先,数据类型是 uint8 而不是 unit8

  • U是无符号的,这意味着:所有值都是正数(没有否定"符号"允许)

  • INT是整数,表示:所有值都是整数,0,1,2,3 ......

  • 8只有8位信息,表示:最大值为255,最小值为0.

其次,函数256*378中的fread()参数将创建此图像的另一个维度。因此,正确的方法是使用[]

f = fopen('image.img')
image = fread(f, [256 378], '*uint8');
imshow(image,[])

davinci

imwrite(image, 'davinci.jpg', 'jpg')
whos image
Variables in the current scope:

   Attr Name          Size                     Bytes  Class
   ==== ====          ====                     =====  =====
        image         256x378                  96768  uint8

Total is 96768 elements using 96768 bytes

这个问题可能与question

略有不同
  • 的引用 1