JPEG压缩编码过程将给定图像分成8x8像素的块,在将来的有损压缩和无损压缩中使用这些块。 [source]
还提到如果图像是多个1MCU块(定义为最小编码单元,'通常在两个方向上为16个像素'),则可以执行对JPEG的无损改变。 [source]
我正在使用产品图片,并想知道在我的最终图像尺寸中使用16的倍数(例如,使用尺寸为480像素×360像素的图像)与非图像相比可以获得多少益处 - 多个16(例如484x362)。在这个例子中,我对最终图像的进一步改动,编辑或再压缩不感兴趣。
为了更接近我所知道的特定答案,必须有很大的一般性:给定480x360图像为64k并在Photoshop [example]中以最高质量保存:
我知道使用这个具体的例子是任意的,但是对我来说,对于我和其他可能在思考图像大小的人来说,它仍然有用,可以理解我在打破非8px网格时要处理的妥协程度
这里的关键问题是我所讨论的是8像素可分割图像的质量是否高于不能被8像素整除的图像。
答案 0 :(得分:18)
8像素是截止。原因是JPEG图像只是一个8x8 DCT块的数组;如果图像分辨率在两个方向上都不是mod8,则编码器必须将两侧填充到下一个mod8分辨率。这在实践中并不是非常昂贵的一点点;更糟糕的是当图像具有不在块边界上的尖锐黑线(例如信箱图像)时的情况。这在视频编码中尤其成问题。造成这个问题的原因是尖线的频率变换是系数的高斯分布 - 导致大量的位编码。
对于那些好奇的人来说,在帧内压缩中填充边缘的最常用方法(如JPEG图像)是在边缘之前镜像像素线。例如,如果需要填充三条线而线X是边,则线X + 1等于线X,线X + 2等于线X-1,线X + 3等于线X- 2。这非常有效地最小化了额外线的变换系数的成本。
在帧间编码中,填充算法通常只是复制最后一行,因为镜像方法不适用于帧间压缩,例如视频压缩。
答案 1 :(得分:3)
有时你需要使用16个像素边界而不是8个因为子采样;在编码过程中,每个第二个像素都被丢弃,那些8x8 DCT块以16x16开始,并将解码回16x16。在最高质量的设置下,这不会成为问题。
答案 2 :(得分:2)
图像尺寸为8或16的倍数不会对磁盘上的尺寸造成太大影响,但如果您可以将可视内容排列到8x8像素网格(例如,如果有),则可以节省大量成本在图像中重复图案或纹理。
答案 3 :(得分:2)
尺寸为8倍的JPG也可以旋转/翻转而不会有质量损失。例如,gthumb可以在Linux上执行此操作。
答案 4 :(得分:1)
Tometzky说的是什么。如果没有正确的倍数,则无损翻转和旋转算法不起作用。这是因为可以安全地忽略的右/底部填充现在最终位于左侧/顶部,而不是。