我知道JPEG压缩是有损的。我有两个问题:
给定一个操作 T:
1. 获取 JPEG-80 图像
2. 将其解码为字节缓冲区
3. 将给定的字节缓冲区编码为 JPEG-80
就视觉质量而言,T 是幂等运算吗?或者当我重复 T 时,图像的质量会持续下降吗?JPEG-XR 编解码器也是如此吗?
谢谢!
编辑:由于存在相互矛盾的答案,如果您能提供参考,那就太好了!
这不能保证,但它可能会发生。尤其是如果你重复编码 -> 解码 -> 编码 -> 解码过程足够多次,它最终会固定在一个固定点上并停止进一步失去质量(只要你坚持相同的质量和相同的编码器)。
JPEG 编码分几个步骤完成:
并且解码是向后的相同过程。
步骤 1 和 2 存在舍入误差(尤其是在使用整数数学的速度优化编码器中),因此对于幂等重新编码,您需要幸运地使编码和解码舍入误差很小或相互抵消。
步骤 3 是主要的有损步骤,实际上是幂等的。如果您的解码像素转换为足够相似的 DCT,它将再次量化为相同的数据!
JPEG XR 也使用 YUV,因此它可能会遇到一些舍入错误,但 OTOH 而不是 DCT,它使用不同的变换,可以在没有舍入错误的情况下计算,所以它应该比其他格式更容易往返 JPEG-XR。
根据定义,有损操作通过以一种(理想情况下)最终用户不会注意到的方式简化表示来丢弃数据。但是,编码器没有确定哪些像素重要哪些不重要的神奇方法,因此它对所有像素进行平等编码,即使它们是伪像!
换句话说,编码器会将有损压缩的图像视为无损图像。有损图像将被进一步简化,丢弃过程中的额外数据,因为就编码器所知,用户打算表示伪影。
以下是 JPEG 生成损失的一些示例: