我一直在查找关于FFT的开放式c ++代码。我想用FFT处理一个图像,我写了一个代码但是我的代码速度不是很快。 我用四个for循环写它,这样做效率不高。关键是,是否有人可以帮助我。我完全搜索了互联网,但我在c ++中找不到任何文件或代码文件。我不希望任何lib都有预先编写的代码。那是请给我看一个网站,我可以写我的代码。 我的代码在这里;
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()));
}
}
}