写作背景
工作原因,临时需要在内存中解析JPEG2000格式的码流图片,(本来opencv是支持读写jpeg2000格式的图片的,但由于图片是在内存中,无法通过imread函数读取磁盘图片,因此不能使用opencv),由于网上JPEG2000的资料十分少,中间过程也是有点坎坷。为了帮助大家更好的理解JPEG2000图片的码流格式,这里放上自己的笔记。
格式简介
先放上JPEG2000的格式,可以看到图片是由很多的box组成的,每个box代表着一些图片信息,如File Type Box表示文件的类型,Contiguous Codestream Box表示压缩图片内容数据流。下下张图是一个jp2格式的图片的二进制码流形式,接下来是通过这个图片的码流形式进行一个解析,来说明每一个字节所代表的含义。


1. JPEG2000 Signature box
这个box是表明了该文件的格式是JPEG2000协议的图片格式,该box的类型标识为'j', 'P', ' ', ' '四个字符组成,对应的十六进制为0x6A50 2020,box的内容为0x0D0A 870A,这个box的总长度为12个字节,0x0000 000C 6A50 2020 0D0A 870A。
范围:二进制文件中的0 - 11byte位
                                
2. File Type box
该box类型标识为‘ftyp'(0x6674 7970),内容为'jp2 '(0x6A70 3220),长度位12个字节
范围:二进制文件中的12 - 23byte位,后面的24-148位暂时不明白啥意思,应该也是支持的格式吧,不影响读取,但是试验下面的四个字节还是有用的。

                              
                           
3. JP2 Header box (superbox)

3.1 Image Header box
该box紧跟JP2 Header box之后,标识位'ihdr'(0x6968 6472),该box包含了图片的基本尺寸信息,如图像大小、通道数等。
box的内容如下表,紧跟'ihdr'之后的是图像的高度HEIGHT占4个字节、宽度WIDTH占4个字节、通道数NC占2个字节、BPC、C、UnkC、IPR分别占一个字节,共14个字节。
范围:二进制文件中的157 - 178byte位
                       

3.2 Colour Specification box
该box标识位'colr'(0x0x636F 6C72)
范围:二进制文件中的179 - 193byte位

3.3 Resolution box (superbox)


3.4 Contiguous Codestream box
该box之后就是压缩的连续数据流了,box类型标识为 'jp2c' (0x6A70 3263),之后就是FF4F开始的数据流部分,这部分内容较多,分下一篇文章讲解。
               
举例2

1. JPEG2000 Signature box(0 - 11)
这个是必须要有的:00 00 00 0C, 6A 50 20 20, 0D 0A 87 0A
2. File Type box(12 - 23)
00 00 00 14, 66 74 79 70, 6A 70 32 20
3. JP2 Header box (superbox)(24 - 31)
00 00 00 2D, 6A 70 32 68
3.4 Contiguous Codestream box(69 - 76)
00 00 00 00, 6A 70 32 63
 
                   
                   
                   
                   
                             本文详细介绍了如何在内存中解析JPEG2000格式的码流图片,由于opencv无法直接处理内存中的JPEG2000图片,作者分享了从二进制码流解析关键信息的步骤,包括JPEG2000Signaturebox、FileTypebox、JP2Headerbox(含ImageHeaderbox、ColourSpecificationbox、Resolutionbox)和ContiguousCodestreambox等关键box的解析过程和内容解读。
本文详细介绍了如何在内存中解析JPEG2000格式的码流图片,由于opencv无法直接处理内存中的JPEG2000图片,作者分享了从二进制码流解析关键信息的步骤,包括JPEG2000Signaturebox、FileTypebox、JP2Headerbox(含ImageHeaderbox、ColourSpecificationbox、Resolutionbox)和ContiguousCodestreambox等关键box的解析过程和内容解读。
           
       
           
                 
                 
                 
                 
                 
                
               
                 
                 
                 
                 
                
               
                 
                 扫一扫
扫一扫
                     
              
             
                   1871
					1871
					
 被折叠的  条评论
		 为什么被折叠?
被折叠的  条评论
		 为什么被折叠?
		 
		  到【灌水乐园】发言
到【灌水乐园】发言                                
		 
		 
    
   
    
   
             
            


 
            