JPEG2000帧格式详解(一)
写作背景
工作原因,临时需要在内存中解析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帧格式详解(一)相关推荐
- LoRaWAN协议-MAC帧格式详解
目录 1 前言 2 帧格式整体框图 3 MAC帧格式组成 3.1 分类 3.2 组成 4 MHDR(MAC Header) 4.1 帧类型FType 4.2 协议号Major 5 MIC消息校验码 5 ...
- 802.11n协议帧格式详解
一. 802.11n扩展了802.11mac帧,增加了4个字节的HT Control域,其余域的意义与802.11主标准相同. 各个字段含义如下: TRQ(Sounding Request) :探测请 ...
- jpeg2000算法详解(1)
JPEG2000标准主要由12部分组成,PART 1为其核心部分,其它每部分在该核心部分的基础上增加一些额外的特性和功能.每部分的内容和特征如下所示: PART 1:JPEG2000核心编码系统,标准 ...
- [计算机通信网络]以太网的帧格式详解
目录 一.前言 二.以太网的帧格式 Preamble(前导码): SFD(帧开始定界符): Destination Address,Source Address: Type/Len(类型/长度): D ...
- canopen sdo帧格式详解
参考地址:https://www.pianshen.com/article/4379694213/
- WebSocket 详解
WebSocket 出现前 构建网络应用的过程中,我们经常需要与服务器进行持续的通讯以保持双方信息的同步.通常这种持久通讯在不刷新页面的情况下进行,消耗一定的内存资源常驻后台,并且对于用户不可见.在 ...
- WebSocket 详解 1
更多文章,请在Github blog查看 WebSocket 出现前 构建网络应用的过程中,我们经常需要与服务器进行持续的通讯以保持双方信息的同步.通常这种持久通讯在不刷新页面的情况下进行,消耗一定的 ...
- 和tp数据库_CAN / CAN FD传输层(TP)详解
本文分享CAN / CAN FD在TP层传输规则详解,因为是从个人角度解读协议,有不精准之处,希望指出. CAN/CAN FD总线TP层映射到OSI计算机七层模型是在第三层和第四层: 对应CAN Fr ...
- 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 ...
- 视频直播技术详解(8)直播云 SDK 性能测试模型
<视频直播技术详解>系列之八:直播云 SDK 性能测试模型 牛小七2016年10月12日发布在 视频直播技术详解 七牛云于 6 月底发布了一个针对视频直播的实时流网络 LiveNet 和完 ...
最新文章
- python中字典格式_如何在Python中使用带有字典的格式函数和整数键
- 【湖南】2021年下半年软考报考时间及通知
- Qt中的测试 枚举与 QFlags详解
- ajax的data传参的两种方式
- 后台返回数据打印是[object object]的,报错:SyntaxError: JSON.parse: expected property name or ‘}‘ at line 1 column
- pytorch构造可迭代的DataLoader,动态流式读取数据源,不担心内存炸裂(pytorch Data学习三)
- 时间的正则表达式验证
- 代码行数、查杀 bug 数笑笑就好,技术团队的 KPI 到底怎么定?
- 怎样使用Google chrome播放 .swf 文件
- 如何更改 think-cell 图表的默认颜色?
- Mujoco xml建模
- 新能源汽车营销业务入门学习
- 计算机类中文核心期刊简介
- heka 配置 一个go语言实现轻量级logstash 干掉ELK
- spj查询零件、工程、供应商表
- 【C++】智力题总结
- 黑龙江省计算机一级考试科目,黑龙江省2021年3月全国计算机等级考试时间和科目调整...
- 超炫计算机课件ppt,5分钟打造高级炫酷的PPT系列第一季-斧子演示视频教程
- git基础(7)--打标签
- 【难忘今宵】第一阶段day1打简单代码