Я делаю программу для удаления шума с изображения, в нем мне нужно вычислить много сумм точечных умножений, сейчас я делаю это с помощью прямого подхода, и это требует огромных вычислительных затрат:
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];
Мне сказали, что для вычисления этой свертки между двумя массивами, я должен сделать это (
подробнее здесь ):
Кажется, эта алгоритмическая часть более или менее понятна, но я пришел к новой проблеме:
Я выбрал fftw для этой задачи, но после долгого времени, потраченного на чтение его документов, я все еще не вижу никакой функции для 2D обратного fft, которая возвращает не 2D-массив, а одно значение, похожее на прямой подход, а не весь 2D-массив что мне не хватает?
Задача ещё не решена.
Других решений пока нет …