为什么渐进式 JPEG 图像的标题中有最佳霍夫曼表?

Why is there a optimal Huffman table in the header of a progressive JPEG image?

提问人:noh 提问时间:9/18/2023 最后编辑:noh 更新时间:9/19/2023 访问量:41

问:

使用 JPEG 逐行扫描模式压缩的图像可以进行多次扫描。 据我了解,每次扫描都可以有自己的霍夫曼表,因为 JPEG 标准中的默认霍夫曼表不适合,例如用于最后一次扫描,通常只携带 LSB。

当我在十六进制编辑器中打开渐进式 JPEG 并分析 JPEG 段时,我仍然看到一个 DHT 段,其中包含一个或两个不是标准霍夫曼表的。

我的问题是,这张桌子是做什么用的?由于每次扫描都可以有不同的霍夫曼表,因此我将无法使用此表来解码数据。 此外,每次扫描的霍夫曼表显然都可以在图像数据中找到。解码器如何找到它们?JPEG 通常使用带有长度注释的 FF 标记。 渐进式图像中的霍夫曼扫描表不是这种情况吗? 另外,我想知道为每个扫描单独使用霍夫曼表是否有效。 我可以想象一些扫描会有类似的表格。

编辑:

当我在十六进制编辑器中打开渐进式 JPEG 时,[...]我仍然看到一个 DHT 段,包含一两个,而不是标准的霍夫曼表。[...]这张表是做什么用的?

存储在 JPEG 文件的第一个 DHT 段中的表包含用于第一次扫描的表。它通常包含所有通道的直流系数。因此,彩色图像的首次扫描通常有两个表格(DC亮度、DC色度)。 在 DHT 段之后,接下来是 SOS 段,其中包含第一次扫描中包含的图像数据。图像的其余部分是 DHT、SOS 片段的交替,然后是 EOI 标记。

JPEG 通常使用带有长度注释的 FF 标记。渐进式图像中的霍夫曼扫描表不是这种情况吗?

是的,渐进式图像也是如此。但是,许多使用模式的十六进制编辑器会跳过第一个 SOS 标记之后的标记。 对于基线映像,每个文件只有一个 SOS 段。

我还没有发现为每个扫描单独存储一个霍夫曼表是否有效。

jpeg 霍夫曼代码 libjpeg

评论


答: 暂无答案