处理 JPEG 图像中的多余系数

Posted

技术标签:

【中文标题】处理 JPEG 图像中的多余系数【英文标题】:Dealing with excess coefficients in JPEG images 【发布时间】:2013-08-25 21:52:26 【问题描述】:

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

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

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

谢谢!

【问题讨论】:

JPEG 规范明确规定,即使图像大小不是 MCU 大小的精确倍数,也必须对完整的 MCU 进行编码。未使用的像素应设置为 0 或 DC 值,以最大限度地减少输出中的浪费位。如果您正在裁剪编码数据,则由于颜色二次采样,不需要对其进行解码/解采样和重新采样/重新编码。 @BitBank 我认为这个评论应该是一个答案,甚至可能是被接受的一个。我会投票给它。 :-) 【参考方案1】:

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

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

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

【讨论】:

以上是关于处理 JPEG 图像中的多余系数的主要内容,如果未能解决你的问题,请参考以下文章

Python遥感图像处理应用篇(二十四):Python绘制遥感图像各波段热力图(相关系数矩阵)

Python遥感图像处理应用篇(二十四):Python绘制遥感图像各波段热力图(相关系数矩阵)

Python遥感图像处理应用篇(二十四):Python绘制遥感图像各波段热力图(相关系数矩阵)

RK3568平台开发系列讲解(图像篇)JPEG图像处理

9. matlab图像处理基础——JPEG压缩+类型转换

9. matlab图像处理基础——JPEG压缩+类型转换