ITK  5.4.0
Insight Toolkit
itkVnlRealToHalfHermitianForwardFFTImageFilter.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright NumFOCUS
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  * https://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  *=========================================================================*/
18 #ifndef itkVnlRealToHalfHermitianForwardFFTImageFilter_h
19 #define itkVnlRealToHalfHermitianForwardFFTImageFilter_h
20 
22 
23 #include "itkVnlFFTCommon.h"
24 #include "vnl/algo/vnl_fft_base.h"
25 
27 
28 namespace itk
29 {
44 template <typename TInputImage,
45  typename TOutputImage = Image<std::complex<typename TInputImage::PixelType>, TInputImage::ImageDimension>>
47  : public RealToHalfHermitianForwardFFTImageFilter<TInputImage, TOutputImage>
48 {
49 public:
50  ITK_DISALLOW_COPY_AND_MOVE(VnlRealToHalfHermitianForwardFFTImageFilter);
51 
53  using InputImageType = TInputImage;
54  using InputPixelType = typename InputImageType::PixelType;
57  using OutputImageType = TOutputImage;
58  using OutputPixelType = typename OutputImageType::PixelType;
60 
65 
67  itkNewMacro(Self);
68 
70  itkOverrideGetNameOfClassMacro(VnlRealToHalfHermitianForwardFFTImageFilter);
71 
74  static constexpr unsigned int ImageDimension = TOutputImage::ImageDimension;
75  static constexpr unsigned int InputImageDimension = TInputImage::ImageDimension;
76  static constexpr unsigned int OutputImageDimension = TOutputImage::ImageDimension;
77 
79  GetSizeGreatestPrimeFactor() const override;
80 
81 #ifdef ITK_USE_CONCEPT_CHECKING
82  // Begin concept checking
84  // End concept checking
85 #endif
86 
87 protected:
89  ~VnlRealToHalfHermitianForwardFFTImageFilter() override = default;
90 
91  void
92  GenerateData() override;
93 
94 private:
95  using SignalVectorType = vnl_vector<std::complex<InputPixelType>>;
96 };
97 
98 
99 // Describe whether input/output are real- or complex-valued
100 // for factory registration
101 template <>
103 {
104  template <typename TUnderlying>
105  using InputPixelType = TUnderlying;
106  template <typename TUnderlying>
107  using OutputPixelType = std::complex<TUnderlying>;
108  using FilterDimensions = std::integer_sequence<unsigned int, 4, 3, 2, 1>;
109 };
110 
111 } // namespace itk
112 
113 #ifndef ITK_MANUAL_INSTANTIATION
114 # include "itkVnlRealToHalfHermitianForwardFFTImageFilter.hxx"
115 #endif
116 
117 #endif
itk::RealToHalfHermitianForwardFFTImageFilter::InputSizeType
typename InputImageType::SizeType InputSizeType
Definition: itkRealToHalfHermitianForwardFFTImageFilter.h:67
itk::RealToHalfHermitianForwardFFTImageFilter::OutputSizeType
typename OutputIndexType::SizeType OutputSizeType
Definition: itkRealToHalfHermitianForwardFFTImageFilter.h:71
itk::GTest::TypedefsAndConstructors::Dimension2::SizeType
ImageBaseType::SizeType SizeType
Definition: itkGTestTypedefsAndConstructors.h:49
itkRealToHalfHermitianForwardFFTImageFilter.h
itk::RealToHalfHermitianForwardFFTImageFilter
Base class for specialized real-to-complex forward Fast Fourier Transform.
Definition: itkRealToHalfHermitianForwardFFTImageFilter.h:57
itk::FFTImageFilterTraits
Helper defining pixel traits for templated FFT image filters.
Definition: itkFFTImageFilterFactory.h:42
itk::VnlRealToHalfHermitianForwardFFTImageFilter::InputSizeValueType
typename InputImageType::SizeValueType InputSizeValueType
Definition: itkVnlRealToHalfHermitianForwardFFTImageFilter.h:56
itk::VnlRealToHalfHermitianForwardFFTImageFilter::SignalVectorType
vnl_vector< std::complex< InputPixelType > > SignalVectorType
Definition: itkVnlRealToHalfHermitianForwardFFTImageFilter.h:95
itk::SmartPointer< Self >
itk::RealToHalfHermitianForwardFFTImageFilter::OutputPixelType
typename OutputImageType::PixelType OutputPixelType
Definition: itkRealToHalfHermitianForwardFFTImageFilter.h:69
itk::Concept::SameDimension
Definition: itkConceptChecking.h:694
itk::ImageSource
Base class for all process objects that output image data.
Definition: itkImageSource.h:67
itk::FFTImageFilterTraits< VnlRealToHalfHermitianForwardFFTImageFilter >::OutputPixelType
std::complex< TUnderlying > OutputPixelType
Definition: itkVnlRealToHalfHermitianForwardFFTImageFilter.h:107
itk::FFTImageFilterTraits< VnlRealToHalfHermitianForwardFFTImageFilter >::FilterDimensions
std::integer_sequence< unsigned int, 4, 3, 2, 1 > FilterDimensions
Definition: itkVnlRealToHalfHermitianForwardFFTImageFilter.h:108
itk::VnlRealToHalfHermitianForwardFFTImageFilter
VNL-based forward Fast Fourier Transform.
Definition: itkVnlRealToHalfHermitianForwardFFTImageFilter.h:46
itkVnlFFTCommon.h
itk::ImageToImageFilter::InputImageType
TInputImage InputImageType
Definition: itkImageToImageFilter.h:129
itk::RealToHalfHermitianForwardFFTImageFilter::InputPixelType
typename InputImageType::PixelType InputPixelType
Definition: itkRealToHalfHermitianForwardFFTImageFilter.h:65
itkConceptMacro
#define itkConceptMacro(name, concept)
Definition: itkConceptChecking.h:65
itk
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
Definition: itkAnnulusOperator.h:24
itk::FFTImageFilterTraits< VnlRealToHalfHermitianForwardFFTImageFilter >::InputPixelType
TUnderlying InputPixelType
Definition: itkVnlRealToHalfHermitianForwardFFTImageFilter.h:105
itk::ProcessObject
The base class for all process objects (source, filters, mappers) in the Insight data processing pipe...
Definition: itkProcessObject.h:139
itkFFTImageFilterFactory.h
itk::SizeValueType
unsigned long SizeValueType
Definition: itkIntTypes.h:83
itk::ImageSource::OutputImageType
TOutputImage OutputImageType
Definition: itkImageSource.h:90