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::JacobianType JacobianType;
99  typedef typename Superclass::ScalarType ScalarType;
100  typedef typename Superclass::InputVectorType InputVectorType;
101  typedef typename Superclass::OutputVectorType OutputVectorType;
102  typedef typename Superclass::InputCovariantVectorType InputCovariantVectorType;
103  typedef typename Superclass::OutputCovariantVectorType OutputCovariantVectorType;
104  typedef typename Superclass::InputVnlVectorType InputVnlVectorType;
105  typedef typename Superclass::OutputVnlVectorType OutputVnlVectorType;
106  typedef typename Superclass::InputPointType InputPointType;
107  typedef typename Superclass::OutputPointType OutputPointType;
108  typedef typename Superclass::MatrixType MatrixType;
109  typedef typename Superclass::InverseMatrixType InverseMatrixType;
110  typedef typename Superclass::CenterType CenterType;
111  typedef typename Superclass::TranslationType TranslationType;
112  typedef typename Superclass::OffsetType OffsetType;
113  typedef typename Superclass::ScalarType AngleType;
114 
115  typedef typename Superclass
116  ::NonZeroJacobianIndicesType NonZeroJacobianIndicesType;
117  typedef typename Superclass::SpatialJacobianType SpatialJacobianType;
118  typedef typename Superclass
119  ::JacobianOfSpatialJacobianType JacobianOfSpatialJacobianType;
120  typedef typename Superclass::SpatialHessianType SpatialHessianType;
121  typedef typename Superclass
122  ::JacobianOfSpatialHessianType JacobianOfSpatialHessianType;
123  typedef typename Superclass::InternalMatrixType InternalMatrixType;
124 
125  typedef FixedArray< ScalarType > ScalarArrayType;
126 
132  void SetParameters( const ParametersType & parameters );
133  const ParametersType & GetParameters(void) const;
134 
136  virtual void GetJacobian(
137  const InputPointType &,
138  JacobianType &,
139  NonZeroJacobianIndicesType & ) const;
140 
141  virtual void SetIdentity(void);
142 
143 protected:
145  AffineDTI3DTransform(const MatrixType & matrix,
146  const OutputPointType & offset);
147  AffineDTI3DTransform(unsigned int outputSpaceDims,
148  unsigned int paramsSpaceDims);
149 
151 
152  void PrintSelf(std::ostream &os, Indent indent) const;
153 
155  void SetVarAngleScaleShear(
156  ScalarArrayType angle,
157  ScalarArrayType shear,
158  ScalarArrayType scale );
159 
161  void ComputeMatrix(void);
162  void ComputeMatrixParameters(void);
163 
165  virtual void PrecomputeJacobianOfSpatialJacobian(void);
166 
167 private:
168  AffineDTI3DTransform(const Self&); //purposely not implemented
169  void operator=(const Self&); //purposely not implemented
170 
174 
175 }; //class AffineDTI3DTransform
176 
177 
178 } // namespace itk
179 
180 // Define instantiation macro for this template.
181 #define ITK_TEMPLATE_AffineDTI3DTransform(_, EXPORT, x, y) namespace itk { \
182  _(1(class EXPORT AffineDTI3DTransform< ITK_TEMPLATE_1 x >)) \
183  namespace Templates { typedef AffineDTI3DTransform< ITK_TEMPLATE_1 x > \
184  AffineDTI3DTransform##y; } \
185  }
186 
187 #if ITK_TEMPLATE_EXPLICIT
188 # include "Templates/itkAffineDTI3DTransform+-.h"
189 #endif
190 
191 #if ITK_TEMPLATE_TXX
192 # include "itkAffineDTI3DTransform.txx"
193 #endif
194 
195 #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::OutputPointType OutputPointType
Superclass::JacobianOfSpatialHessianType JacobianOfSpatialHessianType
FixedArray< ScalarType > ScalarArrayType
Superclass::SpatialJacobianType SpatialJacobianType


Generated on 05-12-2013 for elastix by doxygen 1.8.5 elastix logo