跨浏览器图像解压缩的一致性如何?

时间:2021-01-29 20:18:11

标签: image-processing

我一直认为 jpg 压缩图像中的失真是由压缩过程本身引入的,并且 de压缩相同的源图像会导致产生相同的像素,而不管解压缩如何正在使用的库。我最近在这一点上受到了挑战。我做了一些测试,没有观察到变化,但我的测试绝不是详尽无遗的。我对这个主题的研究产生了超出我想象的文章,所以我正在联系专家。如果输入相同的输入 jpg,两个不同的解压缩器是否可能生成不同的像素数据?

2 个答案:

答案 0 :(得分:3)

差异的一个可能原因是由于优化或其他原因使用了不同的算法。这会导致不同的截断错误和错误累积。

我永远不会打赌所有解码器都解码相同,像素一个像素。毕竟JPEG是有损的,所以解压出来的图片和原图还是有区别的,再现性问题不用担心。

差异的第二个来源可能是......错误或实施中的不准确之处。有些很容易被忽视。

事实上,我希望两个不同的解码器在大多数情况下返回略有不同的图像!无论如何,许多解码器都基于相同的开源编解码器,可能需要一段时间才能遇到不同的实现。

答案 1 :(得分:-1)

  1. 理论上。

简答:没有。

长答案:

甚至根据维基百科 (https://en.wikipedia.org/wiki/JPEG) 的说法,JPEG 是“连续色调静止图像的数字压缩和编码”的标准。它在人类语言中的意思是,标准化后,压缩和解压的结果应该是确定性的。像素数据方面的确定性。然而,这是理论,这只是他们应该做的。

  1. 在实践中。

简短回答:理论上是的。

长答案:

首先,该标准定义了一种名为 DCT 的 jpeg 格式的压缩方法。然而这是标准。压缩引擎有多种实现方式和变体。尽管如此,他们还是会从一个 jpeg 文件中生成相同的像素数据。但是,由于实现差异和/或错误,生成的像素数据可能会有所不同。

但我们在这里讨论的是浏览器中显示的图像。浏览器有多种渲染引擎。没有标准定义浏览器的渲染引擎应该如何渲染 jpeg 图像。如果他们被迫调整图像的大小,这可能是从不同网络浏览器中显示的同一图像中获得不同最终像素的可能原因。

这个观点既不是对该主题的广泛研究也不是实验的结果,所以如果我哪里有错,请纠正我。