解码 jpeg 图像是否会解压缩它们?

信息处理 图像处理 图像压缩 JPEG
2022-02-26 14:33:35

我在压缩的 jpeg 图像上训练卷积神经网络。我注意到,无论我使用高质量的 jpeg 图像还是相同但压缩的 jpeg 图像,我的代码在内存中占用的空间几乎相同。我知道处理 jpeg 图像首先要对其进行解码,所以我的问题是:“解码”jpeg 图像是否会解压缩它?换句话说,压缩图像在解码时是否恢复其原始大小(以字节为单位)?

3个回答

图像处理主要在帧上完成。数字图像帧是像素的矩形光栅,在 RGB 颜色空间或颜色空间(如 YCbCr)中。因此,正如您所注意到的,您可以确保您的压缩图像在您的应用程序中被解码为矩形光栅。每个编码图像文件与其数据一起存储源位图大小(宽度和高度)和源颜色空间(像素格式和位数)。解码时,这些参数被恢复。因此,无论使用何种无损/有损算法,如果通过编码相同的源位图数据来接收 lo-res 和 hi-res 压缩图像文件,则恢复的光栅矩形的大小(以字节为单位)都是相同的。

编辑:“多分辨率”评论相当正确地纠正了我的答案,还有另一个解释为什么应用程序可能不会在 CPU 内存中分配源光栅占用的整个内存:解码器可以使用 GPU 内存。但是 OP 注意到,无论编码的图像质量如何,解压缩的图像都会占用“几乎相同数量的内存空间”。即使使用多分辨率,应用程序也可以将图像解码为源尺寸。此外,代码性能对图像质量的依赖不是问题的一部分。

尽管如此,“多分辨率”注释对于完整性是绝对必要的。

解码有时是解压缩的另一个词。压缩曾经被称为“源编码”(与信道编码相比)。

对于以单一分辨率压缩的图像,例如在基线 JPEG 中,最终解压缩的图像具有与原始图像相同的大小,正如已经回答的那样。对于像 JPEG2000 这样的多分辨率编码器,情况可能并非如此。

此外,高度压缩的图像(即质量较差的图像)的解码速度可能比高质量的图像要快一些,因为要解码的信息更少。

一个 jpeg 压缩图像包含(以字节为单位)唯一“信息”的上限,该信息可以可靠地从该图像中提取。解码会增加文件大小,但不会增加对真实场景的了解。此外,jpeg “相当好”,但在判断哪些细节对人类观众来说很重要时,还远远不够完美。

考虑到这一点,如何对压缩的 jpeg 数据进行训练呢?不需要将几个 dct 系数扩展为 8x8 像素的“平滑”数据吗?