2017-08-10 85 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