Medical Imaging Interaction Toolkit  2018.4.99-4c24e3cb
Medical Imaging Interaction Toolkit
US/USHardwareDiPhAS/ITKUltrasound/itkFFT1DComplexToComplexImageFilter.h
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 /*=========================================================================
13  *
14  * Copyright Insight Software Consortium
15  *
16  * Licensed under the Apache License, Version 2.0 (the "License");
17  * you may not use this file except in compliance with the License.
18  * You may obtain a copy of the License at
19  *
20  * http://www.apache.org/licenses/LICENSE-2.0.txt
21  *
22  * Unless required by applicable law or agreed to in writing, software
23  * distributed under the License is distributed on an "AS IS" BASIS,
24  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
25  * See the License for the specific language governing permissions and
26  * limitations under the License.
27  *
28  *=========================================================================*/
29 #ifndef itkFFT1DComplexToComplexImageFilter_h
30 #define itkFFT1DComplexToComplexImageFilter_h
31 
32 #include <complex>
33 
34 #include "itkImage.h"
35 #include "itkImageToImageFilter.h"
36 #include "itkImageRegionSplitterDirection.h"
37 
38 namespace itk
39 {
53 template< typename TInputImage, typename TOutputImage=TInputImage >
54 class FFT1DComplexToComplexImageFilter:
55  public ImageToImageFilter< TInputImage, TOutputImage >
56 {
57 public:
59  typedef TInputImage InputImageType;
60  typedef TOutputImage OutputImageType;
61  typedef typename OutputImageType::RegionType OutputImageRegionType;
62 
64  typedef ImageToImageFilter< InputImageType, OutputImageType > Superclass;
67 
68  itkStaticConstMacro(ImageDimension, unsigned int, InputImageType::ImageDimension );
69 
70  itkTypeMacro( FFT1DComplexToComplexImageFilter, ImageToImageFilter );
71 
77  static Pointer New();
78 
80  typedef enum { DIRECT = 1, INVERSE } TransformDirectionType;
81 
87  itkSetMacro( TransformDirection, TransformDirectionType );
88  itkGetConstMacro( TransformDirection, TransformDirectionType );
89 
91  itkGetMacro(Direction, unsigned int);
92 
94  itkSetClampMacro(Direction, unsigned int, 0, ImageDimension - 1);
95 
96 protected:
99 
100  void PrintSelf(std::ostream& os, Indent indent) const ITK_OVERRIDE;
101 
102  virtual void GenerateInputRequestedRegion() ITK_OVERRIDE;
103  virtual void EnlargeOutputRequestedRegion(DataObject *output) ITK_OVERRIDE;
104 
105  virtual void BeforeThreadedGenerateData() ITK_OVERRIDE;
106 
109  virtual const ImageRegionSplitterBase* GetImageRegionSplitter() const ITK_OVERRIDE;
110 
113  unsigned int m_Direction;
114 
116  TransformDirectionType m_TransformDirection;
117 
118 private:
119  FFT1DComplexToComplexImageFilter( const Self& );
120  void operator=( const Self& );
121 
122  ImageRegionSplitterDirection::Pointer m_ImageRegionSplitter;
123 };
124 }
125 
126 #ifndef ITK_MANUAL_INSTANTIATION
127 #ifndef itkVnlFFT1DComplexToComplexImageFilter_h
128 #ifndef itkVnlFFT1DComplexToComplexImageFilter_hxx
129 #ifndef itkFFTW1DComplexToComplexImageFilter_h
130 #ifndef itkFFTW1DComplexToComplexImageFilter_hxx
131 #include "itkFFT1DComplexToComplexImageFilter.hxx"
132 #endif
133 #endif
134 #endif
135 #endif
136 #endif
137 
138 #endif // itkFFT1DComplexToComplexImageFilter_h
void PrintSelf(std::ostream &os, Indent indent) const ITK_OVERRIDE
Perform the Fast Fourier Transform, complex input to complex output, but only along one dimension...
void GenerateInputRequestedRegion() ITK_OVERRIDE
const ImageRegionSplitterBase * GetImageRegionSplitter() const ITK_OVERRIDE
itkStaticConstMacro(ImageDimension, unsigned int, InputImageType::ImageDimension)
void BeforeThreadedGenerateData() ITK_OVERRIDE
void EnlargeOutputRequestedRegion(DataObject *output) ITK_OVERRIDE