go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
itkCyclicBSplineDeformableTransform.h
Go to the documentation of this file.
1 /*======================================================================
2 
3 This file is part of the elastix software.
4 
5 Copyright (c) Erasmus MC University Medical Center Rotterdam.
6 See src/CopyrightElastix.txt or http://elastix.isi.uu.nl/legal.php for
7 details.
8 
9 This software is distributed WITHOUT ANY WARRANTY; without even
10 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11 PURPOSE. See the above copyright notices for more information.
12 
13 ======================================================================*/
14 #ifndef __itkCyclicBSplineDeformableTransform_h
15 #define __itkCyclicBSplineDeformableTransform_h
16 
17 #include "itkAdvancedTransform.h"
18 #include "itkImage.h"
19 #include "itkImageRegion.h"
25 
26 namespace itk
27 {
28 
36 template<
37 class TScalarType = double, // Data type for scalars
38 unsigned int NDimensions = 3, // Number of dimensions
39 unsigned int VSplineOrder = 3 >
40 // Spline order
42  public AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder >
43 {
44 public:
45 
49  TScalarType, NDimensions, VSplineOrder > Superclass;
50  typedef SmartPointer< Self > Pointer;
51  typedef SmartPointer< const Self > ConstPointer;
52 
54  itkNewMacro( Self );
55 
58 
60  itkStaticConstMacro( SpaceDimension, unsigned int, NDimensions );
61 
63  itkStaticConstMacro( SplineOrder, unsigned int, VSplineOrder );
64 
67  typedef typename Superclass
69  typedef typename Superclass
72  typedef typename Superclass
77 
79  typedef typename ParametersType::ValueType PixelType;
80  typedef Image< PixelType,
81  itkGetStaticConstMacro( SpaceDimension ) > ImageType;
82  typedef typename ImageType::Pointer ImagePointer;
83 
85  typedef typename RegionType::IndexType IndexType;
86  typedef typename RegionType::SizeType SizeType;
87  typedef typename ImageType::SpacingType SpacingType;
88  typedef typename ImageType::DirectionType DirectionType;
89  typedef typename ImageType::PointType OriginType;
90  typedef typename RegionType::IndexType GridOffsetType;
94  typedef typename Superclass::
96  typedef typename Superclass::
99  typedef typename Superclass::
101  typedef typename Superclass::
103  typedef typename Superclass::
106  itkGetStaticConstMacro( SpaceDimension ) - 1,
107  itkGetStaticConstMacro( SplineOrder ) > RedWeightsFunctionType;
108  typedef typename RedWeightsFunctionType::
110 
112  virtual void SetGridRegion( const RegionType & region );
113 
121  virtual void TransformPoint(
122  const InputPointType & inputPoint,
123  OutputPointType & outputPoint,
124  WeightsType & weights,
125  ParameterIndexArrayType & indices,
126  bool & inside ) const;
127 
129  virtual void GetJacobian(
130  const InputPointType & ipp,
131  WeightsType & weights,
132  ParameterIndexArrayType & indices ) const;
133 
135  virtual void GetSpatialJacobian(
136  const InputPointType & ipp,
137  SpatialJacobianType & sj ) const;
138 
139 protected:
140 
143 
145  NonZeroJacobianIndicesType & nonZeroJacobianIndices,
146  const RegionType & supportRegion ) const;
147 
149  bool InsideValidRegion( const ContinuousIndexType & index ) const;
150 
152  virtual void SplitRegion(
153  const RegionType & imageRegion,
154  const RegionType & inRegion,
155  RegionType & outRegion1,
156  RegionType & outRegion2 ) const;
157 
158 private:
159 
160  CyclicBSplineDeformableTransform( const Self & ); // purposely not implemented
161  void operator=( const Self & ); // purposely not implemented
162 
163 };
164 
165 } // namespace itk
166 
167 #ifndef ITK_MANUAL_INSTANTIATION
168 #include "itkCyclicBSplineDeformableTransform.hxx"
169 #endif
170 
171 #endif /* __itkCyclicBSplineDeformableTransform_h */
void ComputeNonZeroJacobianIndices(NonZeroJacobianIndicesType &nonZeroJacobianIndices, const RegionType &supportRegion) const
Deformable transform using a B-spline representation.
itkStaticConstMacro(SpaceDimension, unsigned int, NDimensions)
BSplineInterpolationWeightFunction2< ScalarType, itkGetStaticConstMacro(SpaceDimension)-1, itkGetStaticConstMacro(SplineOrder) > RedWeightsFunctionType
virtual void SetGridRegion(const RegionType &region)
ImageRegion< itkGetStaticConstMacro(SpaceDimension) > RegionType
Superclass::JacobianOfSpatialJacobianType JacobianOfSpatialJacobianType
BSplineInterpolationWeightFunction2< ScalarType, itkGetStaticConstMacro(SpaceDimension), itkGetStaticConstMacro(SplineOrder) > WeightsFunctionType
Returns the weights over the support region used for B-spline interpolation/reconstruction.
Superclass::JacobianOfSpatialHessianType JacobianOfSpatialHessianType
Superclass::NumberOfParametersType NumberOfParametersType
Deformable transform using a B-spline representation in which the B-spline grid is formulated in a cy...
Image< JacobianPixelType, itkGetStaticConstMacro(SpaceDimension) > JacobianImageType
Superclass::NonZeroJacobianIndicesType NonZeroJacobianIndicesType
Superclass::JacobianOfSpatialHessianType JacobianOfSpatialHessianType
WeightsFunctionType::ContinuousIndexType ContinuousIndexType
virtual void SplitRegion(const RegionType &imageRegion, const RegionType &inRegion, RegionType &outRegion1, RegionType &outRegion2) const
virtual void TransformPoint(const InputPointType &inputPoint, OutputPointType &outputPoint, WeightsType &weights, ParameterIndexArrayType &indices, bool &inside) const
Image< PixelType, itkGetStaticConstMacro(SpaceDimension) > ImageType
RedWeightsFunctionType::ContinuousIndexType RedContinuousIndexType
ContinuousIndex< ScalarType, SpaceDimension > ContinuousIndexType
Superclass::NonZeroJacobianIndicesType NonZeroJacobianIndicesType
bool InsideValidRegion(const ContinuousIndexType &index) const
AdvancedBSplineDeformableTransform< TScalarType, NDimensions, VSplineOrder > Superclass
Superclass::JacobianOfSpatialJacobianType JacobianOfSpatialJacobianType
virtual void GetSpatialJacobian(const InputPointType &ipp, SpatialJacobianType &sj) const
virtual void GetJacobian(const InputPointType &ipp, WeightsType &weights, ParameterIndexArrayType &indices) const
Superclass::ParameterIndexArrayType ParameterIndexArrayType


Generated on 11-03-2014 for elastix by doxygen 1.8.6 elastix logo