在将原始图像编码为 jpeg 图像时,8x8 数据单元被电平移动,使用 2-D DCT 进行转换,量化和霍夫曼编码。
我首先执行了行 DCT,然后执行了列 DCT,并将结果四舍五入到最接近的整数。我将此块发送到量化模块。在量化时,我使用了以下 Q 表。这些表是 IJG 推荐的品质因数 99。
亮度表1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1
1 1 1
1 1 1 2 2 1
1 1 1 1 1 2 2 2
1 1 1 1 2 2 2 2
1 1 2 2 2 2 2 2
1 2 2 2 2 2 2 2
1 1 1 1 2 2 2 2
1 1 1 1 2 2 2 2
1 1 1 2 2 2 2 2
1 1 2 2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2
2 2 2 2
2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2
在量化期间,除以“2”时,我将结果从零四舍五入。示例:11/2 = 6。因此,在解码时的去量化过程中,每个奇数都会增加 +1 的误差。
在另一个设置中,我改变了我的舍入技术。在这里,我将结果四舍五入为零。示例:11/2 = 5。因此,在解码时的去量化过程中,每个奇数都会添加一个 -1 的误差。
在第二种情况下,我得到的文件大小非常小(对于 768x512 图像,文件大小减少了近 100 kb)和更多的 PSNR。我可以通过说所有被 2 量化时为“1”的 AC 系数现在将变为 0 而不是 1 来解释较小的文件大小。因此 RLE 使文件大小更小。但我无法解释为什么编码图像质量会提高。它增加了 2-3 分贝,并且发生在我测试的所有图像中。
我的论点是因为 DCT 基本上是 A * DCTmatrix 两边的相等误差应该产生相等的损失。但这里不是这种情况。