Main Page   Modules   Class Hierarchy   Compound List   File List   Compound Members   Related Pages   Examples  

fftwlib.h

00001 /* Copyright (c) 2001 C. Grigorescu */
00002 
00003 #ifndef _FFTWLIB_H_
00004 #define _FFTWLIB_H_
00005  
00006 /* Functions for 2D Fourier transformation and convolution
00007    in single precision floating point 
00008 */
00009 
00010 void _convolve(float *input_image_1, float *input_image_2,
00011               int size_x, int size_y, float *convolved_image);
00012  
00013 void _fft2d(float *real_input_image, float *imag_input_image,
00014            int size_x, int size_y,
00015            float *fourier_real_part, float *fourier_imag_part);
00016  
00017 void _ifft2d(float *fourier_real_image, float *fourier_imag_image,
00018            int size_x, int size_y,
00019            float *real_image, float *imag_image);
00020  
00021 #define half_shift(A,size_x,size_y) \
00022    { float temp; \
00023      int i,j; \
00024      for (j=0; j<(size_y)/2; j++)  \
00025        for (i=0; i<(size_x)/2; i++)  \
00026          { temp = A[(size_x)*j+i]; \
00027            A[(size_x)*j+i] = A[(size_x)*(j+((size_y)/2))+i+(size_x)/2]; \
00028            A[(size_x)*(j+((size_y)/2))+i+(size_x)/2] = temp;} \
00029      for (j=size_y/2; j<(size_y); j++)  \
00030        for (i=0; i<(size_x)/2; i++)  \
00031          { temp = A[(size_x)*j+i]; \
00032            A[(size_x)*j+i] = A[(size_x)*(j-((size_y)/2))+i+(size_x)/2]; \
00033            A[(size_x)*(j-((size_y)/2))+i+(size_x)/2] = temp;} \
00034    }
00035 
00036 #endif