Использование БПФ для вычисления суммы двух двухмерных массивов

Я делаю программу для удаления шума с изображения, в нем мне нужно вычислить много сумм точечных умножений, сейчас я делаю это с помощью прямого подхода, и это требует огромных вычислительных затрат:

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];

Мне сказали, что для вычисления этой свертки между двумя массивами, я должен сделать это (
подробнее здесь ):

  1. Рассчитать ДПФ массива 1 (через БПФ).
  2. Рассчитать ДПФ массива 2 (через БПФ).
  3. Умножьте два ДПФ поэлементно. Это должно быть сложное умножение.
  4. Рассчитать обратное ДПФ (через БПФ) умноженных ДПФ. Это будет твоим результатом свертки.

Кажется, эта алгоритмическая часть более или менее понятна, но я пришел к новой проблеме:

Я выбрал fftw для этой задачи, но после долгого времени, потраченного на чтение его документов, я все еще не вижу никакой функции для 2D обратного fft, которая возвращает не 2D-массив, а одно значение, похожее на прямой подход, а не весь 2D-массив что мне не хватает?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]