Вход в CUDA FFT:
Ширина пада к ячейке (ширина / 2 + 1) * 2 из-за сложного формата в частотной области.
Этот начальный отступ будет размером с результирующее изображение -> должен обрезать результат.
Затем добавьте к целой степени 2 * целую степень 2 реальной матрицы с плавающей точкой (ноль дополняется справа и снизу).
Выведите, r, i, r, i, ... даже комплексные значения с плавающей точкой (реальный столбец, воображаемый столбец, реальный столбец, ...), с нулем, дополненным вокруг центра.
Использовать сложное умножение в частотной области, а не обычное.
После IFFT обрежьте стороны изображений, чтобы получить высоту * ceil (width / 2 + 1) * 2 center.
Снова обрежьте, чтобы удалить возможную лишнюю строку справа, если есть (обрезать до высоты * ширины).
Не забудьте FIT-shift. Я не могу вспомнить наверняка, когда,
Поэтому попробуйте переключиться после ifft snd, если результат неправильный, затем после fft.
Попробуйте умножить на дельта-ядро для тестирования.
Ядро должно располагаться вокруг центра, а не угла.
Для четных матриц центр - это половина ячейки справа и под центром.
Вы можете написать собственное ядро CUDA для заполнения, а другое - для распаковки и сдвига за один раз.