2011-12-28 5 views
5

サイズ4608 x 3456のJPGイメージをダウンスケールして解凍する必要があります。現在、イメージをRGB形式に正しく圧縮解除し、ビットマップに変換できました。JPG解凍中にJPGを縮小する

今、私はダウンスケールを実装する必要があります。これまで読んだことがありますが、イメージを正しく縮小するには、Bilinear Interpolationを使用する必要があります。次に、補間に使用されたピクセル(2x2)を補間からの結果のピクセルで置き換える必要があります。私は現在のサイズの約1/4で約が必要です。

私はダウンスケーリングされた画像の品質について心配していません。プロセス全体はできるだけ速くなければなりません。

私の質問はの場合私はJPGの復元段階で双線形補間を行うべきです。 IDCT(Inverse Discrete Cosine Transform)の後に行うか、IDCTの前に補間を行う必要がありますか?

DCT係数を使用して補間を行い、その結果の値をIDCTに使用するのは賢明ですか?

+0

あなたはbilinearを使うべきだと誰が言ったのですか?ポイントサンプリング以外にも最悪の可能性があります。ガンマを正しく扱うように注意することも重要です。 –

+0

@AxelGneitingそれは私が研究から見つけたものでした。あなたがよりよい方法を提案できるなら、そうしてください。 –

+0

@AxelGneiting、この特定のアプリケーションでは、双線形は数学的にはすべての4ピクセルの平均を取ることと同等です。それは非常に速く、受け入れられる品質でなければなりません。スピードを犠牲にして高品質を得ることは可能です。ガンマ - より良い結果を処理するのと同じですが、スピードは遅くなります。 –

答えて

3

一般に、DCT係数に関してこれを行うことができる賢明な方法はないと私は信じています。

しかし、特に各次元の半分のサイズの画像が必要な場合は、高域係数を捨てて4x4 IDCTを実行することで、劇的にダウンサンプリングされた画像を得ることができます。

+0

私はサムネイルを生成するためにこのアプローチを使用したライブラリで作業しました。残念ながら、私はそれがどのように動作したかの詳細を学んだことはありません。 –

+0

@Oliは、これがどのように行われるかについてもう少し詳しく教えてもらえますか? –

+1

@トニー:イメージの各8x8ブロックに2D DCTが適用されています(私はあなたがすでにこれを知っていると確信しています)。各係数は、特定の2D空間周波数の振幅を表します。あなたは基本的に高域を濾波することを基本的に伴うダウンサンプリングが必要です(これが補間のやり方です)。高域coeffを0に設定することで同様の効果が得られます。あるいは、ブロックを無視して各ブロックから低周波4x4 coeffだけを保持し、4x4 IDCTを実行します(Wikipediaのページを参照してください)。数学のためのDCT)。 –