00001 #ifndef vnl_fft2d_h_
00002 #define vnl_fft2d_h_
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include <vcl_complex.h>
00013 #include <vnl/vnl_matrix.h>
00014 #include "vnl_fftxd_prime_factors.h"
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 template<class T>
00037 class vnl_fft2d : public vnl_matrix<vcl_complex<T> > {
00038 public:
00039 typedef vnl_matrix<vcl_complex<T> > base;
00040
00041 vnl_fft2d (const vnl_matrix<T> &real);
00042 vnl_fft2d (const vnl_matrix<vcl_complex<T> > &z, int dir);
00043
00044
00045 vnl_fft2d (const vnl_matrix<T> &r, const vnl_matrix<T> &i,
00046 const vnl_fftxd_prime_factors<T> &oPFx,
00047 const vnl_fftxd_prime_factors<T> &oPFy, int dir);
00048 vnl_fft2d (const vnl_matrix<T> &r,
00049 const vnl_fftxd_prime_factors<T> &oPFx,
00050 const vnl_fftxd_prime_factors<T> &oPFy, int dir);
00051 vnl_fft2d (const T *realdata, const T *imagdata, unsigned int iRows, unsigned int iCols,
00052 const vnl_fftxd_prime_factors<T> &oPFx,
00053 const vnl_fftxd_prime_factors<T> &oPFy, int dir);
00054 vnl_fft2d (const T *data, unsigned int iRows, unsigned int iCols,
00055 const vnl_fftxd_prime_factors<T> &oPFx,
00056 const vnl_fftxd_prime_factors<T> &oPFy, int dir);
00057
00058 #ifndef VCL_VC60
00059
00060 vnl_fft2d (const vnl_matrix<vcl_complex<T> > &c,
00061 const vnl_fftxd_prime_factors<T> &oPFx,
00062 const vnl_fftxd_prime_factors<T> &oPFy, int dir);
00063
00064 vnl_fft2d (const vcl_complex<T> *cdata, unsigned int iRows, unsigned int iCols,
00065 const vnl_fftxd_prime_factors<T> &oPFx,
00066 const vnl_fftxd_prime_factors<T> &oPFy, int dir);
00067 #endif
00068
00069
00070 static int doFFT_IP (vcl_complex<T> *cdata, unsigned int rows, unsigned int cols,
00071 const vnl_fftxd_prime_factors<T> &oPFx,
00072 const vnl_fftxd_prime_factors<T> &oPFy, int dir);
00073
00074 private:
00075 int doFFT (const vnl_fftxd_prime_factors<T> &oPFx,
00076 const vnl_fftxd_prime_factors<T> &oPFy, int dir);
00077 };
00078
00079 #endif // vnl_fft2d_h_