go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
itkBSplineInterpolationWeightFunctionBase.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 __itkBSplineInterpolationWeightFunctionBase_h
19 #define __itkBSplineInterpolationWeightFunctionBase_h
20 
21 #include "itkFunctionBase.h"
22 #include "itkContinuousIndex.h"
23 #include "itkArray.h"
24 #include "itkArray2D.h"
25 #include "itkMatrix.h"
27 #include "itkBSplineDerivativeKernelFunction.h"
29 
30 namespace itk
31 {
32 
34 template< unsigned int SplineOrder, unsigned int Dimension >
35 class GetConstNumberOfWeightsHack
36 {
37 public:
38 
39  typedef GetConstNumberOfWeightsHack< SplineOrder, Dimension - 1 > OneDimensionLess;
40  itkStaticConstMacro( Value, unsigned long, ( SplineOrder + 1 ) * OneDimensionLess::Value );
41 };
42 
44 template< unsigned int SplineOrder >
45 class GetConstNumberOfWeightsHack< SplineOrder, 0 >
46 {
47 public:
48 
49  itkStaticConstMacro( Value, unsigned long, 1 );
50 };
51 
68 template< class TCoordRep = float,
69 unsigned int VSpaceDimension = 2,
70 unsigned int VSplineOrder = 3 >
72  public FunctionBase< ContinuousIndex< TCoordRep, VSpaceDimension >, Array< double > >
73 {
74 public:
75 
78  typedef FunctionBase<
79  ContinuousIndex< TCoordRep, VSpaceDimension >,
80  Array< double > > Superclass;
82  typedef SmartPointer< const Self > ConstPointer;
83 
85  itkTypeMacro( BSplineInterpolationWeightFunctionBase, FunctionBase );
86 
88  itkStaticConstMacro( SpaceDimension, unsigned int, VSpaceDimension );
89 
91  itkStaticConstMacro( SplineOrder, unsigned int, VSplineOrder );
92 
94  typedef GetConstNumberOfWeightsHack<
95  itkGetStaticConstMacro( SplineOrder ),
96  itkGetStaticConstMacro( SpaceDimension ) > GetConstNumberOfWeightsHackType;
97  itkStaticConstMacro( NumberOfWeights, unsigned long, GetConstNumberOfWeightsHackType::Value );
98 
100  typedef Array< double > WeightsType;
101 
103  typedef Index< VSpaceDimension > IndexType;
105 
107  typedef ContinuousIndex< TCoordRep, VSpaceDimension > ContinuousIndexType;
108 
110  virtual WeightsType Evaluate( const ContinuousIndexType & index ) const;
111 
119  virtual void Evaluate( const ContinuousIndexType & cindex,
120  const IndexType & startIndex, WeightsType & weights ) const;
121 
124  IndexType & startIndex ) const;
125 
127  itkGetConstReferenceMacro( SupportSize, SizeType );
128 
130  itkGetConstMacro( NumberOfWeights, unsigned long );
131 
132 protected:
133 
136 
140  typedef BSplineDerivativeKernelFunction< Self::SplineOrder > DerivativeKernelType;
141  typedef typename DerivativeKernelType::Pointer DerivativeKernelPointer;
145 
148 
153  typedef Matrix< double,
154  itkGetStaticConstMacro( SpaceDimension ),
155  itkGetStaticConstMacro( SplineOrder ) + 1 > OneDWeightsType;
156 
158  virtual void Compute1DWeights(
159  const ContinuousIndexType & index,
160  const IndexType & startIndex,
161  OneDWeightsType & weights1D ) const = 0;
162 
164  virtual void PrintSelf( std::ostream & os, Indent indent ) const;
165 
167  unsigned long m_NumberOfWeights;
170 
173  typename DerivativeKernelType::Pointer m_DerivativeKernel;
175 
176 private:
177 
178  BSplineInterpolationWeightFunctionBase( const Self & ); // purposely not implemented
179  void operator=( const Self & ); // purposely not implemented
180 
182  void InitializeSupport( void );
183 
189 
190 };
191 
192 } // end namespace itk
193 
194 #ifndef ITK_MANUAL_INSTANTIATION
195 #include "itkBSplineInterpolationWeightFunctionBase.hxx"
196 #endif
197 
198 #endif
itk::BSplineInterpolationWeightFunctionBase::SecondOrderDerivativeKernelType
BSplineSecondOrderDerivativeKernelFunction2< Self::SplineOrder > SecondOrderDerivativeKernelType
Definition: itkBSplineInterpolationWeightFunctionBase.h:142
itk::BSplineInterpolationWeightFunctionBase::ComputeStartIndex
void ComputeStartIndex(const ContinuousIndexType &index, IndexType &startIndex) const
itk::BSplineInterpolationWeightFunctionBase::itkStaticConstMacro
itkStaticConstMacro(SpaceDimension, unsigned int, VSpaceDimension)
itk::BSplineInterpolationWeightFunctionBase::Compute1DWeights
virtual void Compute1DWeights(const ContinuousIndexType &index, const IndexType &startIndex, OneDWeightsType &weights1D) const =0
itk::BSplineInterpolationWeightFunctionBase::ContinuousIndexType
ContinuousIndex< TCoordRep, VSpaceDimension > ContinuousIndexType
Definition: itkBSplineInterpolationWeightFunctionBase.h:107
itk::BSplineInterpolationWeightFunctionBase::WeightArrayType
KernelType::WeightArrayType WeightArrayType
Definition: itkBSplineInterpolationWeightFunctionBase.h:144
itk::BSplineInterpolationWeightFunctionBase::itkStaticConstMacro
itkStaticConstMacro(NumberOfWeights, unsigned long, GetConstNumberOfWeightsHackType::Value)
SmartPointer< Self >
itk::BSplineInterpolationWeightFunctionBase::DerivativeKernelType
BSplineDerivativeKernelFunction< Self::SplineOrder > DerivativeKernelType
Definition: itkBSplineInterpolationWeightFunctionBase.h:140
itk::BSplineInterpolationWeightFunctionBase::Pointer
SmartPointer< Self > Pointer
Definition: itkBSplineInterpolationWeightFunctionBase.h:81
itk::BSplineKernelFunction2::WeightArrayType
FixedArray< double, itkGetStaticConstMacro(SplineOrder)+1 > WeightArrayType
Definition: itkBSplineKernelFunction2.h:79
itk::BSplineInterpolationWeightFunctionBase::m_DerivativeKernel
DerivativeKernelType::Pointer m_DerivativeKernel
Definition: itkBSplineInterpolationWeightFunctionBase.h:173
itk::BSplineInterpolationWeightFunctionBase::InitializeSupport
void InitializeSupport(void)
itk::BSplineInterpolationWeightFunctionBase::IndexType
Index< VSpaceDimension > IndexType
Definition: itkBSplineInterpolationWeightFunctionBase.h:103
itk::BSplineInterpolationWeightFunctionBase::WeightsType
Array< double > WeightsType
Definition: itkBSplineInterpolationWeightFunctionBase.h:100
itk::BSplineInterpolationWeightFunctionBase::SizeType
Size< VSpaceDimension > SizeType
Definition: itkBSplineInterpolationWeightFunctionBase.h:104
itk::BSplineInterpolationWeightFunctionBase
Returns the weights over the support region used for B-spline interpolation/reconstruction.
Definition: itkBSplineInterpolationWeightFunctionBase.h:73
itk::BSplineInterpolationWeightFunctionBase::TableType
Array2D< unsigned long > TableType
Definition: itkBSplineInterpolationWeightFunctionBase.h:147
itk::BSplineInterpolationWeightFunctionBase::DerivativeKernelPointer
DerivativeKernelType::Pointer DerivativeKernelPointer
Definition: itkBSplineInterpolationWeightFunctionBase.h:141
itk::BSplineInterpolationWeightFunctionBase::m_SupportSize
SizeType m_SupportSize
Definition: itkBSplineInterpolationWeightFunctionBase.h:168
double
itk::BSplineInterpolationWeightFunctionBase::m_Kernel
KernelType::Pointer m_Kernel
Definition: itkBSplineInterpolationWeightFunctionBase.h:172
itk::BSplineInterpolationWeightFunctionBase::Evaluate
virtual WeightsType Evaluate(const ContinuousIndexType &index) const
itkBSplineSecondOrderDerivativeKernelFunction2.h
itk::BSplineInterpolationWeightFunctionBase::~BSplineInterpolationWeightFunctionBase
~BSplineInterpolationWeightFunctionBase()
Definition: itkBSplineInterpolationWeightFunctionBase.h:135
itk::BSplineSecondOrderDerivativeKernelFunction2
Derivative of a B-spline kernel used for density estimation and nonparametric regression.
Definition: itkBSplineSecondOrderDerivativeKernelFunction2.h:44
itk::BSplineInterpolationWeightFunctionBase::BSplineInterpolationWeightFunctionBase
BSplineInterpolationWeightFunctionBase()
itkBSplineKernelFunction2.h
itk::BSplineInterpolationWeightFunctionBase::BSplineInterpolationWeightFunctionBase
BSplineInterpolationWeightFunctionBase(const Self &)
itk::BSplineInterpolationWeightFunctionBase::OneDWeightsType
Matrix< double, itkGetStaticConstMacro(SpaceDimension), itkGetStaticConstMacro(SplineOrder)+1 > OneDWeightsType
Definition: itkBSplineInterpolationWeightFunctionBase.h:155
Size< VSpaceDimension >
itk::BSplineInterpolationWeightFunctionBase::m_NumberOfWeights
unsigned long m_NumberOfWeights
Definition: itkBSplineInterpolationWeightFunctionBase.h:167
itk::BSplineInterpolationWeightFunctionBase::KernelPointer
KernelType::Pointer KernelPointer
Definition: itkBSplineInterpolationWeightFunctionBase.h:139
itk::BSplineInterpolationWeightFunctionBase::itkStaticConstMacro
itkStaticConstMacro(SplineOrder, unsigned int, VSplineOrder)
itk::BSplineInterpolationWeightFunctionBase::Evaluate
virtual void Evaluate(const ContinuousIndexType &cindex, const IndexType &startIndex, WeightsType &weights) const
itk::BSplineInterpolationWeightFunctionBase::operator=
void operator=(const Self &)
itk::BSplineInterpolationWeightFunctionBase::ConstPointer
SmartPointer< const Self > ConstPointer
Definition: itkBSplineInterpolationWeightFunctionBase.h:82
itk
Definition: itkAdvancedImageToImageMetric.h:40
itk::BSplineInterpolationWeightFunctionBase::Self
BSplineInterpolationWeightFunctionBase Self
Definition: itkBSplineInterpolationWeightFunctionBase.h:77
itk::BSplineInterpolationWeightFunctionBase::SecondOrderDerivativeKernelPointer
SecondOrderDerivativeKernelType::Pointer SecondOrderDerivativeKernelPointer
Definition: itkBSplineInterpolationWeightFunctionBase.h:143
itk::BSplineInterpolationWeightFunctionBase::PrintSelf
virtual void PrintSelf(std::ostream &os, Indent indent) const
itk::BSplineInterpolationWeightFunctionBase::m_OffsetToIndexTable
TableType m_OffsetToIndexTable
Definition: itkBSplineInterpolationWeightFunctionBase.h:169
itk::BSplineInterpolationWeightFunctionBase::KernelType
BSplineKernelFunction2< Self::SplineOrder > KernelType
Definition: itkBSplineInterpolationWeightFunctionBase.h:138
Array2D< unsigned long >
itk::BSplineKernelFunction2
B-spline kernel used for density estimation and nonparameteric regression.
Definition: itkBSplineKernelFunction2.h:60
itk::BSplineInterpolationWeightFunctionBase::InitializeOffsetToIndexTable
void InitializeOffsetToIndexTable(void)
float
itk::BSplineInterpolationWeightFunctionBase::m_SecondOrderDerivativeKernel
SecondOrderDerivativeKernelType::Pointer m_SecondOrderDerivativeKernel
Definition: itkBSplineInterpolationWeightFunctionBase.h:174
itk::BSplineInterpolationWeightFunctionBase::Superclass
FunctionBase< ContinuousIndex< TCoordRep, VSpaceDimension >, Array< double > > Superclass
Definition: itkBSplineInterpolationWeightFunctionBase.h:80


Generated on OURCE_DATE_EPOCH for elastix by doxygen 1.8.18 elastix logo