2017-08-10 83 views
-1

我想知道jpeg2000格式圖像中標題的大小。我怎樣才能找到這個頭?如何在matlab中計算jpeg2000文件頭大小?

我想計算沒有頭大小的硬盤中image.jp2的純大小。

我使用iminfo找到matlab中的一些關於圖像的信息,但我不知道我可以從中找到圖像的頭部大小?

其實我用jpeg2000壓縮圖像,我想計算沒有標題大小的壓縮率。

請幫幫我。

+0

提示:「請立即幫助我」可能會讓您在這裏獲得**緩慢的回覆,這對於志願者幫助您的人來說是一個粗暴的要求。 – Wolfie

+0

我編輯這個。謝謝 – reihan

+1

JPEG2k頭非常小,我懷疑它會影響你的壓縮比太多。在兩個jpeg2k文件中,我檢查了它的12 + 20 + 345 = 377字節。 – jodag

回答

0

J2K文件有4個必需的頂層框。他們是

  • JPEG 2000簽字欄
  • 文件類型框中
  • JP2頭框
  • 毗連碼流箱

每個方塊由4個字節的標記和4字節大小的值之前。因此,在MATLAB它應該是這樣的

fname='C:\Users\admin\Documents\MATLAB\SO\Jpeg2k\balloon.jp2'; 
fid = fopen(fname); 
headerMark = uint8('jp2h'); 
matchCnt = 1; 

ch = fread(fid,1,'*uint8'); 
matchCnt = matchCnt+isequal(headerMark(1),ch); 

while matchCnt < 5 && ~feof(fid) 
    ch = fread(fid,1,'*uint8'); 
    matchCnt = matchCnt+isequal(headerMark(matchCnt),ch); 
end 
if matchCnt == 5 
    fseek(fid,ftell(fid)-8,'bof'); 
    sizeBytes = fread(fid,4,'*uint8'); 
    sizeVal = arrayfun(@(x,y) bitshift(x,y,32), uint32(sizeBytes), [3:-1:0]'); 
    sizeVal = bitor(bitor(bitor(sizeVal(1),sizeVal(2)),sizeVal(3)),sizeVal(4)); 
end 
fclose(fid); 

我不知道什麼是你最後的任務(讓頭部大小似乎是一半),但我建議看到JPEG2000,JPEG2000 validator快速入門guide(寫在python)和驗證器overview