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
00020 #include "itkFFTRealToComplexConjugateImageFilter.h"
00021 #include "itkFFTWCommon.h"
00022
00023
00024 namespace itk
00025 {
00032 template <class TPixel, unsigned int Dimension = 3>
00033 class ITK_EXPORT FFTWRealToComplexConjugateImageFilter :
00034 public FFTRealToComplexConjugateImageFilter<TPixel,Dimension>
00035 {
00036 public:
00037 typedef FFTWRealToComplexConjugateImageFilter Self;
00038 typedef FFTRealToComplexConjugateImageFilter<TPixel,Dimension> Superclass;
00039 typedef SmartPointer<Self> Pointer;
00040 typedef SmartPointer<const Self> constPointer;
00041
00043 typedef typename Superclass::TInputImageType TInputImageType;
00044 typedef typename Superclass::TOutputImageType TOutputImageType;
00045
00053 typedef typename fftw::Proxy<TPixel> FFTWProxyType;
00054
00056 itkNewMacro(Self);
00057
00059 itkTypeMacro(FFTWRealToComplexConjugateImageFilter,
00060 FFTRealToComplexConjugateImageFilter);
00061
00062
00063
00064 virtual void GenerateData();
00065
00066 protected:
00067 FFTWRealToComplexConjugateImageFilter() : m_PlanComputed(false),
00068 m_LastImageSize(0),
00069 m_InputBuffer(0),
00070 m_OutputBuffer(0)
00071 {
00072 }
00073 ~FFTWRealToComplexConjugateImageFilter()
00074 {
00075 if(m_PlanComputed)
00076 {
00077 FFTWProxyType::DestroyPlan(this->m_Plan);
00078 delete [] this->m_InputBuffer;
00079 delete [] this->m_OutputBuffer;
00080 }
00081 }
00082
00083 virtual bool FullMatrix();
00084 private:
00085 FFTWRealToComplexConjugateImageFilter(const Self&);
00086 void operator=(const Self&);
00087 bool m_PlanComputed;
00088 typename FFTWProxyType::PlanType m_Plan;
00089 unsigned int m_LastImageSize;
00090 TPixel *m_InputBuffer;
00091 typename FFTWProxyType::ComplexType *m_OutputBuffer;
00092
00093 };
00094 }
00095
00096 #ifndef ITK_MANUAL_INSTANTIATION
00097 #include "itkFFTWRealToComplexConjugateImageFilter.txx"
00098 #endif
00099
00100 #endif //__itkFFTWRealToComplexConjugateImageFilter_h
00101