2011-03-07 58 views
3

我不是很擅长Matlab,我需要以下代码的帮助。Matlab将图像数据写入二进制文件

我有一组图像中的图像数据,我想将这些图像保存为二进制文件以及显示数据如何保存在文件中的文件签名。

例如,假设我有一个被分割的图像,它被称为由4行和4列组成,以便图像由16个较小的图像组成。这些更小的图像的图像数据被保存在一个结构如下:

data = struct('imageTitleFinal', {}, 'imageDataFinal', {}); 

for rows = 1:numberOfRows 
     for columns = 1:numberOfColumns 
      data(rows,columns).imageTitleFinal = currentTile; 
      data(rows,columns).imageDataFinal = currentStructure(rows,columns).imageData; 
     end 
end 

我希望能够为每个较小的图像的该图像数据写入到一个二进制文件,并能够在组之间进行区分的文件内的图像数据。任何帮助将非常感激。

+0

我还想指出,我已经尝试在循环内的以下代码 fid = fopen('image.vfi','a'); fwrite(fid,data(rows,columns).imageDataFinal,'integer * 4'); fclose(fid); 但是我不确定如何在以后从文件中读取图像数据时能够区分这些图像数据集,或者在读取文件时我应该如何解释文件内容 – kushaldsouza 2011-03-07 22:16:50

+0

为什么要将其写为一个二进制文件?我可以想到两个原因:1.对于物理存储 - 在这种情况下,您可以使用加载/保存。 2.与其他工具一起使用 - 在这种情况下,您必须了解该工具如何预期数据,然后进行相应的编写。 – 2011-03-08 13:28:08

+0

@Ashih我将在android设备上使用这些数据。将尝试你下面的建议。谢谢。 – kushaldsouza 2011-03-10 00:01:42

回答

1

如果由于某种原因您必须写入二进制文件,您可能会为此数据创建自己的“标题”。

为每个“较小图像”编写一个固定数量的元数据,这些数据应该包含所有信息以帮助您解析图像数据。一个简单的方法是:

- 我假设你的'标题'是一个字符数组 - 我假设你的数据文件是一个双数组 - '|'只是一个分隔符。

|您的标题中包含字符数量的uint32 |您的标题数据写为字符|一个uint32,包含数据中的双数|所有数据都写为双| |

航空代码:

fopen in append mode 
fwrite(fid, numel(title), 'uint32'); 
fwrite(fid, title,'char'); %assuming ASCII char set 
fwrite(fid, numel(data), 'uint32'); 
fwrite(fid, data, 'double); 

您可以考虑增加更多的“元数据”,例如,数据的大小,如果你的“小图片”会不会有统一的尺寸。

+0

@ Ashish非常感谢,我已经按照上面的建议实现了它,它工作正常。 – kushaldsouza 2011-03-14 23:12:20