JPEG 压缩编码过程将给定图像分割为 8x8 像素的 block ,并在将来的有损和无损压缩中使用这些 block 。 [source]
还提到,如果图像是多个 1MCU block (定义为最小编码单元,“通常在两个方向上 16 个像素”),则可以对 JPEG 执行无损更改。 [source]
我正在处理产品图像,并且想知道在最终图像尺寸中使用 16 的倍数(例如,使用尺寸为 480 像素 x 360 像素的图像)与非- 16 的倍数(例如 484x362)。在此示例中,我对最终图像的进一步更改、编辑或重新压缩不感兴趣。
为了尝试更接近一个具体的答案,我知道肯定有很大的普遍性:给定一个 64k 的 480x360 图像,并在 Photoshop 中以最高质量保存 [example] :
- 484x362 的图像是否会出现质量损失
- 我预计文件大小会增加多少(在本例中,额外的空间将为白色像素)
- 增大到超过 8 像素网格还有其他缺点吗?
我知道使用该特定示例是任意的,但它仍然有助于(对于我和可能的任何其他考虑图像大小的其他人)了解在破坏非 8px 网格时我将要处理的妥协程度.
这里的关键问题是我曾经争论过的一个问题,即 8 像素可整除的图像是否比不可被 8 像素整除的图像质量更高。
最佳答案
8 像素是截止值。原因是 JPEG 图像只是 8x8 DCT block 的数组;如果图像分辨率在两个方向上都不是 mod8,则编码器必须将两侧填充到下一个 mod8 分辨率。实际上,这在位上并不是很昂贵;更糟糕的是图像具有不在 block 边界上的尖锐黑线(例如信箱图像)的情况。这在视频编码中尤其成问题。造成这个问题的原因是,锐线的频率变换是系数的高斯分布,导致需要编码的位数非常多。
对于那些好奇的人来说,帧内压缩(例如 JPEG 图像)中填充边缘的最常见方法是镜像边缘之前的像素线。例如,如果需要填充三行,且 X 行为边缘,则 X+1 行等于 X 行,X+2 行等于 X-1 行,X+3 行等于 X- 行2.这非常有效地最小化了额外线的变换系数的成本。
然而,在帧间编码中,填充算法通常只是简单地复制最后一行,因为镜像方法不适用于帧间压缩,例如在视频压缩中。
关于image - JPEG 大小为 8 像素或 16 像素的倍数是否有质量、文件大小或其他好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74892/