2015-11-06 6 views
-2

Я искал открытый код C++ о БПФ. Я хочу обработать изображение с помощью FFT, и я написал код, но мой код не быстрый, даже настолько медленный. Я написал его, используя четыре цикла, так как это не эффективно. Дело в том, есть ли кто-нибудь, кто может мне помочь. Я полностью искал Интернет, но я не смог найти какой-либо документ или файл кода в C++. Я НЕ хочу иметь предварительно написанный код любой lib. Вот, пожалуйста, покажите мне сайт, и я могу написать свой код. Мой код здесь;Быстрый код преобразования Фурье в C++

void NaiveDFT::Apply(Image & img) 
{ 

    complex<double> dft[512][512];  

    for(unsigned u = 0; u < img.rows; ++u) 
    { 
     for(unsigned v = 0; v < img.cols; ++v) 
     { 
      std::complex<double> sum = 0; 
      for(unsigned x = 0; x < img.rows; ++x) 
      { 
       for(unsigned y = 0; y < img.cols; ++y) 
       { 
        std::complex<double> i = sqrt(std::complex<double>(-1)); 
        std::complex<double> theta = 2 * M_PI * (((u * x)/img.GetWidth()) + ((v * y)/img.cols)); 
        sum += std::complex<double>(img.at<uchar>(i, j)[0]) * cos(theta) + (-i * sin(theta)); 
        //sum += std::complex<double>(std::complex<double>(imgData[x][y]._red) * pow(EULER, -i * theta)); 

       } 
      } 
      dftData[u][v] = (sum.imag()/(img.GetWidth() * img.GetHeight())); 
     } 
    } 
} 
+1

Сообщение код более на [Обзор] Код (Http: // codereview.stackexchange.com/), и вам может помочь. –

+2

для fft вообще попробуйте 'fftw' и для fft на изображении попробуйте' opencv' – Azad

+0

Ваши ссылки были посещены. Я обыскал их уже. Я хочу открыть код, и я хочу их изменить. opencv-функции закрыты, поэтому я не могу изменить. –

ответ