0

私は画像からノイズを除去するプログラムを行っています。その中で、点ごとの乗算の合計をたくさん計算する必要があります。今、私は直接的なアプローチでそれを行い、莫大な計算コストがかかります:

int ret=0, arr1[n][n].arr2[n][n];
for (int i=0;i<n;i++) for (int j=0;j<n;j++) ret+=arr1[i][j]*arr2[i][j];

2つの配列間のこの畳み込みを計算するには、これを行う必要があると言われました( 詳細はこちら):

  1. 配列 1 の DFT を計算します (FFT 経由)。
  2. 配列 2 の DFT を計算します (FFT 経由)。
  3. 2 つの DFT を要素ごとに乗算します。それは複雑な乗算でなければなりません。
  4. 乗算された DFT の逆 DFT (FFT 経由) を計算します。それが畳み込みの結果になります。

アルゴリズムの部分は多かれ少なかれ明確なようですが、私は新しい問題に遭遇しました:

このタスクにfftwを選択しましたが、ドキュメントを読んで長い時間を費やした後、2D配列ではなく、2D配列全体ではなく、直接アプローチに似た単一の値を返す2D逆fftの関数が表示されません、何が欠けていますか?

4

0 に答える 0