【问题标题】:Is there a quality, file-size, or other benefit to JPEG sizes being multiples of 8px or 16px?JPEG 大小为 8px 或 16px 的倍数是否有质量、文件大小或其他好处?
【发布时间】:2010-09-09 15:32:37
【问题描述】:

JPEG 压缩编码过程将给定的图像分割成 8x8 像素的块,在未来的有损和无损压缩中使用这些块。 [source]

还提到,如果图像是多个 1MCU 块(定义为最小编码单元,“通常在两个方向上为 16 个像素”),则可以对 JPEG 进行无损更改。 [source]

我正在处理产品图片,并且想知道在我的最终图片尺寸中使用 16 的倍数(例如,使用尺寸为 480 像素 x 360 像素的图片)与非- 16 的倍数(例如 484x362)。在此示例中,我对最终图像的进一步更改、编辑或重新压缩不感兴趣。

为了更接近一个我知道必须有很大普遍性的具体答案:给定一张 64k 的 480x360 图像,并在 Photoshop 中以最高质量保存[example]

  • 我可以预计 484x362 的图像会出现任何质量损失
  • 我可以期望增加多少文件大小(在本例中,额外的空间是白色像素)
  • 大于 8 像素的网格还有其他缺点吗?

我知道使用该特定示例是任意的,但它仍然会有所帮助(对于我和可能任何其他考虑图像大小的人)了解我在打破非 8px 网格时要处理的妥协程度.

这里的关键问题是我曾经争论过 8 像素可分割的图像是否比不能被 8 像素整除的图像质量更高。

【问题讨论】:

    标签: image compression jpeg lossy-compression


    【解决方案1】:

    8 像素是截止值。原因是 JPEG 图像只是一个 8x8 DCT 块的数组;如果图像分辨率在两个方向上都不是 mod8,则编码器必须将两侧填充到下一个 mod8 分辨率。这在实践中并不是很昂贵。更糟糕的是图像具有不位于块边界上的锐利黑线(例如带有信箱的图像)的情况。这在视频编码中尤其成问题。造成这个问题的原因是锐线的频率变换是系数的高斯分布——导致要编码的位数非常多。

    对于那些好奇的人来说,在帧内压缩(例如 JPEG 图像)中填充边缘的最常见方法是镜像边缘之前的像素线。例如,如果你需要填充三行,X线是边缘,X+1线等于X线,X+2线等于X-1线,X+3线等于X-线2.这非常有效地最小化了额外行的变换系数的成本。

    然而,在帧间编码中,填充算法通常只是简单地复制最后一行,因为镜像方法不适用于帧间压缩,例如视频压缩。

    【讨论】:

      【解决方案2】:

      图像尺寸是 8 或 16 的倍数不会对磁盘​​大小产生太大影响,但是如果您可以将视觉内容排列到 8x8 像素网格,例如如果有一个图像中的重复图案或纹理。

      【讨论】:

        【解决方案3】:

        大小为 8 倍的 JPG 也可以在没有质量损失的情况下旋转/翻转。例如 gthumb 可以在 Linux 上执行此操作。

        【讨论】:

          【解决方案4】:

          Tometzky 说了什么。如果您没有正确的倍数,则无损翻转和旋转算法将不起作用。那是因为可以安全忽略的右侧/底部的填充现在最终位于不能忽略的左侧/顶部。

          【讨论】:

            【解决方案5】:

            由于二次采样,有时您需要使用 16 个像素边界而不是 8 个;在编码过程中,每第二个像素都会被丢弃,这些 8x8 DCT 块以 16x16 开始,并将解码回 16x16。在最高质量设置下这不是问题。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2019-02-14
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-02-22
              • 2023-01-30
              • 1970-01-01
              相关资源
              最近更新 更多