2011-03-07 89 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