据我所读:
类似于AC系数,
基本上我的问题是,在这两种情况下,为什么我们为系数存储未编码的未压缩原始位,但幅度类别信息是霍夫曼编码的?为什么?这毫无意义。
答案 0 :(得分:2)
这是另一种看待它的方式。压缩可变长度的位值时,需要对位数和位本身进行编码。系数长度具有相对小的值范围,而系数具有宽范围的值。
如果你对Huffman编码系数值,代码长度可能非常大,表格难以管理。
JPEG然后Huffman编码系数的长度部分而不是系数本身。在此阶段,有一半数据被压缩。
答案 1 :(得分:1)
在这些情况下存储原始位是有意义的。
当您尝试压缩的数据足够接近'随机' (平坦/均匀的概率分布),然后熵编码不会给你很多编码增益。对于诸如霍夫曼编码器的简单熵编码方法尤其如此。在这种情况下,跳过熵编码将为您提供类似的压缩比,并将减少时间复杂度。
答案 2 :(得分:0)
我的观察方式是将DC差异量分类为这些“桶”,将这些值拆分为一个字节,该字节将始终压缩为最多4位(DC Huffman编码表最多编码12个可能的值),然后是由最多11位的字符串组成,其长度具有均匀的概率分布。
另一种选择是直接对完整的DC系数差使用霍夫曼编码。如果这些值不太可能重复,那么这样做会为每个代码产生不同的霍夫曼代码,不会产生太大的压缩增益。
我的猜测是,编写此规范的人们对某些图像数据集进行了实验测试,并得出12个幅度类别的压缩效果足够好。他们可能还测试了您所说的与数据格式无关的内容,并得出结论,他们的方法可以更好地压缩图像。到目前为止,我还没有阅读过支持该规范的论文,但是也许可以在此处找到该实验数据。
注意:当使用12位样本精度时,将有16个量级类别,但使用霍夫曼编码最多仍可以将其编码为4位。