将FFTW应用于灰度图像

时间:2014-08-20 13:17:15

标签: c++ fftw

我有一张灰度图像。我想在它上面实现fftw。所以,到目前为止,我所做的是,

int g;
int width = pixmap.width();
int height = pixmap.height();

const int Lx = width;
const int Lt = height;
int var_x;
int var_t;

double F[Lx][Lt][16];
fftw_complex *in, *out, *result;
fftw_plan p;

in = (fftw_complex*)fftw_malloc(sizeof(fftw_complex)*Lx*Lt);
out = (fftw_complex*)fftw_malloc(sizeof(fftw_complex)*Lx*Lt);
result = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) *Lx *Lt);
p = fftw_plan_dft_2d(Lx, Lt, in, out, FFTW_FORWARD, FFTW_MEASURE);

ifstream input;
input.open("2D_function");
for (int x = 0;x < Lx;x++)
{
    for (int t = 0; t < Lt; t++)
   {
       input >> var_t;
       input >> var_x;
       input >> F[x][t][0];

   }
}

for (int x = 0; x < Lx; x++)
{
   for (int t = 0; t < Lt; t++)
   {
       in[t + Lt*x][0] = F[x][t][0];
   }
}
input.close();

fftw_execute(p);

for (int x = 0; x < Lx; x++)
{
   for (int t = 0; t < Lt; t++)
   {
       F[x][t][0] = out[t + Lt*x][0];
       F[x][t][1] = out[t + Lt*x][1];
   }
}
for (int x = 0; x < Lx; x++)
{
   for (int t = 0; t < Lt; t++)
   {
       std::cout<<F[x][t][0]<<F[x][t][1]<<std::endl;

           }
       }

所以现在我有一个fft变换,具体取决于图像的宽度和高度。但我的理解是,这里的宽度和高度只是数字而不会有像素值所以生成的FFT变换是一些随机输出。如何生成FFT变换,使其将图像作为输入

0 个答案:

没有答案