2015-11-06 40 views
-2

我一直在找一個關於FFT的開放C++代碼。我想用FFT處理圖像,我寫了一個代碼,但是我的代碼速度並不快,即使如此緩慢。 我用四個for循環寫了它,它的效率並不高。關鍵是,有沒有人可以幫助我。我完全搜索了互聯網,但我無法在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函數被關閉,這是我無法修改的方式。 –

回答