“八法则”是什么?

13

阅读了这篇关于JPEG演变的文档我在该文档的第7.3节中发现了“The law of the eight”。

尽管从1到16的其他块大小已经通过SmartScale扩展引入,超出了最初JPEG标准中的固定大小8,但事实仍然是8的块大小将是默认值,并且所有其他大小的DCT都是根据标准8x8 DCT进行缩放的。

八的法则”解释了为什么8是DCT大小的正确默认和参考值。

我的问题是:

  • 历史上是否进行了一项研究,评估了样本中的众多图像,以得出结论:使用DCT进行压缩技术所需的冗余数据足以包含在8x8的图像块中?对于像8M(4Kx4K)这样非常大的图像大小, 是否仍然有效?

  • 限制宏块大小为8x8的另一个历史原因是较大宏块的计算量过高。但是,随着现代超标量体系结构(例如CUDA)的出现,这种限制不再适用。

早期有类似的问题 - 1, 23。但没有一个考虑这个神秘的基本"八法则"的任何细节/链接/参考资料。

1. 非常感谢提供原始研究的引用/摘录/详细信息,因为我想使用非常大的图像数据集重复它,以测试8x8宏块是否最优。

2. 如果最近进行了类似的研究,则欢迎提供参考。

3. 我确实了解到SmartScale有争议的。在没有明显潜在利益1的情况下,最多只能与jpeg标准的其他向后兼容扩展相媲美2。我的目标是了解选择8x8作为DCT块大小(在jpeg图像压缩标准中)背后的原因是否仍然相关,因此我需要知道八法则是什么。


询问它是否仍然相关显然是一个观点问题。 - user85109
@woodchips 我并不是想问是否有人认为这个问题相关。相反,我对学习“八法则”很感兴趣,以便自己决定它是否仍然相关。我只是提到了我提出这个问题的动机。尽管如此,我已经修改了脚注。希望这个问题不再需要关闭投票。 - TheCodeArtist
希望没有人会进行负面评价(我希望)。 - TheCodeArtist
有趣的问题,希望有人能回答它 ;) 投票保持开放。 - Antti Haapala -- Слава Україні
1
我理解为“JPEG从8x8 DCT开始,所有内容都是以8x8为基础定义的,任何其他块大小必须可扩展到8x8”。也就是说,第7.3节就是“八法则”。但是呢。 - cHao
1个回答

2
我的理解是,“八的法则”只是一种幽默的说法,指出基准JPEG算法规定8x8是其唯一的块大小。
换句话说,“八的法则”通过历史视角来解释为什么“所有其他大小的DCT都是以8x8 DCT为参考进行缩放”,即原始标准和实际实现中没有支持任何其他大小。
下一个问题是:为什么是八?(请注意,尽管这是一个有效的问题,但这不是本次讨论的主题,即使在历史上选择了另一个值,例如“十之法则”或“三十二之法则”,本文仍然相关。)答案是:因为问题的计算复杂度随着O(N ^ 2)增长(除非使用FCT类算法,它们的增长速度较慢为O(N log N),但在嵌入式平台的原始硬件上更难实现,因此应用范围有限),因此更大的块大小很快变得不切实际。这就是为什么选择8x8,因为它足够小,在广泛的平台上实用,但足够大,可以为不同频率的量化级别提供不太粗糙的控制。
由于标准显然解决了问题,因此很快就出现了整个生态系统,包括仅支持8x8作为其唯一支持块大小的实现。一旦生态系统建立起来,就不可能改变块大小而不破坏现有的实现。由于这是非常不可取的,所以对DCT /量化参数进行的任何微调都必须与仅支持8x8解码器兼容。我相信这个考虑必须是“八的法则”所指的。
虽然我不是专家,但我不认为更大的块大小会有所帮助。首先,一个块中的值的动态范围平均会增加,需要更多的位来表示它们。其次,从“全部”(由块表示)到“像素”的频率的相对量化必须保持不变(毕竟这是由人类感知偏差决定的),量化将变得更加平滑,这就是全部,而对于相同的压缩水平,潜在的质量提高可能是无法察觉的。

@Shadow Wizard,修改为“我的理解是”——这样更好吗?在我使用这个网站的4.5年中,我从未知道StackOverflow不允许非权威性答案,我错了吗?如果是这样,那么除了正确答案之外的所有答案都必须是评论,对吗? - Andriy Volkov
没有什么是“不允许”的,只要有更多的内容,最好将其作为注释。 - Shadow The Spring Wizard
但我相信这是正确的答案——事实上,答案简洁并不意味着它更适合作为评论。评论用于元信息(讨论问题和答案),而不是“简短答案”、“未经验证的答案”或“令人失望的答案”。 - Andriy Volkov
到目前为止,似乎普遍认为没有特定的研究导致了“八法则”。然而,正如我在问题中最初提到的那样,我提出这个问题的动机是要在巨大图像上尝试更大的块大小。在缺乏先前用于确定8x8时质量/压缩足够公正的权威方法的情况下,可以使用什么作为定性度量来评估使用较大宏块生成的图像(与使用当前8x8实现生成的图像相比)? - TheCodeArtist
你的libjpeg-turbo.org链接很好地解释了他们的方法,他们尝试使用较小的块大小,但同样的方法也可以用来比较更大的大小。在这里,我在我的回答中添加了另一个段落,解释为什么我认为更大的块大小不会带来太多改进。 - Andriy Volkov
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接