Slicer  4.8
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
itkWarpTransform3D.h
Go to the documentation of this file.
1 #ifndef itkWarpTransform3D_h
2 #define itkWarpTransform3D_h
3 
4 #include <itkTransform.h>
6 #include <itkImage.h>
7 #include "itkConstNeighborhoodIterator.h"
8 
9 namespace itk
10 {
15 template <class FieldData>
16 class WarpTransform3D : public Transform<FieldData, 3, 3>
17 {
18 public:
19  typedef FieldData FieldDataType;
21  typedef Transform<FieldDataType, 3, 3> Superclass;
22  typedef typename Superclass::JacobianType JacobianType;
23  typedef typename Superclass::InputPointType InputPointType;
24  typedef typename Superclass::InputVectorType InputVectorType;
25  typedef typename Superclass::InputVnlVectorType InputVnlVectorType;
26  typedef typename Superclass::InputCovariantVectorType InputCovariantVectorType;
27  typedef typename Superclass::OutputPointType OutputPointType;
28  typedef typename Superclass::OutputVectorType OutputVectorType;
29  typedef typename Superclass::OutputVnlVectorType OutputVnlVectorType;
30  typedef typename Superclass::OutputCovariantVectorType OutputCovariantVectorType;
31  typedef DeformationImageType::Pointer DeformationImagePointerType;
32  typedef SmartPointer<Self> Pointer;
33  typedef SmartPointer<const Self> ConstPointer;
34  typedef ConstNeighborhoodIterator<DeformationImageType> ConstNeighborhoodIteratorType;
35  typedef typename ConstNeighborhoodIteratorType::RadiusType RadiusType;
36  typedef typename Superclass::ParametersType ParametersType;
37 
41  static Pointer New(void);
42 
45  virtual::itk::LightObject::Pointer CreateAnother(void) const ITK_OVERRIDE;
46 
48  itkTypeMacro(WarpTransform3D, Transform);
49 
50  OutputPointType TransformPoint( const InputPointType & inputPoint ) const ITK_OVERRIDE;
51 
52  virtual void ComputeJacobianWithRespectToParameters(const InputPointType & p, JacobianType & jacobian ) const ITK_OVERRIDE;
53 
55  const InputPointType & itkNotUsed(x),
56  JacobianType & itkNotUsed(j) ) const ITK_OVERRIDE
57  {
58  itkExceptionMacro("ComputeJacobianWithRespectToPosition is not implemented for WarpTransform3D");
59  }
60 
61  void SetDeformationField( DeformationImagePointerType deformationField );
62 
63  const DeformationImagePointerType GetDeformationField() const
64  {
65  return m_DeformationField;
66  }
67 
68  using Superclass::TransformVector;
70  virtual OutputVectorType TransformVector(const InputVectorType &) const ITK_OVERRIDE
71  {
72  itkExceptionMacro("TransformVector(const InputVectorType &) is not implemented for WarpTransform3D");
73  }
74 
76  virtual OutputVnlVectorType TransformVector(const InputVnlVectorType &) const ITK_OVERRIDE
77  {
78  itkExceptionMacro("TransformVector(const InputVnlVectorType &) is not implemented for WarpTransform3D");
79  }
80 
81  using Superclass::TransformCovariantVector;
83  virtual OutputCovariantVectorType TransformCovariantVector(const InputCovariantVectorType &) const ITK_OVERRIDE
84  {
86  "TransformCovariantVector(const InputCovariantVectorType & is not implemented for WarpTransform3D");
87  }
88 
89 protected:
91  itkGetConstReferenceMacro( NeighborhoodRadius, RadiusType );
92  itkSetMacro( NeighborhoodRadius, RadiusType );
93 
97  virtual void SetParameters(const ParametersType &) ITK_OVERRIDE
98  {
99  }
103  virtual void SetFixedParameters(const ParametersType &) ITK_OVERRIDE
104  {
105  }
106 
107  WarpTransform3D();
108  void operator=(const Self &); // purposely not implemented
109 
112  DeformationImagePointerType m_DeformationField;
113 // Vector< double , 3 > m_OutputSpacing ;
115 };
116 
117 } // end namespace itk
118 
119 #ifndef ITK_MANUAL_INSTANTIATION
120 #include "itkWarpTransform3D.txx"
121 #endif
122 
123 #endif
#define itkExceptionMacro(x)
const DeformationImagePointerType GetDeformationField() const
ConstNeighborhoodIterator< DeformationImageType > ConstNeighborhoodIteratorType
virtual void ComputeJacobianWithRespectToParameters(const InputPointType &p, JacobianType &jacobian) const ITK_OVERRIDE
itkGetConstReferenceMacro(NeighborhoodRadius, RadiusType)
Superclass::JacobianType JacobianType
Superclass::InputVnlVectorType InputVnlVectorType
Superclass::OutputCovariantVectorType OutputCovariantVectorType
virtual OutputCovariantVectorType TransformCovariantVector(const InputCovariantVectorType &) const ITK_OVERRIDE
Simplified inverse ITK transforms.
virtual void SetParameters(const ParametersType &) ITK_OVERRIDE
itkSetMacro(NeighborhoodRadius, RadiusType)
Superclass::InputVectorType InputVectorType
virtual OutputVnlVectorType TransformVector(const InputVnlVectorType &) const ITK_OVERRIDE
virtual ::itk::LightObject::Pointer CreateAnother(void) const ITK_OVERRIDE
DeformationImageType::Pointer DeformationImagePointerType
Superclass::ParametersType ParametersType
void SetDeformationField(DeformationImagePointerType deformationField)
static Pointer New(void)
DeformationImagePointerType m_DeformationField
Superclass::OutputVnlVectorType OutputVnlVectorType
Superclass::InputPointType InputPointType
Superclass::InputCovariantVectorType InputCovariantVectorType
itkTypeMacro(WarpTransform3D, Transform)
virtual OutputVectorType TransformVector(const InputVectorType &) const ITK_OVERRIDE
Superclass::OutputVectorType OutputVectorType
OutputPointType TransformPoint(const InputPointType &inputPoint) const ITK_OVERRIDE
void operator=(const Self &)
SmartPointer< Self > Pointer
Superclass::OutputPointType OutputPointType
SmartPointer< const Self > ConstPointer
ConstNeighborhoodIteratorType::RadiusType RadiusType
virtual void ComputeJacobianWithRespectToPosition(const InputPointType &itkNotUsed(x), JacobianType &itkNotUsed(j)) const ITK_OVERRIDE
Transform< FieldDataType, 3, 3 > Superclass
virtual void SetFixedParameters(const ParametersType &) ITK_OVERRIDE