量化的DCT系数如何在JPEG中序列化?

时间:2018-07-08 10:56:17

标签: serialization compression jpeg image-compression

我已经阅读了数十篇文章,科学论文和玩具实现,其中JPEG压缩的步骤大致如下

  1. 采用8x8 DCT
  2. 除以量化矩阵
  3. 舍入为整数
  4. 游程和霍夫曼

然后,倒数几乎相同。到目前为止,我发现的所有话题都遗漏了数据的大小和相应的序列化。

隐含地假定所有系数都存储为无符号字节。但是,据我了解,DC系数在0-255范围内,而AC系数可以为负数。 AC系数是在±255或±127还是其他范围内?

以紧凑的方式存储这些系数的常用方法是什么?

2 个答案:

答案 0 :(得分:0)

阅读的第一手资料当然是ITU-T T.81标准文件。 看起来第一个Google链接通向付费专区..它位于w3网站上,尽管:https://www.w3.org/Graphics/JPEG/itu-t81.pdf

  1. 获取8位输入样本(0..255)
  2. 减去128(-128..127)
  3. 执行N * N fDCT,其中N = 8
  4. 输出可以具有log2(N)+8位= 11位(-1024..1023)

DC系数存储为差异,因此它们可以有12位。

答案 1 :(得分:0)

编码过程取决于您是顺序扫描还是逐行扫描。编码过程的细节过于复杂,无法在此处找到答案。

我强烈推荐这本书:

https://www.amazon.com/Compressed-Image-File-Formats-JPEG/dp/0201604434/ref=sr_1_2?ie=UTF8&qid=1531091178&sr=8-2&keywords=JPEG&dpID=5168QFRTslL&preST=_SX258_BO1,204,203,200_QL70_&dpSrc=srch

这是我所知道的唯一以纯英文解释JPEG端到端的来源。