在变换域中快速将JPEG图像缩小一半或四分之一

3
我认为将JPEG缩小到1/2或1/4在变换域中(即从未解压)处理会非常快速高效,并且具有更小的内存占用。 假设这是正确的,我该如何使用libjpeg进行处理?此外,是否需要使用抗锯齿滤波器来应用这种方法?
(如果它能帮助你更清晰地回答,请注意我有很多1D DFTs的经验)

如果您更改图像尺寸,这将改变MCU的数量。我无法想象从频域中提取行/列并在空间域中正确工作的任何方法。您需要对图像进行解压缩和重新压缩。一个特殊情况是,采用两个方向上的色度子采样(4:2:0)的图像,并将其转换为4:4:4。这样,您只需要解码/缩放/重新编码Y分量,而将Cr / Cb保持不变。 - BitBank
2个回答

1

libjpeg的解压参数之一是比例因子M/N,其中N是源DCT大小(通常为8)。 M可以是1到16,因此它应该能够处理您的要求,并且似乎缩放是在变换空间中完成的(请检查源以确保)。

我不知道这在图像质量方面的表现如何。


我看到了,但我希望最终输出被压缩,而且我不确定是否可以完全跳过解压缩。我有机会时会再次检查源代码。 - Brian

1

我怀疑你可能完全跳过解压缩。

JPEG 的最后一步是哈夫曼或算术编码。在缩放之前,这一步绝对应该被撤销。


我在FreeImage项目中找到了一些代码,似乎可以在无损转换的哈夫曼编码之后提取量化表,我正在使用这个来看看是否符合我的需求。libjpeg API在所需步骤方面有些混乱并且稍微误导人,至少对我来说是这样。 - Brian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接