私は倍に画像をダウンスケールする必要水平及び垂直(、 <)。
ダウンサンプリングする前に、有限のローパスフィルターを使用したいと思います。
と関数として取得するには、どのようにローパスフィルターパラメーター(およびガウス)を決定すればですか?
具体的には、の場合に興味深いです。
私は倍に画像をダウンスケールする必要水平及び垂直(、 <)。
ダウンサンプリングする前に、有限のローパスフィルターを使用したいと思います。
と関数として取得するには、どのようにローパスフィルターパラメーター(およびガウス)を決定すればですか?
具体的には、の場合に興味深いです。
回答:
両方の画像間のナイキスト周波数の変化について考える必要があります。元の画像のナイキスト周波数がNの場合、ダウンサンプリングされた画像はより低いナイキスト周波数xNを持ちます。ここで、xは最終画像と最初の画像の間のサイズの比率に関連しています。ダウンサンプリングする前に、元の画像のxNよりも高い空間周波数を削除する必要があります。
画像空間のガウスのパワースペクトルは、周波数空間のガウスでもあります。しばらくの間2番目の次元を無視すると、画像空間のガウスはexp(-x ^ 2 / s ^ 2)として定義されます。ここで、xはピクセルを表します。これはexp(-w ^ 2 * s ^ 2)として周波数空間にマッピングされます。ここで、wは周波数です。シグマパラメーター(s)は、画像空間の広いガウスが周波数空間の狭いガウスに対応することを示しています。
ダウンサンプリングされた画像のナイキスト周波数に対応する周波数で、周波数空間で非常に低い値を生成するシグマパラメーターを選択します。
大きなダウンサイズ(2x、3x、4xなど)を行っていた場合は、ピクセルの平均化を行って、適切なアンチエイリアスを実現できます。ビデオゲームをより鮮明に見せるために、アンチエイリアスが追加のCPU / GPUを多く使用するのは、このためです。
1000x1000から707x707の画像(スケールファクターの単なる例)に移行するので、エイリアシングが問題になる可能性があるのは正しいことです。
ありがたいことに、これは多くの人がすでに遭遇し、解決するためにかなりの作業を行っている問題です。多くの場合、バイキュービック補間が適しています。さまざまな補間方法の例をいくつか示します。
http://www.compuphase.com/graphic/scale.htm
OpenCVのサイズ変更には、これらのメソッドがいくつか組み込まれています。
http://opencv.willowgarage.com/documentation/cpp/geometric_image_transformations.html#cv-resize
これらの補間方法のいくつかをすでに試していて、それらがうまく機能しない場合は、不足を示すサンプルソース画像とサンプル結果画像のようなものを投稿してください。これは、問題を診断して適切な解決策を考え出すために必要です。