Jpeg 编码如何影响 24BPP RGB 和 8BPP 灰度图像的最终文件大小?

信息处理 图像处理 计算机视觉 图片 图像压缩 JPEG
2022-02-03 19:17:50

我想知道这是因为文件大小问题。我正在尝试通过将图像从 TIFF 转换为 JPEG 来减小图像的文件大小。一位用户挑战我,他注意到 RGB TIFF 图像的大小是相同图像的三倍,但在灰度 TIFF 版本中,但 JPEG 图像的转换后灰度版本与 RGB JPEG 版本的大小几乎相同。

他坚持认为 8BPP 灰度 jpeg 的大小应该约为 24BPP RGB jpeg 的 1/3。

然后后来有技术顾问告诉我,JPEG永远只会以24BPP文件的形式存在,而且我在网上找到的灰度jpg图像都在他们的图像元数据中说位深度是8。但到目前为止我还没有在网上找到任何证实或否认这一说法的证据。

在这一点上,我不知道我的转换方法是否存在缺陷并夸大了文件大小,或者从一开始就不存在所谓的“仅占用文件大小的 1/3 的 8BPP JPEG”这一事实。

网上有没有关于这个问题的文档?

2个回答

获取标准 RGB 编码的 24 位图像。首先,假设所有通道都是独立编码的。如果偶然地,R、G、B 相等,则每一个都将转换为相同大小的 JPEG 文件s.

但是这样的图像在视觉上是灰度的。灰度的相应 JPEG 压缩将小约 3 倍(考虑到标题等)。

但在 JPEG(和大多数图像压缩格式)中,颜色通道不是独立处理的。它们首先被去相关为一个亮度 (L) 和两个色度图像 (​​U, V)。如果所有通道都相等,即如果图像为上述灰度,则 Y 为自然灰度,U 和 V 为零。后两者以几乎零大小压缩,而亮度只是 JPEG 压缩。

因此,一张全灰度的 24 位图像和对应的 8 位灰度图像被 JPEG 压缩几乎相同。在自然图像中,RGB 通道略有不同:

RGB

因此,如果将它们转换为 YUV(亮度-色度),您将得到:

YUV

通常情况下,亮度一个在动态上几乎保持 8 位,而两个色度则更平坦,在 4-5 位上。后两者可以被更重地压缩,因为它们可以被下采样(它们看起来更低通)和幅度量化。

因此,对于一阶,大部分信息集中在亮度部分。因此,如果通道差异不大,则使用 JPEG 压缩 RGB 或灰度,以获得足够高的比率,大致相同。

对于 TIFF,可以使用不同的压缩格式,例如:LZW(制作类似 png 的大小)、JPEG(制作 jpeg 大小)或无压缩(如 bmp)。因此,我将研究压缩技术而不是 TIF 格式。

Jpeg 是一种压缩图像格式。简而言之,它巧妙地减少了不能通过量化来解释大部分数据的高频分量。由于这种非线性压缩操作,您不太可能保留每像素位的比率(您的图像内容应该非常特别适合您)。

话虽如此,灰度 jpeg 确实存在。您可以使用漂亮而简单的 Irfanview 以灰度 jpeg 格式保存图像。我在 Irfanview 中为Lena图像做了一个实验,以显示不同压缩级别和文件格式的行为:

在此处输入图像描述

压缩级别用下标表示,'png' 9表示最佳压缩率(取自 Irfanview)。

请注意,唯一具有预期的格式1/3bpp中的比率是位图,这只是因为它没有被压缩(基本上所有像素都写在二进制文件中)。随着压缩接近零损失,颜色/灰度差距扩大。因此,可以看出压缩算法在处理不同颜色通道方面非常成功。这不能被视为性能失败,而是当图像具有 3 个通道时的性能提升。

为了进一步提高压缩/质量,可以使用 JPEG2000 格式。

作为参考,这是我使用的图像: 在此处输入图像描述