jpg压缩和mp3压缩的区别

信息处理 声音的 压缩 图像压缩 JPEG mp3
2022-01-10 04:59:49

我对 jpg 压缩的理解是,如果重复执行,由于处理相邻像素的方式,任何图像最终都会缩小为单一的纯色。然而,几年前我被告知 mp3 没有这个问题,一首 192kbps 的歌曲无论在相同设置下压缩多少次,都会保持相同的音频质量,文件大小变化很小。

这是为什么?差异化因素是什么?

谢谢

2个回答

实际上,这有点相反。如果您以相同的质量级别重用相同的 JPEG 编码器(没有任何平滑步骤作为内置的预处理)和忠实地解压缩图像的解码器,我希望图像质量不会一代代下降。这是因为量化(有损部分)在第二次压缩期间以相同的方式完成。你可以想象这样的标量量化:给定某个值 v 和一个量化步长 s,量化后的值是 round(v/s)*s。例子:

v = 6.3
s = 2
q = round(v/s)*s = 6

因此,在这种情况下,第一次“压缩”包含 0.3 的误差。但是,如果您第二次将其输入编码器

v = 6
s = 2
q = round(v/s)*s = 6

它不再改变。它保持为 6。如果您将质量级别从一种压缩更改为下一种压缩,您也会更改量化器步长 s。这会增加一个新的舍入误差。

请记住,这只是一个简单的示例。JPEG 量化可能包括一个“死区量化器”,它将阈值更改为接近 0。例如,如果 |v|<0.7,您可能希望将任何值 v 舍入为零。像这样的东西可能会给你一个更高的每比特质量比,因为零可以更紧凑地表示。但这不应该改变我上面描述的内容。

对于 MP3,“量化步长”是动态计算的,取决于实际信号。这就是“心理声学模型”的用途。它分析音频数据,并告诉我们在没有注意到差异的情况下,我们可以在多大程度上量化信号的某些部分。但是这种量化会增加“量化噪声”,这可能会使心理声学模型在第二次压缩期间计算其他量化步骤,即使在您告诉编码器使用相同的“质量级别”的情况下也是如此。如果第二次压缩使用不同的量化步骤,您将引入新的舍入误差。

事实上,类似的事情以前已经做过了。一些艺术家做了这样一个实验,他一遍又一遍地压缩一些音频文件(比如 1000 次),结果与原始文件几乎没有关系。不幸的是,我不记得任何名字或参考资料。

还有其他问题使有损音频压缩更加复杂。例如,解码器可能会添加或删除一些前导样本(编码器+解码器延迟不匹配),这将使编码器在第二遍的不同块上工作。这也会增加新的舍入误差。但是,如果我没记错的话,几年前Hydrogenaudio人群进行的一些实验表明,这种“块位置不匹配”对生成损失是有益的。因此,虽然仍然存在一代损失,但损失比匹配块位置更令人讨厌。

我认为重复的 jpg 压缩不会减少到单一的平面颜色。我尝试压缩 - 解压缩图像 3 次。(使用 GIMP 2.8.2,质量级别为“10%”,渐进式、exif、缩略图和 xmp 全部关闭,4:2:2 垂直二次采样和整数 DCT。)所有三个图像都是相同的(Linuxcmp在文件之间的所有内容。)

jpg 和 mp3 具有相似的理念:给定一些人类感知模型,估计人类对输入中每个特征的感知程度。如果无法感知(根据模型),则将其排除在输出之外。我对 mp3 了解不多,但是在 jpg 中,一旦你删除了某些特征并保留了其他特征,文件就不再可压缩,除非你使用不同的感知模型进行下一轮压缩。

在 jpg 中,人类感知模型相对简单:(1)我们看到的强度渐变比我们看到的颜色变化更详细;(2)我们看到的中频渐变比我们看到的高频渐变更详细。

Jpg 通过将图片从 sRGB 转换为 YCbCr 来利用(1)(通常)。然后 Cb 和 Cr 平面的分辨率降低(通常在每个方向上降低 2 倍,因此您丢弃 3/4 的信息。)一旦分辨率损失完成,一旦它是可逆的。

Jpg 通过将图片的每个 8x8 块转换为频域,然后量化高频(如@sellibitze 的帖子中所述)来利用(2)。再次,一旦量化完成,它是可逆的。