如何在 JPEG 中序列化量化 DCT 系数?
How are quantized DCT coeffiecients serialised in JPEG?
我看了几十篇文章、科学论文和玩具实现,JPEG压缩的步骤大致如下
- 采用 8x8 DCT
- 除以量化矩阵
- 四舍五入为整数
- 运行-长度 & Hufmann
然后反过来也差不多。到目前为止,我发现的关于该主题的所有内容都遗漏了数据量级和相应的序列化。
似乎隐含地假设所有系数都存储为无符号字节。但是,据我了解,DC系数在0-255范围内,而AC系数可以为负。 AC 系数是否在 ±255、±127 或其他范围内?
以紧凑的方式存储这些系数的常用方法是什么?
阅读的第一手资料当然是ITU-T T.81标准文档。
看起来第一个 Google link 通向付费专区.. 它在 w3 站点上,但是:https://www.w3.org/Graphics/JPEG/itu-t81.pdf
- 取 8 位输入样本 (0..255)
- 减去 128 (-128..127)
- 执行 N*N fDCT,其中 N=8
- 输出可以有 log2(N)+8 位 = 11 位 (-1024..1023)
DC系数存储为差值,因此它们可以有12位。
编码过程取决于您是顺序扫描还是逐行扫描。编码过程的细节太复杂了,不适合在这里回答。
强烈推荐这本书:
据我所知,这是唯一用通俗易懂的语言对 JPEG 进行端到端解释的来源。
我看了几十篇文章、科学论文和玩具实现,JPEG压缩的步骤大致如下
- 采用 8x8 DCT
- 除以量化矩阵
- 四舍五入为整数
- 运行-长度 & Hufmann
然后反过来也差不多。到目前为止,我发现的关于该主题的所有内容都遗漏了数据量级和相应的序列化。
似乎隐含地假设所有系数都存储为无符号字节。但是,据我了解,DC系数在0-255范围内,而AC系数可以为负。 AC 系数是否在 ±255、±127 或其他范围内?
以紧凑的方式存储这些系数的常用方法是什么?
阅读的第一手资料当然是ITU-T T.81标准文档。 看起来第一个 Google link 通向付费专区.. 它在 w3 站点上,但是:https://www.w3.org/Graphics/JPEG/itu-t81.pdf
- 取 8 位输入样本 (0..255)
- 减去 128 (-128..127)
- 执行 N*N fDCT,其中 N=8
- 输出可以有 log2(N)+8 位 = 11 位 (-1024..1023)
DC系数存储为差值,因此它们可以有12位。
编码过程取决于您是顺序扫描还是逐行扫描。编码过程的细节太复杂了,不适合在这里回答。
强烈推荐这本书:
据我所知,这是唯一用通俗易懂的语言对 JPEG 进行端到端解释的来源。