JPEG压缩编码过程将给定图像分成8×8像素的块,在将来的有损和无损压缩中使用这些块.
[source]
还提到如果图像是多个1MCU块(定义为最小编码单元,’通常在两个方向上为16个像素’),则可以执行对JPEG的无损改变. [source]
我正在处理产品图片,并想知道在我的最终图像尺寸中使用16的倍数(例如,使用尺寸为480像素×360像素的图像)与非倍数相比,是否可以获得多少益处16(如484×362).在这个例子中,我对最终图像的进一步改变,编辑或再压缩不感兴趣.
为了更接近我知道的特定答案,必须有很大的一般性:给定480×360图像为64k并在Photoshop [example]中以最高质量保存:
>我可以期待484×362图像的质量损失
>我可以期望增加多少文件大小(对于此示例,额外空间将是白色像素)
>比8px网格增长还有其他任何缺点吗?
我知道使用这个具体的例子是任意的,但它仍然有用(对于我和其他任何可能在思考图像大小的人)来理解我在打破非8px网格时要处理的妥协程度.
这里的关键问题是我所讨论的是8像素可分割图像是否比不能被8像素整除的图像质量更高.
解决方法
8个像素是截止值.原因是因为JPEG图像只是一个8×8 DCT块的数组;如果图像分辨率在两个方向上都不是mod8,则编码器必须将两侧填充到下一个mod8分辨率.这在实践中并不是非常昂贵的一点点;更糟糕的是当图像具有不在块边界上的尖锐黑线(例如信箱图像)时的情况.这在视频编码中尤其成问题.这是一个问题的原因是尖线的频率变换是系数的高斯分布 – 导致大量的位编码.
对于那些好奇的人来说,在帧内压缩(例如JPEG图像)中填充边缘的最常用方法是在边缘之前镜像像素线.例如,如果需要填充三条线而线X是边,则线X 1等于线X,线X 2等于线X-1,线X 3等于线X-2.这非常有效地最小化了额外线的变换系数的成本.
然而,在帧间编码中,填充算法通常简单地复制最后一行,因为镜像方法不适用于帧间压缩,例如在视频压缩中.