Я изучаю код, стоящий за примером convolutionFFT2D для Nvidia CUDA sdk, но я не понимаю смысл этой строки:
cufftPlan2d(&fftPlan, fftH, fftW/2, CUFFT_C2C);
Очевидно, это инициализирует сложную плоскость для запуска БПФ, но я не вижу смысла делить ширину плана на 2.
Просто чтобы быть точным: fftH и fftW являются округленными значениями для размеров imageX + kernelX + 1 и imageY + kernelY + 1 (только по соображениям скорости). Я знаю, что в частотной области у вас обычно есть положительный компонент и симметричный отрицательный компонент той же частоты ... но это звучит как вырезка половины моих данных изображения ...
Может кто-нибудь объяснить мне это немного лучше? Я никогда не использовал БПФ (я просто знаю теорию, лежащую в основе преобразования Фурье)