Как использовать данную функцию FFT в C? - PullRequest
2 голосов
/ 22 октября 2010

Извините, это первый раз, когда я задаю вопрос здесь, я дал функцию FFT

void fft_1d(int n, float xr[256], float xi[256], int ntype)
{
  /* compute the FFT of a complex signal
     xr and xi are the real and imaginary parts respectively
     xr and xi contain the signal as input and the FT as output
     n is the number of points, it should be a power of 2
     ntype is set to 1 for forward transform and -1 for inverse transform
  */

И мне сказали расширить эту функцию, чтобы выполнить 2D (DFT)заданное изображение.

Моя проблема:

  1. Я могу получить каждое значение itensity данного изображения, но как я могу справиться со сложными компонентами (действительная часть / мнимая часть)fft_1d?Другими словами, что я должен указать в параметрах float xr[256] и float xi[256], чтобы сделать 2D (DFT) изображения?

Спасибо за внимание!

1 Ответ

3 голосов
/ 22 октября 2010

Изображение, как правило, функция только для реального использования.Следовательно, вы можете установить реальные входные значения равными значениям изображения, а мнимые входные значения равными нулю при вызове функции FFT.

Однако, чтобы выполнить 2D FFT, сначала необходимо вызвать 1D FFT прикаждой строке, а затем вызовите 1D FFT для каждого столбца результатов.Эти промежуточные результаты будут сложными и должны быть переданы как таковые во второй набор БПФ.

...