go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
itkAffineDTI3DTransform.h
Go to the documentation of this file.
1 /*======================================================================
2 
3  This file is part of the elastix software.
4 
5  Copyright (c) University Medical Center Utrecht. All rights reserved.
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 
15 /*=========================================================================
16 
17  Program: Insight Segmentation & Registration Toolkit
18  Module: $RCSfile: itkAffineDTI3DTransform.h,v $
19  Language: C++
20  Date: $Date: 2008-10-13 15:36:31 $
21  Version: $Revision: 1.14 $
22 
23  Copyright (c) Insight Software Consortium. All rights reserved.
24  See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
25 
26  This software is distributed WITHOUT ANY WARRANTY; without even
27  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
28  PURPOSE. See the above copyright notices for more information.
29 
30 =========================================================================*/
31 #ifndef __itkAffineDTI3DTransform_h
32 #define __itkAffineDTI3DTransform_h
33 
34 #include <iostream>
36 
37 namespace itk
38 {
39 
74 template < class TScalarType=double > // Data type for scalars (float or double)
75 class ITK_EXPORT AffineDTI3DTransform :
76  public AdvancedMatrixOffsetTransformBase< TScalarType,3,3 >
77 {
78 public:
82  typedef SmartPointer<Self> Pointer;
83  typedef SmartPointer<const Self> ConstPointer;
84 
86  itkNewMacro( Self );
87 
90 
92  itkStaticConstMacro( SpaceDimension, unsigned int, 3 );
93  itkStaticConstMacro( InputSpaceDimension, unsigned int, 3 );
94  itkStaticConstMacro( OutputSpaceDimension, unsigned int, 3 );
95  itkStaticConstMacro( ParametersDimension, unsigned int, 12 );
96 
97  typedef typename Superclass::ParametersType ParametersType;
98  typedef typename Superclass::NumberOfParametersType NumberOfParametersType;
99  typedef typename Superclass::JacobianType JacobianType;
100  typedef typename Superclass::ScalarType ScalarType;
101  typedef typename Superclass::InputVectorType InputVectorType;
102  typedef typename Superclass::OutputVectorType OutputVectorType;
103  typedef typename Superclass::InputCovariantVectorType InputCovariantVectorType;
104  typedef typename Superclass::OutputCovariantVectorType OutputCovariantVectorType;
105  typedef typename Superclass::InputVnlVectorType InputVnlVectorType;
106  typedef typename Superclass::OutputVnlVectorType OutputVnlVectorType;
107  typedef typename Superclass::InputPointType InputPointType;
108  typedef typename Superclass::OutputPointType OutputPointType;
109  typedef typename Superclass::MatrixType MatrixType;
110  typedef typename Superclass::InverseMatrixType InverseMatrixType;
111  typedef typename Superclass::CenterType CenterType;
112  typedef typename Superclass::TranslationType TranslationType;
113  typedef typename Superclass::OffsetType OffsetType;
114  typedef typename Superclass::ScalarType AngleType;
115 
116  typedef typename Superclass
117  ::NonZeroJacobianIndicesType NonZeroJacobianIndicesType;
118  typedef typename Superclass::SpatialJacobianType SpatialJacobianType;
119  typedef typename Superclass
120  ::JacobianOfSpatialJacobianType JacobianOfSpatialJacobianType;
121  typedef typename Superclass::SpatialHessianType SpatialHessianType;
122  typedef typename Superclass
123  ::JacobianOfSpatialHessianType JacobianOfSpatialHessianType;
124  typedef typename Superclass::InternalMatrixType InternalMatrixType;
125 
126  typedef FixedArray< ScalarType > ScalarArrayType;
127 
133  void SetParameters( const ParametersType & parameters );
134  const ParametersType & GetParameters(void) const;
135 
137  virtual void GetJacobian(
138  const InputPointType &,
139  JacobianType &,
140  NonZeroJacobianIndicesType & ) const;
141 
142  virtual void SetIdentity(void);
143 
144 protected:
146  AffineDTI3DTransform(const MatrixType & matrix,
147  const OutputPointType & offset);
148  AffineDTI3DTransform(unsigned int outputSpaceDims,
149  unsigned int paramsSpaceDims);
150 
152 
153  void PrintSelf(std::ostream &os, Indent indent) const;
154 
156  void SetVarAngleScaleShear(
157  ScalarArrayType angle,
158  ScalarArrayType shear,
159  ScalarArrayType scale );
160 
162  void ComputeMatrix(void);
163  void ComputeMatrixParameters(void);
164 
166  virtual void PrecomputeJacobianOfSpatialJacobian(void);
167 
168 private:
169  AffineDTI3DTransform(const Self&); //purposely not implemented
170  void operator=(const Self&); //purposely not implemented
171 
175 
176 }; //class AffineDTI3DTransform
177 
178 
179 } // namespace itk
180 
181 // Define instantiation macro for this template.
182 #define ITK_TEMPLATE_AffineDTI3DTransform(_, EXPORT, x, y) namespace itk { \
183  _(1(class EXPORT AffineDTI3DTransform< ITK_TEMPLATE_1 x >)) \
184  namespace Templates { typedef AffineDTI3DTransform< ITK_TEMPLATE_1 x > \
185  AffineDTI3DTransform##y; } \
186  }
187 
188 #if ITK_TEMPLATE_EXPLICIT
189 # include "Templates/itkAffineDTI3DTransform+-.h"
190 #endif
191 
192 #if ITK_TEMPLATE_TXX
193 # include "itkAffineDTI3DTransform.txx"
194 #endif
195 
196 #endif /* __itkAffineDTI3DTransform_h */
Superclass::InternalMatrixType InternalMatrixType
Superclass::ScalarType ScalarType
Superclass::OutputVnlVectorType OutputVnlVectorType
std::vector< unsigned long > NonZeroJacobianIndicesType
Superclass::JacobianType JacobianType
Superclass::OutputCovariantVectorType OutputCovariantVectorType
Superclass::InverseMatrixType InverseMatrixType
Superclass::CenterType CenterType
Superclass::SpatialHessianType SpatialHessianType
Superclass::InputCovariantVectorType InputCovariantVectorType
SmartPointer< const Self > ConstPointer
Superclass::OutputPointType OutputPointType
Superclass::InputPointType InputPointType
Superclass::NonZeroJacobianIndicesType NonZeroJacobianIndicesType
Superclass::OffsetType OffsetType
Superclass::InputVnlVectorType InputVnlVectorType
Superclass::ParametersType ParametersType
Transform maps points, vectors and covariant vectors from an input space to an output space...
AffineDTI3DTransform of a vector space (e.g. space coordinates)
Superclass::JacobianType JacobianType
Superclass::JacobianOfSpatialJacobianType JacobianOfSpatialJacobianType
AdvancedMatrixOffsetTransformBase< TScalarType, 3, 3 > Superclass
Superclass::ParametersType ParametersType
Superclass::MatrixType MatrixType
Superclass::TranslationType TranslationType
Superclass::OutputVectorType OutputVectorType
Superclass::ScalarType AngleType
Superclass::InputPointType InputPointType
Superclass::InputVectorType InputVectorType
Superclass::NumberOfParametersType NumberOfParametersType
Superclass::OutputPointType OutputPointType
Superclass::JacobianOfSpatialHessianType JacobianOfSpatialHessianType
FixedArray< ScalarType > ScalarArrayType
Superclass::SpatialJacobianType SpatialJacobianType


Generated on 04-01-2014 for elastix by doxygen 1.8.5 elastix logo