FFTW を使用するのではなく、OpenCVの使用を検討することをお勧めします。これは、コンピューター ビジョンおよび画像処理全般の高レベル API であり、FFT などの低レベルのビルディング ブロックから独自のルーチンを構築するよりもはるかに簡単に使用できます。OpenCV には、たとえばテンプレート マッチング関数cvMatchTemplateが既にあり、必要に応じて「内部」で効率的な FFT 実装を使用できるため、パフォーマンスが問題になることはありません。
本当に FFTW を使用する必要がある場合は、ドキュメントを広範囲に読んで、最初は急な学習曲線になることを覚悟してください。相互相関の手順 (テンプレート マッチングに使用する必要があると想定しています) は、通常、次のとおりです。
- より大きな画像サイズのフォワード/リバース FFT プランを作成する
- フォワード FFT プランを使用してターゲット イメージの FFT を実行します
- テンプレート画像をゼロでターゲット画像のサイズにパディングします
- フォワード FFT プランを使用して、パディングされたテンプレート イメージの FFT を実行します。
- パディングされた画像テンプレートの FFT 出力の複素共役を取る
- パディングされた画像テンプレートの複素共役でターゲット画像のFFT出力を乗算しますFFT出力
- 逆FFT計画を使用して製品のIFFTを取る
次に、ターゲット画像内のテンプレート画像の位置に対応する 1 つ以上のピーク値の結果を調べることができます。
より良い結果を得るには、正規化された相互相関を使用することを検討する必要がありますが、これを周波数領域で実装するにはかなり複雑になることに注意してください。