写作背景

工作原因,临时需要在内存中解析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)

该box包含了图片的很多基本信息,如通道数、颜色空间、分辨率等。
box类型标识为‘jp2h'(0x6A70 3268),该box是一个superbox,意思是该Box是一个复合box,内部包含了若干其他的box。
范围:二进制文件中的149 - 156byte位

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)

该box又是一个superbox,包含了两个子box,标识位'res ' (0x7265 7320)
范围:二进制文件中的194 - 201byte位
3.3.1 Capture Resolution box
该box标识位'resc' (0x7265 7363)
范围:二进制文件中的202 - 219byte位

之后的220 - 325byte位都是一些uuid之类的东西,不影响读取
3.3.2 Default Display Resolution box
该box没有出现

3.4 Contiguous Codestream box

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

范围:二进制文件中的326 - 333byte位

举例2

这个例子更加精简一点,上面那个是用PhotoShop生成的,所以前面的box信息比较多。

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.1 Image Header box(32 - 53)
00 00 00 16, 69 68 64 72, 00 00 08 00, 00 00 08 00, 00 01, 07, 07, 01, 00
其中HEIGHT = 00 00 08 00,WIDTH =  00 00 08 00,通道数 = 00 01,位深度 = 2^(7+1),剩下的保持
3.2 Colour Specification box (54 - 68)
00 00 00 0F, 63 6F 6C 72, 01, 00, 00, 00 00 00 11

3.4 Contiguous Codestream box(69 - 76)

00 00 00 00, 6A 70 32 63

JPEG2000帧格式详解(一)相关推荐

  1. LoRaWAN协议-MAC帧格式详解

    目录 1 前言 2 帧格式整体框图 3 MAC帧格式组成 3.1 分类 3.2 组成 4 MHDR(MAC Header) 4.1 帧类型FType 4.2 协议号Major 5 MIC消息校验码 5 ...

  2. 802.11n协议帧格式详解

    一. 802.11n扩展了802.11mac帧,增加了4个字节的HT Control域,其余域的意义与802.11主标准相同. 各个字段含义如下: TRQ(Sounding Request) :探测请 ...

  3. jpeg2000算法详解(1)

    JPEG2000标准主要由12部分组成,PART 1为其核心部分,其它每部分在该核心部分的基础上增加一些额外的特性和功能.每部分的内容和特征如下所示: PART 1:JPEG2000核心编码系统,标准 ...

  4. [计算机通信网络]以太网的帧格式详解

    目录 一.前言 二.以太网的帧格式 Preamble(前导码): SFD(帧开始定界符): Destination Address,Source Address: Type/Len(类型/长度): D ...

  5. canopen sdo帧格式详解

    参考地址:https://www.pianshen.com/article/4379694213/

  6. WebSocket 详解

    WebSocket 出现前 构建网络应用的过程中,我们经常需要与服务器进行持续的通讯以保持双方信息的同步.通常这种持久通讯在不刷新页面的情况下进行,消耗一定的内存资源常驻后台,并且对于用户不可见.在 ...

  7. WebSocket 详解 1

    更多文章,请在Github blog查看 WebSocket 出现前 构建网络应用的过程中,我们经常需要与服务器进行持续的通讯以保持双方信息的同步.通常这种持久通讯在不刷新页面的情况下进行,消耗一定的 ...

  8. 和tp数据库_CAN / CAN FD传输层(TP)详解

    本文分享CAN / CAN FD在TP层传输规则详解,因为是从个人角度解读协议,有不精准之处,希望指出. CAN/CAN FD总线TP层映射到OSI计算机七层模型是在第三层和第四层: 对应CAN Fr ...

  9. Open vSwitch VLAN相关字段详解(dl_vlan、dl_vlan_pcp、vlan_vid、vlan_pcp、vlan_tci)

    文章目录 字段概览 字段详解 vlan_tci vlan_vid vlan_pcp dl_vlan/dl_vlan_pcp 字段概览 字段名 长度 格式 Masking 前置项 访问权限 OpenFl ...

  10. 视频直播技术详解(8)直播云 SDK 性能测试模型

    <视频直播技术详解>系列之八:直播云 SDK 性能测试模型 牛小七2016年10月12日发布在 视频直播技术详解 七牛云于 6 月底发布了一个针对视频直播的实时流网络 LiveNet 和完 ...

最新文章

  1. python中字典格式_如何在Python中使用带有字典的格式函数和整数键
  2. 【湖南】2021年下半年软考报考时间及通知
  3. Qt中的测试 枚举与 QFlags详解
  4. ajax的data传参的两种方式
  5. 后台返回数据打印是[object object]的,报错:SyntaxError: JSON.parse: expected property name or ‘}‘ at line 1 column
  6. pytorch构造可迭代的DataLoader,动态流式读取数据源,不担心内存炸裂(pytorch Data学习三)
  7. 时间的正则表达式验证
  8. 代码行数、查杀 bug 数笑笑就好,技术团队的 KPI 到底怎么定?
  9. 怎样使用Google chrome播放 .swf 文件
  10. 如何更改 think-cell 图表的默认颜色?
  11. Mujoco xml建模
  12. 新能源汽车营销业务入门学习
  13. 计算机类中文核心期刊简介
  14. heka 配置 一个go语言实现轻量级logstash 干掉ELK
  15. spj查询零件、工程、供应商表
  16. 【C++】智力题总结
  17. 黑龙江省计算机一级考试科目,黑龙江省2021年3月全国计算机等级考试时间和科目调整...
  18. 超炫计算机课件ppt,5分钟打造高级炫酷的PPT系列第一季-斧子演示视频教程
  19. git基础(7)--打标签
  20. 【难忘今宵】第一阶段day1打简单代码

热门文章

  1. 对闰年和平年计算均值
  2. gan的几种变体_推荐系统系列第6部分,用于协作过滤的自动编码器的6种变体
  3. 蹩脚的Access分页语句
  4. 启动docker 服务时 虚拟机端口转发 外部无法访问
  5. php苹果内购验证,苹果内购支付校验
  6. 80c51流水灯汇编语言,利用80c51单片机制作流水灯(汇编语言)
  7. 可搜索加密简要介绍与相关概念
  8. 乒乓球比赛赛程_这家律所再次摘得业余乒乓球赛事冠军,为何结缘乒乓?
  9. 重新开始学Java——java中的标识符(biao,zhi,fu)、关键字和代码规范
  10. IPC技术与评分卡技术区别