JPEG 操作量化双浸

JPEG Manipulation Quantization Double Dipping

在使用 JPEG 图像属性(分辨率、采样等)并导出最终产品时,您是否总是双倍浸入 'jpegification'?

根据我的理解,当您将 JPEG 图像加载到图像处理工具(GIMP、Photoshop、ImageMagick 等)时,它是这样的:

  1. 导入 JPEG
  2. 将 JPEG 解码为更易于使用的格式(位图)
  3. 操纵像素
  4. 导出回 JPEG(再次重做 JPEG 量化,即使您复制原始 JPEG 参数也是两次)

我说得对吗?

谢谢!

我认为这取决于你在阅读图像后做了什么......但我认为你可以通过使用 ImageMagick[=17] 中的这个函数来检查自己是否有任何特定的操作以及它是否具有 re-quantised =]

identify -format "%#\n" image.jpg
bb1f099c2e597fdd2e7ab3d273e52ffde7229b9061154c970d23b171df3aca89

它计算像素的校验和(或 IM 称之为 signature)——忽略 header 信息。

所以,如果我像这样创建一个随机噪声文件

convert -size 1000x1000 xc:gray +noise gaussian image.jpg

并得到数据的校验和,像这样

identify -format "%#\n" image.jpg
84474ba583dbc224d9c1f3e9d27517e11448fcdc167d8d6a1a9340472d40a714

然后我可以使用 jhead 来更改 header 中的注释,像这样

jhead -cl "Comment" image.jpg
Modified: image.jpg

但校验和保持不变,所以我会说 jhead 没有 re-quantised 数据。

我想我的意思是,您关于图像总是 re-quantised 的说法并非 100% 准确,这取决于您实际对图像 的操作,并且此外,我正在展示一种方法,您可以轻松地自行检查是否有任何处理实际上导致了重新量化。喂!

图像中任何发生变化的区域无论如何都必须再次量化。

理论上,应用程序可以保留量化值,然后再次使用它们。然而,

  1. 那将需要 3 倍的内存。量化值需要16位来存储(+8位用于像素值)。

  2. 如果更改采样表或量化表,则必须重新计算量化值。

在极少数情况下,保留量化的 DCT 值是有意义的。