【问题标题】:JPEG file quantization table definitionJPEG文件量化表定义
【发布时间】:2012-02-14 11:04:01
【问题描述】:

当我使用 Photoshop 另存为功能并选择 jpeg 文件格式时,我得到以下窗口:

如您所见,我选择Baseline ("Standard") 格式和最高画质。当我在十六进制编辑器中打开这张图片时,我看到了几个 FF DB 标记(这是量化表的开始)。还没有问题,但让我们看下一张图片:

如上图所示,地址行BDA 开始FFDB 标记。前两个字节是 00 84,这意味着这个标记包含 132 个字节的数据。做一些数学运算,我们可以得出结论,这个标记定义了两个量化表。第一个表的值为:0C 08 08 08 09 等...

在同一个文件中,还有一个 FFDB 标记,从 2885 地址行开始,如图所示:

同样,前两个字节的值是 00 84,这意味着 132 个字节的数据。但是这一次,第一个量化表的值是:01 01 01 etc...

如何知道我应该使用哪个 FF DB 标记,以及为什么文件中有多个 FFDB 标记?

【问题讨论】:

  • 先生。 M - 对于此类问题,您可以直接给我发电子邮件 :)

标签: compression jpeg quantization


【解决方案1】:

没有看到整个文件,很难确定,但看起来您的第一个量化表是针对以较低质量压缩的嵌入式缩略图。第二个量化表用于主图像,其值为 01,01,01,...,因为您选择了最高质量,因此对系数值进行了尽可能少的量化。

【讨论】:

  • 哇,谢谢!现在我知道一个 JPEG 文件中可以有多个 QT-s。但是 - 1个问题:我可以依赖字节序列0xFFDB(或者,更确切地说:0xFFDB0043 用于单个 QT,0xFFDB0048 用于两个 QT-s)总是跟随一些 QT,还是我们需要找到 QT 的更好方法?
  • @TomaszGandor JPEG 数据的排列方式是,任何以 0xFF 开头(而不是 0x00)的字节序列都是一个标记,所以是的,0xFFDB 始终是一个量化表。接下来的 2 个字节是大端长度。由于 QT 必须包含 64 个值,因此 0x43 代表 1 个表,0x84 代表 2 个。
  • 请注意,“真实”量化表不是直接在长度字段之后开始,而是在 1 个字节之后开始。第二个表也有 Pq&Tq 1 前置字节。请参阅w3.org/Graphics/JPEG/itu-t81.pdf (B.2.4.1)。
猜你喜欢
  • 1970-01-01
  • 2013-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-16
  • 2011-08-03
相关资源
最近更新 更多