ITK  5.0.0
Insight Segmentation and Registration Toolkit
itkFFTWHalfHermitianToRealInverseFFTImageFilter.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright Insight Software Consortium
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0.txt
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  *=========================================================================*/
19 
20 #ifndef itkFFTWHalfHermitianToRealInverseFFTImageFilter_h
21 #define itkFFTWHalfHermitianToRealInverseFFTImageFilter_h
22 
23 #include "itkFFTWCommon.h"
24 
25 namespace itk
26 {
49 template< typename TInputImage, typename TOutputImage=Image< typename TInputImage::PixelType::value_type, TInputImage::ImageDimension> >
51  public HalfHermitianToRealInverseFFTImageFilter< TInputImage, TOutputImage >
52 {
53 public:
54  ITK_DISALLOW_COPY_AND_ASSIGN(FFTWHalfHermitianToRealInverseFFTImageFilter);
55 
57  using InputImageType = TInputImage;
58  using InputPixelType = typename InputImageType::PixelType;
60  using OutputImageType = TOutputImage;
61  using OutputPixelType = typename OutputImageType::PixelType;
64 
69 
76 
78  itkNewMacro(Self);
79 
83 
85  static constexpr unsigned int ImageDimension = InputImageType::ImageDimension;
86 
96  virtual void SetPlanRigor( const int & value )
97  {
98 #ifndef ITK_USE_CUFFTW
99  // Use that method to check the value.
101 #endif
102  if( m_PlanRigor != value )
103  {
104  m_PlanRigor = value;
105  this->Modified();
106  }
107  }
108  itkGetConstReferenceMacro( PlanRigor, int );
109  void SetPlanRigor( const std::string & name )
110  {
111 #ifndef ITK_USE_CUFFTW
112  this->SetPlanRigor( FFTWGlobalConfiguration::GetPlanRigorValue( name ) );
113 #endif
114  }
116 
117  SizeValueType GetSizeGreatestPrimeFactor() const override;
118 
119 protected:
122 
123  void UpdateOutputData(DataObject *output) override;
124 
125  void BeforeThreadedGenerateData() override;
126 
127  void DynamicThreadedGenerateData(const OutputRegionType& outputRegionForThread) override;
128 
129  void PrintSelf(std::ostream & os, Indent indent) const override;
130 
131 private:
133 
135 
136 };
137 
138 
139 } // namespace itk
140 
141 #ifndef ITK_MANUAL_INSTANTIATION
142 #include "itkFFTWHalfHermitianToRealInverseFFTImageFilter.hxx"
143 #endif
144 
145 #endif //itkFFTWHalfHermitianToRealInverseFFTImageFilter_h
static std::string GetPlanRigorName(const int &value)
unsigned long SizeValueType
Definition: itkIntTypes.h:83
The base class for all process objects (source, filters, mappers) in the Insight data processing pipe...
Base class for all process objects that output image data.
Base class for specialized complex-to-real inverse Fast Fourier Transform.
TOutputImage OutputImageType
static int GetPlanRigorValue(const std::string &name)
Control indentation during Print() invocation.
Definition: itkIndent.h:49
Base class for all data objects in ITK.