ITK  5.4.0
Insight Toolkit
itkComplexBSplineInterpolateImageFunction.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 itkComplexBSplineInterpolateImageFunction_h
19 #define itkComplexBSplineInterpolateImageFunction_h
20 
24 
25 namespace itk
26 {
43 template <typename TImageType, typename TCoordRep = double, typename TCoefficientType = double>
44 class ITK_TEMPLATE_EXPORT ComplexBSplineInterpolateImageFunction
45  : public InterpolateImageFunction<TImageType, TCoordRep>
46 {
47 public:
48  ITK_DISALLOW_COPY_AND_MOVE(ComplexBSplineInterpolateImageFunction);
49 
52 
55 
58 
61 
63  itkOverrideGetNameOfClassMacro(ComplexBSplineInterpolateImageFunction);
64 
66  itkNewMacro(Self);
67 
69  static constexpr unsigned int ImageDimension = Superclass::ImageDimension;
70 
72  using typename Superclass::OutputType;
73 
75  using typename Superclass::InputImageType;
76 
78  using typename Superclass::IndexType;
79 
81  using typename Superclass::SizeType;
82 
84  using typename Superclass::ContinuousIndexType;
85 
87  using typename Superclass::PointType;
88 
91 
95 
98 
107  OutputType
108  EvaluateAtContinuousIndex(const ContinuousIndexType & index) const override;
109 
111  /* using CovariantVectorType = CovariantVector< OutputType, Self::ImageDimension >;
112 
113  CovariantVectorType EvaluateDerivative( const PointType & point ) const
114  {
115  ContinuousIndexType index;
116  this->GetInputImage()->TransformPhysicalPointToContinuousIndex( point, index );
117  return ( this->EvaluateDerivativeAtContinuousIndex( index ) );
118  }
119 
120  CovariantVectorType EvaluateDerivativeAtContinuousIndex( const ContinuousIndexType & x ) const;
121  */
122 
125  void
126  SetSplineOrder(unsigned int SplineOrder);
127 
128  itkGetConstMacro(SplineOrder, unsigned int);
129 
132  void
133  SetInputImage(const TImageType * inputData) override;
134 
135  SizeType
136  GetRadius() const override
137  {
138  return SizeType::Filled(m_SplineOrder + 1);
139  }
140 
141 protected:
143  ~ComplexBSplineInterpolateImageFunction() override = default;
144 
145  void
146  PrintSelf(std::ostream & os, Indent indent) const override;
147 
148 private:
149  unsigned int m_SplineOrder{};
150 
151  typename InterpolatorType::Pointer m_RealInterpolator{};
152  typename InterpolatorType::Pointer m_ImaginaryInterpolator{};
153 
154  typename RealFilterType::Pointer m_RealFilter{};
155 
156  typename ImaginaryFilterType::Pointer m_ImaginaryFilter{};
157 }; // class
158 } // namespace itk
159 
160 #ifndef ITK_MANUAL_INSTANTIATION
161 # include "itkComplexBSplineInterpolateImageFunction.hxx"
162 #endif
163 
164 #endif
itk::InterpolateImageFunction< TImageType, TCoordRep >::SizeType
typename InputImageType::SizeType SizeType
Definition: itkInterpolateImageFunction.h:79
itk::BSplineInterpolateImageFunction
Evaluates the B-Spline interpolation of an image. Spline order may be from 0 to 5.
Definition: itkBSplineInterpolateImageFunction.h:83
itk::GTest::TypedefsAndConstructors::Dimension2::PointType
ImageBaseType::PointType PointType
Definition: itkGTestTypedefsAndConstructors.h:51
itk::GTest::TypedefsAndConstructors::Dimension2::SizeType
ImageBaseType::SizeType SizeType
Definition: itkGTestTypedefsAndConstructors.h:49
itk::SmartPointer< Self >
itk::Indent
Control indentation during Print() invocation.
Definition: itkIndent.h:49
itk::FunctionBase< Point< TCoordRep, TImageType ::ImageDimension >, NumericTraits< TImageType ::PixelType >::RealType >::OutputType
NumericTraits< TImageType ::PixelType >::RealType OutputType
Definition: itkFunctionBase.h:62
itkComplexToImaginaryImageFilter.h
itk::GTest::TypedefsAndConstructors::Dimension2::IndexType
ImageBaseType::IndexType IndexType
Definition: itkGTestTypedefsAndConstructors.h:50
itkBSplineInterpolateImageFunction.h
itk::ComplexToImaginaryImageFilter
Computes pixel-wise the imaginary part of a complex image.
Definition: itkComplexToImaginaryImageFilter.h:56
itk::LightObject
Light weight base class for most itk classes.
Definition: itkLightObject.h:55
itk::ComplexBSplineInterpolateImageFunction
Complex wrapper around BSplineInterpolateImageFunction.
Definition: itkComplexBSplineInterpolateImageFunction.h:44
itkComplexToRealImageFilter.h
itk
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
Definition: itkAnnulusOperator.h:24
itk::ContinuousIndex< TCoordRep, Self::ImageDimension >
itk::Image
Templated n-dimensional image class.
Definition: itkImage.h:88
itk::InterpolateImageFunction
Base class for all image interpolators.
Definition: itkInterpolateImageFunction.h:45
itk::ComplexBSplineInterpolateImageFunction::GetRadius
SizeType GetRadius() const override
Definition: itkComplexBSplineInterpolateImageFunction.h:136
itk::ComplexToRealImageFilter
Computes pixel-wise the real(x) part of a complex image.
Definition: itkComplexToRealImageFilter.h:55