00001
00002
00003 #ifndef _FFTWLIB_H_
00004 #define _FFTWLIB_H_
00005
00006
00007
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