ITK  4.10.0
Insight Segmentation and Registration Toolkit
itkFFTW1DComplexToComplexImageFilter.h
Go to the documentation of this file.
1 #ifndef __itkFFTW1DComplexToComplexImageFilter_h
2 #define __itkFFTW1DComplexToComplexImageFilter_h
3 
6 
7 #include <vector>
8 
9 
10 namespace itk
11 {
18 template <class TPixel, unsigned int Dimension = 3>
20  public FFT1DComplexToComplexImageFilter<TPixel,Dimension>
21 {
22 public:
27 
29  typedef typename Superclass::InputImageType InputImageType;
30  typedef typename Superclass::OutputImageType OutputImageType;
31  typedef typename OutputImageType::RegionType OutputImageRegionType;
32 
41  typedef typename std::vector< typename FFTW1DProxyType::PlanType > PlanArrayType;
42  typedef typename std::vector< typename FFTW1DProxyType::ComplexType* > PlanBufferPointerType;
43 
45  itkNewMacro(Self);
46 
50 
51 
52 protected:
53  FFTW1DComplexToComplexImageFilter(): m_PlanComputed( false ),
54  m_LastImageSize( 0 )
55  {}
57  {
58  if ( m_PlanComputed )
59  {
60  this->DestroyPlans();
61  }
62  }
63 
64  virtual void BeforeThreadedGenerateData();
65  virtual void ThreadedGenerateData( const OutputImageRegionType&, ThreadIdType threadID ); // generates output from input
66 
67 private:
68  FFTW1DComplexToComplexImageFilter(const Self&); //purposely not implemented
69  void operator=(const Self&); //purposely not implemented
70 
72  void DestroyPlans();
73 
75  PlanArrayType m_PlanArray;
76  unsigned int m_LastImageSize;
77  PlanBufferPointerType m_InputBufferArray;
78  PlanBufferPointerType m_OutputBufferArray;
79 };
80 
81 } // namespace itk
82 
83 #ifndef ITK_MANUAL_INSTANTIATION
84 #include "itkFFTW1DComplexToComplexImageFilter.hxx"
85 #endif
86 
87 #endif //__itkFFTW1DComplexToComplexImageFilter_h
std::vector< typename FFTW1DProxyType::PlanType > PlanArrayType
FFT1DComplexToComplexImageFilter< TPixel, Dimension > Superclass
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes...
Definition: itkArray.h:30
std::vector< typename FFTW1DProxyType::ComplexType * > PlanBufferPointerType
only do FFT along one dimension using FFTW as a backend.
unsigned int ThreadIdType
Definition: itkIntTypes.h:159
fftw::ComplexToComplexProxy< TPixel > FFTW1DProxyType