2011-12-28 95 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