C ++で2D高速フーリエ変換を実行する方法

投稿がありました。このトピックについては、返信はありません。
与えられた画像fの 2D高速フーリエ変換を実行する関数を書く方法 いくつかの整数mとnについて幅= 2 ^ m、高さ= 2 ^ nと仮定し、入力画像が既に適切に埋められていると仮定することができます。
入力: f - 複素数で表される2D画像
出力: F - 変換された係数(複素数でも表されます)

void FFT2D(Complex *f, Complex *F, int width, int height)
{

}

あなたが私のためにそれをプログラムしてほしいと思っている皆のために:
私はしません。これがどう動くべきかの理論的な説明がほしい

1
いいえ、何かを実験して、この仕事をすることはできません。
追加された 著者 user990635,
私はそれを私のために書くように求めなかった。私にそれを論理的にする方法のいくつかの指示を与えるだけです
追加された 著者 user990635,
これは疑問ではなく、自由な仕事のための要求です。
追加された 著者 Joe McGrath,
-selfは引数を取り除いた -
追加された 著者 Joe McGrath,

2 答え

FFTWライブラリを使用してこれを実行することができます:

#include 

void FFT2D(Complex *f, Complex *F, int width, int height){   
  fftw_plan p = fftw_plan_dft_2d(width, height, f, F, FFTW_FORWARD, FFTW_ESTIMATE);            
  fftw_execute(p); 
  fftw_destroy_plan(p);
}
3
追加された
独自のFFTを書くのではなく、おそらくFFTライブラリを使用するのが最善です。 FFTWは最も使いやすいものです。 fftw.org fftw.org/fftw3_doc/…
追加された 著者 Anthony Blake,
私は答えを理解していない...私はそれを持っている必要がある手順を説明してくださいできますか?たとえば、実際にはfftw_forwardとfftw_estimateは何ですか?
追加された 著者 user990635,

私は誰もあなたのためにFFTの実装を書くつもりはないと思う。それは些細で時間がかかりません(あなたもゼロの努力を示しています)。

あなたはその背後にある数学を理解していますか?その背後にある数学を理解していれば、さまざまなFFTアルゴリズム(Cooley Tukeyが思い浮かぶ)を見て、単純に実装する必要があります。また、これは宿題のようなにおいをします。

But since you asked, here's a C implementation of a DFT and FFT courtesy of Google: http://paulbourke.net/miscellaneous/dft/

PS:のA *実装を記述しますか?

3
追加された
@Nicol - Lmao、私は Turkey (oops!)を書いてくれました。
追加された 著者 David Titarenco,