2011-12-28 49 views
5

我必须缩小和解压缩一组尺寸为4608 x 3456的JPG图像。目前,我已经能够将图像正确地解压缩为RGB格式并将它们转换为位图。在JPG解压缩过程中缩小JPG

现在我需要实现缩减比例,并且从我迄今为止读取的正确缩减图像的尺寸中,应该使用双线性插值。然后,我应该用内插结果像素替换用于插值的像素(2x2)。我需要大约1/4的当前尺寸。

我并不那么担心缩小图像的质量,因为我正在谈论它的完成速度。整个过程应该尽可能快。

我的问题是,我应该在JPG的解压阶段进行双线性插值。我应该在IDCT(逆离散余弦变换)之后执行还是应该在IDCT之前执行插值?

使用DCT系数并对它们进行插值并在IDCT中使用这些结果值是否明智?

+0

谁说你应该使用双线性?除点采样外,这是最糟糕的方式。注意正确处理伽玛也很重要。 – 2011-12-28 14:04:30

+0

@AxelGneiting这只是我从我的研究中发现的,如果你能提出更好的方法,请这样做。 – 2011-12-28 14:11:24

+0

@ AxelGneiting,在这个特定的应用程序中,双线性在数学上相当于取所有4个像素的平均值。这应该是非常快速和可接受的质量。以速度为代价提高质量是可能的。处理伽玛同样 - 效果更好,速度更快。 – 2011-12-28 14:46:05

回答

3

总的来说,我不认为有任何明智的方法可以根据DCT系数做到这一点。但是,如果您特别需要每个维度都有一半大小的图像,则可以通过丢弃高频系数并执行4x4 IDCT来获得粗略下采样图像。

+0

这不是一个荒谬的想法 - 我曾与一个使用这种方法生成缩略图的库合作。不幸的是,我从来没有学过它如何操作的细节。 – 2011-12-28 14:42:05

+0

@Oli你能给我提供一些关于如何做这件事的数据吗? – 2011-12-28 14:47:12

+1

@Tony:图像的每个8x8块都应用了2D DCT(我相信你已经知道这一点)。每个系数表示特定2D空间频率的幅度。你想下采样,基本上包括首先滤除高频(这就是插值所做的)。你可以通过设置高频系数为0来获得类似的效果。或者,你可以忽略它们,只保留来自每个块的低频4×4系数,并对它们执行4×4 IDCT(参见维基百科页面数学DCT)。 – 2011-12-28 15:03:23