go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
itkRecursiveBSplineInterpolationWeightFunction.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright UMC Utrecht and contributors
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  *=========================================================================*/
18 #ifndef __itkRecursiveBSplineInterpolationWeightFunction_h
19 #define __itkRecursiveBSplineInterpolationWeightFunction_h
20 
21 #include "itkBSplineInterpolationWeightFunction.h"
22 
26 
27 namespace itk
28 {
30 template< unsigned int SplineOrder, unsigned int Dimension >
32 {
33 public:
34 
35  typedef GetConstNumberOfIndicesHack< SplineOrder, Dimension - 1 > OneDimensionLess;
36  itkStaticConstMacro( Value, unsigned int, ( SplineOrder + 1 ) * OneDimensionLess::Value );
37 };
38 
39 template< unsigned int SplineOrder >
40 class GetConstNumberOfIndicesHack< SplineOrder, 0 >
41 {
42 public:
43 
44  itkStaticConstMacro( Value, unsigned int, 1 );
45 };
46 
48 template< unsigned int SplineOrder, unsigned int Dimension >
49 class GetConstNumberOfWeightsHackRecursiveBSpline
50 {
51 public:
52 
53  itkStaticConstMacro( Value, unsigned int, ( SplineOrder + 1 ) * Dimension );
54 };
55 
73 template<
74  typename TCoordRep = float,
75  unsigned int VSpaceDimension = 2,
76  unsigned int VSplineOrder = 3 >
78  public BSplineInterpolationWeightFunction< TCoordRep, VSpaceDimension, VSplineOrder >
79 {
80 public:
81 
85  TCoordRep, VSpaceDimension, VSplineOrder > Superclass;
87  typedef SmartPointer< const Self > ConstPointer;
88 
90  itkNewMacro( Self );
91 
93  itkTypeMacro( RecursiveBSplineInterpolationWeightFunction, FunctionBase );
94 
96  itkStaticConstMacro( SpaceDimension, unsigned int, VSpaceDimension );
97 
99  itkStaticConstMacro( SplineOrder, unsigned int, VSplineOrder );
100 
102  typedef typename Superclass::WeightsType WeightsType;
103  typedef typename Superclass::IndexType IndexType;
104  typedef typename Superclass::SizeType SizeType;
105  typedef typename Superclass::ContinuousIndexType ContinuousIndexType;
106  //typedef typename Superclass::
107 
109  typedef GetConstNumberOfWeightsHackRecursiveBSpline<
110  itkGetStaticConstMacro( SplineOrder ),
111  itkGetStaticConstMacro( SpaceDimension ) > GetConstNumberOfWeightsHackRecursiveBSplineType;
112  itkStaticConstMacro( NumberOfWeights, unsigned int, GetConstNumberOfWeightsHackRecursiveBSplineType::Value );
114  itkGetStaticConstMacro( SplineOrder ),
115  itkGetStaticConstMacro( SpaceDimension ) > GetConstNumberOfIndicesHackType;
116  itkStaticConstMacro( NumberOfIndices, unsigned int, GetConstNumberOfIndicesHackType::Value );
117 
119  itkGetConstMacro( NumberOfWeights, unsigned int );
120 
122  itkGetConstMacro( NumberOfIndices, unsigned int );
123 
126  virtual WeightsType Evaluate( const ContinuousIndexType & index ) const;
127 
136  virtual void Evaluate( const ContinuousIndexType & index,
137  WeightsType & weights, IndexType & startIndex ) const;
138 
140  WeightsType & weights, const IndexType & startIndex ) const;
141 
143  WeightsType & weights, const IndexType & startIndex ) const;
144 
145 protected:
146 
149  void PrintSelf( std::ostream & os, Indent indent ) const;
150 
151 private:
152 
153  RecursiveBSplineInterpolationWeightFunction( const Self & ); // purposely not implemented
154  void operator=( const Self & ); // purposely not implemented
155 
157  unsigned int m_NumberOfWeights;
158  unsigned int m_NumberOfIndices;
160 
162  typedef BSplineKernelFunction2< itkGetStaticConstMacro( SplineOrder ) > KernelType;
163  typedef BSplineDerivativeKernelFunction2< itkGetStaticConstMacro( SplineOrder ) > DerivativeKernelType;
164  typedef BSplineSecondOrderDerivativeKernelFunction2< itkGetStaticConstMacro( SplineOrder ) > SecondOrderDerivativeKernelType;
165 
170 
171 };
172 
173 } // end namespace itk
174 
175 #ifndef ITK_MANUAL_INSTANTIATION
176 #include "itkRecursiveBSplineInterpolationWeightFunction.hxx"
177 #endif
178 
179 #endif
itk::RecursiveBSplineInterpolationWeightFunction::m_DerivativeKernel
DerivativeKernelType::Pointer m_DerivativeKernel
Definition: itkRecursiveBSplineInterpolationWeightFunction.h:168
itk::RecursiveBSplineInterpolationWeightFunction::Self
RecursiveBSplineInterpolationWeightFunction Self
Definition: itkRecursiveBSplineInterpolationWeightFunction.h:83
itk::GetConstNumberOfIndicesHack::itkStaticConstMacro
itkStaticConstMacro(Value, unsigned int,(SplineOrder+1) *OneDimensionLess::Value)
itk::RecursiveBSplineInterpolationWeightFunction::itkStaticConstMacro
itkStaticConstMacro(NumberOfWeights, unsigned int, GetConstNumberOfWeightsHackRecursiveBSplineType::Value)
itk::RecursiveBSplineInterpolationWeightFunction::SizeType
Superclass::SizeType SizeType
Definition: itkRecursiveBSplineInterpolationWeightFunction.h:104
itk::RecursiveBSplineInterpolationWeightFunction::ContinuousIndexType
Superclass::ContinuousIndexType ContinuousIndexType
Definition: itkRecursiveBSplineInterpolationWeightFunction.h:105
itk::RecursiveBSplineInterpolationWeightFunction::KernelType
BSplineKernelFunction2< itkGetStaticConstMacro(SplineOrder) > KernelType
Definition: itkRecursiveBSplineInterpolationWeightFunction.h:162
SmartPointer< Self >
itk::RecursiveBSplineInterpolationWeightFunction::ConstPointer
SmartPointer< const Self > ConstPointer
Definition: itkRecursiveBSplineInterpolationWeightFunction.h:87
itk::RecursiveBSplineInterpolationWeightFunction::EvaluateDerivative
void EvaluateDerivative(const ContinuousIndexType &index, WeightsType &weights, const IndexType &startIndex) const
itk::RecursiveBSplineInterpolationWeightFunction::~RecursiveBSplineInterpolationWeightFunction
~RecursiveBSplineInterpolationWeightFunction()
Definition: itkRecursiveBSplineInterpolationWeightFunction.h:148
itkBSplineDerivativeKernelFunction2.h
itk::RecursiveBSplineInterpolationWeightFunction::Superclass
BSplineInterpolationWeightFunction< TCoordRep, VSpaceDimension, VSplineOrder > Superclass
Definition: itkRecursiveBSplineInterpolationWeightFunction.h:85
itk::RecursiveBSplineInterpolationWeightFunction::DerivativeKernelType
BSplineDerivativeKernelFunction2< itkGetStaticConstMacro(SplineOrder) > DerivativeKernelType
Definition: itkRecursiveBSplineInterpolationWeightFunction.h:163
itk::RecursiveBSplineInterpolationWeightFunction::EvaluateSecondOrderDerivative
void EvaluateSecondOrderDerivative(const ContinuousIndexType &index, WeightsType &weights, const IndexType &startIndex) const
itk::RecursiveBSplineInterpolationWeightFunction
Returns the weights over the support region used for B-spline interpolation/reconstruction.
Definition: itkRecursiveBSplineInterpolationWeightFunction.h:79
itk::RecursiveBSplineInterpolationWeightFunction::Evaluate
virtual WeightsType Evaluate(const ContinuousIndexType &index) const
itk::RecursiveBSplineInterpolationWeightFunction::m_SupportSize
SizeType m_SupportSize
Definition: itkRecursiveBSplineInterpolationWeightFunction.h:159
itk::RecursiveBSplineInterpolationWeightFunction::RecursiveBSplineInterpolationWeightFunction
RecursiveBSplineInterpolationWeightFunction()
itk::GetConstNumberOfIndicesHack
Definition: itkRecursiveBSplineInterpolationWeightFunction.h:32
itkBSplineSecondOrderDerivativeKernelFunction2.h
itk::BSplineSecondOrderDerivativeKernelFunction2
Derivative of a B-spline kernel used for density estimation and nonparametric regression.
Definition: itkBSplineSecondOrderDerivativeKernelFunction2.h:44
itkBSplineKernelFunction2.h
itk::RecursiveBSplineInterpolationWeightFunction::IndexType
Superclass::IndexType IndexType
Definition: itkRecursiveBSplineInterpolationWeightFunction.h:103
itk::RecursiveBSplineInterpolationWeightFunction::operator=
void operator=(const Self &)
itk::RecursiveBSplineInterpolationWeightFunction::Pointer
SmartPointer< Self > Pointer
Definition: itkRecursiveBSplineInterpolationWeightFunction.h:86
itk::RecursiveBSplineInterpolationWeightFunction::Evaluate
virtual void Evaluate(const ContinuousIndexType &index, WeightsType &weights, IndexType &startIndex) const
itk::RecursiveBSplineInterpolationWeightFunction::m_NumberOfIndices
unsigned int m_NumberOfIndices
Definition: itkRecursiveBSplineInterpolationWeightFunction.h:158
itk::RecursiveBSplineInterpolationWeightFunction::itkStaticConstMacro
itkStaticConstMacro(SpaceDimension, unsigned int, VSpaceDimension)
itk::RecursiveBSplineInterpolationWeightFunction::SecondOrderDerivativeKernelType
BSplineSecondOrderDerivativeKernelFunction2< itkGetStaticConstMacro(SplineOrder) > SecondOrderDerivativeKernelType
Definition: itkRecursiveBSplineInterpolationWeightFunction.h:164
itk::RecursiveBSplineInterpolationWeightFunction::GetConstNumberOfIndicesHackType
GetConstNumberOfIndicesHack< itkGetStaticConstMacro(SplineOrder), itkGetStaticConstMacro(SpaceDimension) > GetConstNumberOfIndicesHackType
Definition: itkRecursiveBSplineInterpolationWeightFunction.h:115
itk::RecursiveBSplineInterpolationWeightFunction::m_NumberOfWeights
unsigned int m_NumberOfWeights
Definition: itkRecursiveBSplineInterpolationWeightFunction.h:157
itk::GetConstNumberOfIndicesHack::OneDimensionLess
GetConstNumberOfIndicesHack< SplineOrder, Dimension - 1 > OneDimensionLess
Definition: itkRecursiveBSplineInterpolationWeightFunction.h:35
itk
Definition: itkAdvancedImageToImageMetric.h:40
itk::RecursiveBSplineInterpolationWeightFunction::itkStaticConstMacro
itkStaticConstMacro(SplineOrder, unsigned int, VSplineOrder)
itk::RecursiveBSplineInterpolationWeightFunction::m_Kernel
KernelType::Pointer m_Kernel
Definition: itkRecursiveBSplineInterpolationWeightFunction.h:167
itk::RecursiveBSplineInterpolationWeightFunction::m_SecondOrderDerivativeKernel
SecondOrderDerivativeKernelType::Pointer m_SecondOrderDerivativeKernel
Definition: itkRecursiveBSplineInterpolationWeightFunction.h:169
BSplineInterpolationWeightFunction
itk::RecursiveBSplineInterpolationWeightFunction::PrintSelf
void PrintSelf(std::ostream &os, Indent indent) const
itk::BSplineDerivativeKernelFunction2
Derivative of a B-spline kernel used for density estimation and nonparametric regression.
Definition: itkBSplineDerivativeKernelFunction2.h:60
itk::BSplineKernelFunction2
B-spline kernel used for density estimation and nonparameteric regression.
Definition: itkBSplineKernelFunction2.h:60
itk::RecursiveBSplineInterpolationWeightFunction::WeightsType
Superclass::WeightsType WeightsType
Definition: itkRecursiveBSplineInterpolationWeightFunction.h:102
itk::RecursiveBSplineInterpolationWeightFunction::RecursiveBSplineInterpolationWeightFunction
RecursiveBSplineInterpolationWeightFunction(const Self &)
itk::GetConstNumberOfIndicesHack< SplineOrder, 0 >::itkStaticConstMacro
itkStaticConstMacro(Value, unsigned int, 1)
itk::RecursiveBSplineInterpolationWeightFunction::itkStaticConstMacro
itkStaticConstMacro(NumberOfIndices, unsigned int, GetConstNumberOfIndicesHackType::Value)
float


Generated on OURCE_DATE_EPOCH for elastix by doxygen 1.8.18 elastix logo