1

我发现的关于 JPEG 标准的所有信息都指定数据单元应该是 8x8,所以我想知道如果给定图片的尺寸不是 8 的倍数,应该怎么做。

以 512x512 灰度图像为例:如果我将其裁剪为 508x508(以便从顶部和左侧删除像素),我将有 16 个系数不能整齐地放入 8x8 数据单元中。我想我必须引入一些包含原始图像系数的数据单元以及一些填充 0,然后信任另一端的解码器依赖更新的标头信息,以免显示那些 0。我是对的,还是我完全看错了?

如果我想裁剪使用 4:2:0 色度二次采样的彩色图片,会发生什么?将其“上采样”到 4:4:4 是否有意义,进行裁剪,添加那些填充 0,然后再次将其降低到 4:2:0,基本上允许填充 0 对图像的右边框和下边框的实际外观?或者在那种情况下,我最好使用某种平均值作为填充物?

谢谢!

4

1 回答 1

2

JPEG 规范清楚地表明,即使图像大小不是 MCU 大小的精确倍数,也必须对完整的 MCU(最小编码单元)进行编码。未使用的像素应设置为 0 或 DC 值,以最大限度地减少输出中的浪费位。如果您正在裁剪编码数据,则由于颜色二次采样,不需要对其进行解码/解采样和重新采样/重新编码。这是一篇文章,其中包含有关此主题的更多详细信息:

http://www.impulseadventure.com/photo/jpeg-minimum-coded-unit.html

裁剪子采样图像时,适用相同的规则。部分颜色和亮度块的处理方式应与非子采样图像相同。

于 2013-08-28T01:58:00.730 回答