これを読む:
http://www.dspguide.com/
OK、それはかなりの読み物です。ただし、フィルター設計を理解すると便利です。
一般に、イメージを W1 x H1 から W2 x H2 (W1、W2、H1、H2 は整数) にスケーリングするプロセスは、新しい W3、H3 を見つけて、W1 と W2 が W3 の整数因子となり、H1 と H2 が次のようになるようにすることです。 H3 の整数係数を使用してから、元の画像をゼロ (元の画像のピクセルの間隔を空けるために使用) で埋めて、サイズが W3 x H3 になるようにします。これにより、画像の不連続性により高周波が発生するため、画像にローパス フィルターを適用し、フィルター処理された画像を新しいサイズ (W2 x H2) に間引きます。すでにこれを実行しようとしているように聞こえますが、フィルタリングは時間領域で実行できるため、フーリエ変換は実際には必要ありません。
実際には、今説明したプロセスは最適化されています (アップスケールされた画像に畳み込みフィルターを適用すると、ほとんどの項が 0 になることに注意してください。たとえば、アルゴリズムで乗算演算のほとんどを回避できます。フィルタリングされた結果の多くを破棄することになるため、それらを計算する必要がないため、基本的に、ターゲット イメージの各ピクセルに対して少数の乗算と加算を行うことになります。使用します。)
ffmpeg プロジェクトの libswscale は、このようなことを行っていると思います。見てみな:
http://gitorious.org/libswscale
他の人が指摘したように (そしてあなたも気づいたようです)、画像をデシメートすると、エイリアシング アーティファクトが発生します。リサンプリングの実装についてはわかりませんが、使用するウィンドウ サイズやその他の実装の詳細に応じて、この手法には興味深い落とし穴があります。