00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkFFTWRealToComplexConjugateImageFilter_h
00018 #define __itkFFTWRealToComplexConjugateImageFilter_h
00019 #include "itkFFTRealToComplexConjugateImageFilter.h"
00020 #ifdef USE_FFTW
00021 #include "fftw3.h"
00022
00023
00024
00025 namespace itk
00026 {
00032 template <class TPixel, unsigned int Dimension = 3>
00033 class ITK_EXPORT FFTWRealToComplexConjugateImageFilter :
00034 public FFTRealToComplexConjugateImageFilter<TPixel,Dimension>
00035 {
00036 public:
00037
00038 typedef FFTWRealToComplexConjugateImageFilter Self;
00039 typedef FFTRealToComplexConjugateImageFilter<TPixel,Dimension> Superclass;
00040 typedef SmartPointer<Self> Pointer;
00041 typedef SmartPointer<const Self> constPointer;
00042
00044 typedef typename Superclass::TInputImageType TInputImageType;
00045 typedef typename Superclass::TOutputImageType TOutputImageType;
00046
00048 itkNewMacro(Self);
00049
00051 itkTypeMacro(FFTWRealToComplexConjugateImageFilter,
00052 FFTRealToComplexConjugateImageFilter);
00053
00054
00055
00056 virtual void GenerateData();
00057 void PrintSelf(std::ostream& os,Indent indent);
00058
00059
00060 protected:
00061 FFTWRealToComplexConjugateImageFilter() {
00062 M_PlanComputed = false;
00063 M_PlanComputedf = false;
00064 }
00065 ~FFTWRealToComplexConjugateImageFilter()
00066 {
00067 if(M_PlanComputed)
00068 {
00069 fftw_destroy_plan(M_plan);
00070 }
00071 if(M_PlanComputedf)
00072 {
00073 fftwf_destroy_plan(M_planf);
00074 }
00075 }
00076 void PrintSelf(std::ostream& os, Indent indent) const;
00077 virtual bool FullMatrix();
00078 private:
00079 FFTWRealToComplexConjugateImageFilter(const Self&);
00080 void operator=(const Self&);
00081 bool M_PlanComputed;
00082 bool M_PlanComputedf;
00083
00084
00085 fftw_plan M_plan;
00086 fftwf_plan M_planf;
00087 };
00088
00089 }
00090
00091 #ifndef ITK_MANUAL_INSTANTIATION
00092 #include "itkFFTWRealToComplexConjugateImageFilter.txx"
00093 #endif
00094 #endif // USE_FFTW
00095 #endif