go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
Common/Transforms/itkAdvancedTranslationTransform.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 /*=========================================================================
19 
20  Program: Insight Segmentation & Registration Toolkit
21  Module: $RCSfile: itkAdvancedTranslationTransform.h,v $
22  Language: C++
23  Date: $Date: 2007-07-15 16:38:25 $
24  Version: $Revision: 1.36 $
25 
26  Copyright (c) Insight Software Consortium. All rights reserved.
27  See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
28 
29  This software is distributed WITHOUT ANY WARRANTY; without even
30  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
31  PURPOSE. See the above copyright notices for more information.
32 
33 =========================================================================*/
34 #ifndef __itkAdvancedTranslationTransform_h
35 #define __itkAdvancedTranslationTransform_h
36 
37 #include <iostream>
38 #include "itkAdvancedTransform.h"
39 #include "itkExceptionObject.h"
40 #include "itkMatrix.h"
41 
42 namespace itk
43 {
44 
52 template<
53 class TScalarType = double, // Data type for scalars (float or double)
54 unsigned int NDimensions = 3 >
55 // Number of dimensions
56 class ITK_EXPORT AdvancedTranslationTransform :
57  public AdvancedTransform< TScalarType, NDimensions, NDimensions >
58 {
59 public:
60 
65  typedef SmartPointer< const Self > ConstPointer;
66 
68  itkNewMacro( Self );
69 
72 
74  itkStaticConstMacro( SpaceDimension, unsigned int, NDimensions );
75  itkStaticConstMacro( ParametersDimension, unsigned int, NDimensions );
76 
78  typedef typename Superclass::ScalarType ScalarType;
79 
81  typedef typename Superclass::ParametersType ParametersType;
82  typedef typename Superclass::FixedParametersType FixedParametersType;
83  typedef typename Superclass::NumberOfParametersType NumberOfParametersType;
84  typedef typename Superclass::TransformCategoryType TransformCategoryType;
85 
87  typedef typename Superclass::JacobianType JacobianType;
88 
90  typedef Vector< TScalarType, itkGetStaticConstMacro( SpaceDimension ) > InputVectorType;
91  typedef Vector< TScalarType, itkGetStaticConstMacro( SpaceDimension ) > OutputVectorType;
92 
94  typedef CovariantVector< TScalarType, itkGetStaticConstMacro( SpaceDimension ) > InputCovariantVectorType;
95  typedef CovariantVector< TScalarType, itkGetStaticConstMacro( SpaceDimension ) > OutputCovariantVectorType;
96 
98  typedef vnl_vector_fixed< TScalarType, itkGetStaticConstMacro( SpaceDimension ) > InputVnlVectorType;
99  typedef vnl_vector_fixed< TScalarType, itkGetStaticConstMacro( SpaceDimension ) > OutputVnlVectorType;
100 
102  typedef Point< TScalarType, itkGetStaticConstMacro( SpaceDimension ) > InputPointType;
103  typedef Point< TScalarType, itkGetStaticConstMacro( SpaceDimension ) > OutputPointType;
104 
106  typedef typename Superclass
107  ::NonZeroJacobianIndicesType NonZeroJacobianIndicesType;
108  typedef typename Superclass::SpatialJacobianType SpatialJacobianType;
109  typedef typename Superclass
110  ::JacobianOfSpatialJacobianType JacobianOfSpatialJacobianType;
111  typedef typename Superclass::SpatialHessianType SpatialHessianType;
112  typedef typename Superclass
113  ::JacobianOfSpatialHessianType JacobianOfSpatialHessianType;
114  typedef typename Superclass::InternalMatrixType InternalMatrixType;
115 
119  const OutputVectorType & GetOffset( void ) const
120  { return m_Offset; }
121 
124  void SetParameters( const ParametersType & parameters );
125 
127  virtual const ParametersType & GetParameters( void ) const;
128 
132  void SetOffset( const OutputVectorType & offset )
133  { m_Offset = offset; return; }
134 
136  void Compose( const Self * other, bool pre = 0 );
137 
142  void Translate( const OutputVectorType & offset, bool pre = 0 );
143 
149 
151 
153 
155  const InputCovariantVectorType & vector ) const;
156 
160  inline InputPointType BackTransform( const OutputPointType & point ) const;
161 
162  inline InputVectorType BackTransform( const OutputVectorType & vector ) const;
163 
164  inline InputVnlVectorType BackTransform( const OutputVnlVectorType & vector ) const;
165 
167  const OutputCovariantVectorType & vector ) const;
168 
173  bool GetInverse( Self * inverse ) const;
174 
176  virtual void GetJacobian(
177  const InputPointType &,
178  JacobianType &,
179  NonZeroJacobianIndicesType & ) const;
180 
182  virtual void GetSpatialJacobian(
183  const InputPointType &,
184  SpatialJacobianType & ) const;
185 
187  virtual void GetSpatialHessian(
188  const InputPointType &,
189  SpatialHessianType & ) const;
190 
193  const InputPointType &,
195  NonZeroJacobianIndicesType & ) const;
196 
199  const InputPointType &,
202  NonZeroJacobianIndicesType & ) const;
203 
206  const InputPointType &,
208  NonZeroJacobianIndicesType & ) const;
209 
214  const InputPointType & ipp,
215  SpatialHessianType & sh,
217  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
218 
220  void SetIdentity( void );
221 
224  { return NDimensions; }
225 
231  virtual bool IsLinear() const { return true; }
232 
237  {
238  return Self::Linear;
239  }
240 
241 
245  virtual void SetFixedParameters( const FixedParametersType & )
246  { /* purposely blank */ }
247 
251  virtual const FixedParametersType & GetFixedParameters( void ) const
252  {
253  this->m_FixedParameters.SetSize( 0 );
254  return this->m_FixedParameters;
255  }
256 
257 
258 protected:
259 
263  void PrintSelf( std::ostream & os, Indent indent ) const;
264 
265 private:
266 
267  AdvancedTranslationTransform( const Self & ); //purposely not implemented
268  void operator=( const Self & ); //purposely not implemented
269 
270  OutputVectorType m_Offset; // Offset of the transformation
271 
278 
279 };
280 
281 //class AdvancedTranslationTransform
282 
283 // Back transform a point
284 template< class TScalarType, unsigned int NDimensions >
285 inline
288 {
289  return point - m_Offset;
290 }
291 
292 
293 // Back transform a vector
294 template< class TScalarType, unsigned int NDimensions >
295 inline
298 {
299  return vect;
300 }
301 
302 
303 // Back transform a vnl_vector
304 template< class TScalarType, unsigned int NDimensions >
305 inline
308 {
309  return vect;
310 }
311 
312 
313 // Back Transform a CovariantVector
314 template< class TScalarType, unsigned int NDimensions >
315 inline
318 {
319  return vect;
320 }
321 
322 
323 } // namespace itk
324 
325 #ifndef ITK_MANUAL_INSTANTIATION
326 #include "itkAdvancedTranslationTransform.hxx"
327 #endif
328 
329 #endif /* __itkAdvancedTranslationTransform_h */
itk::AdvancedTranslationTransform::IsLinear
virtual bool IsLinear() const
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:231
itk::AdvancedTransform< float, NDimensions, NDimensions >::OutputPointType
Superclass::OutputPointType OutputPointType
Definition: itkAdvancedTransform.h:125
itk::AdvancedTranslationTransform::InputVectorType
Vector< TScalarType, itkGetStaticConstMacro(SpaceDimension) > InputVectorType
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:90
itk::AdvancedTranslationTransform::SetIdentity
void SetIdentity(void)
itk::AdvancedTranslationTransform
Translation transformation of a vector space (e.g. space coordinates)
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:58
itk::AdvancedTranslationTransform::~AdvancedTranslationTransform
~AdvancedTranslationTransform()
itk::AdvancedTranslationTransform::itkStaticConstMacro
itkStaticConstMacro(SpaceDimension, unsigned int, NDimensions)
itk::AdvancedTranslationTransform::itkStaticConstMacro
itkStaticConstMacro(ParametersDimension, unsigned int, NDimensions)
itk::AdvancedTranslationTransform::m_JacobianOfSpatialJacobian
JacobianOfSpatialJacobianType m_JacobianOfSpatialJacobian
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:276
itk::AdvancedTranslationTransform::JacobianType
Superclass::JacobianType JacobianType
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:87
itk::AdvancedTranslationTransform::OutputVnlVectorType
vnl_vector_fixed< TScalarType, itkGetStaticConstMacro(SpaceDimension) > OutputVnlVectorType
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:99
itk::AdvancedTransform< float, NDimensions, NDimensions >::SpatialJacobianType
Matrix< ScalarType, OutputSpaceDimension, InputSpaceDimension > SpatialJacobianType
Definition: itkAdvancedTransform.h:143
itk::AdvancedTranslationTransform::OutputPointType
Point< TScalarType, itkGetStaticConstMacro(SpaceDimension) > OutputPointType
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:103
itk::AdvancedTranslationTransform::GetParameters
virtual const ParametersType & GetParameters(void) const
itk::AdvancedTranslationTransform::Superclass
AdvancedTransform< TScalarType, NDimensions, NDimensions > Superclass
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:63
itk::AdvancedTranslationTransform::GetNumberOfParameters
virtual NumberOfParametersType GetNumberOfParameters(void) const
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:223
itkAdvancedTransform.h
itk::AdvancedTranslationTransform::GetFixedParameters
virtual const FixedParametersType & GetFixedParameters(void) const
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:251
itk::AdvancedTransform< float, NDimensions, NDimensions >::InputCovariantVectorType
Superclass ::InputCovariantVectorType InputCovariantVectorType
Definition: itkAdvancedTransform.h:119
itk::AdvancedTranslationTransform::OutputCovariantVectorType
CovariantVector< TScalarType, itkGetStaticConstMacro(SpaceDimension) > OutputCovariantVectorType
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:95
itk::AdvancedTranslationTransform::AdvancedTranslationTransform
AdvancedTranslationTransform(const Self &)
itk::AdvancedTransform< float, NDimensions, NDimensions >::InputPointType
Superclass::InputPointType InputPointType
Definition: itkAdvancedTransform.h:124
itk::AdvancedTranslationTransform::FixedParametersType
Superclass::FixedParametersType FixedParametersType
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:82
SmartPointer< Self >
itk::AdvancedTransform< float, NDimensions, NDimensions >::InputVnlVectorType
Superclass::InputVnlVectorType InputVnlVectorType
Definition: itkAdvancedTransform.h:122
itk::AdvancedTranslationTransform::InputVnlVectorType
vnl_vector_fixed< TScalarType, itkGetStaticConstMacro(SpaceDimension) > InputVnlVectorType
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:98
itk::AdvancedTranslationTransform::SetFixedParameters
virtual void SetFixedParameters(const FixedParametersType &)
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:245
itk::AdvancedTranslationTransform::TransformCategoryType
Superclass::TransformCategoryType TransformCategoryType
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:84
itk::AdvancedTranslationTransform::GetInverse
bool GetInverse(Self *inverse) const
itk::AdvancedTranslationTransform::SetOffset
void SetOffset(const OutputVectorType &offset)
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:132
itk::AdvancedTranslationTransform::GetJacobianOfSpatialJacobian
virtual void GetJacobianOfSpatialJacobian(const InputPointType &, SpatialJacobianType &, JacobianOfSpatialJacobianType &, NonZeroJacobianIndicesType &) const
itk::AdvancedTranslationTransform::m_NonZeroJacobianIndices
NonZeroJacobianIndicesType m_NonZeroJacobianIndices
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:275
itk::AdvancedTranslationTransform::ConstPointer
SmartPointer< const Self > ConstPointer
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:65
itk::AdvancedTransform< float, NDimensions, NDimensions >::JacobianOfSpatialHessianType
std::vector< SpatialHessianType > JacobianOfSpatialHessianType
Definition: itkAdvancedTransform.h:150
itk::AdvancedTranslationTransform::AdvancedTranslationTransform
AdvancedTranslationTransform()
itk::AdvancedTranslationTransform::BackTransform
InputVnlVectorType BackTransform(const OutputVnlVectorType &vector) const
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:307
itk::AdvancedTranslationTransform::SetParameters
void SetParameters(const ParametersType &parameters)
itk::AdvancedTranslationTransform::PrintSelf
void PrintSelf(std::ostream &os, Indent indent) const
itk::AdvancedTranslationTransform::TransformVector
OutputVnlVectorType TransformVector(const InputVnlVectorType &vector) const
itk::AdvancedTranslationTransform::JacobianOfSpatialJacobianType
Superclass ::JacobianOfSpatialJacobianType JacobianOfSpatialJacobianType
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:110
itk::AdvancedTranslationTransform::SpatialJacobianType
Superclass::SpatialJacobianType SpatialJacobianType
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:108
itk::AdvancedTranslationTransform::GetSpatialJacobian
virtual void GetSpatialJacobian(const InputPointType &, SpatialJacobianType &) const
itk::AdvancedTranslationTransform::GetOffset
const OutputVectorType & GetOffset(void) const
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:119
itk::AdvancedTranslationTransform::NumberOfParametersType
Superclass::NumberOfParametersType NumberOfParametersType
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:83
itk::AdvancedTranslationTransform::InputPointType
Point< TScalarType, itkGetStaticConstMacro(SpaceDimension) > InputPointType
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:102
itk::AdvancedTranslationTransform::InternalMatrixType
Superclass::InternalMatrixType InternalMatrixType
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:114
itk::AdvancedTranslationTransform::JacobianOfSpatialHessianType
Superclass ::JacobianOfSpatialHessianType JacobianOfSpatialHessianType
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:113
itk::AdvancedTranslationTransform::m_JacobianOfSpatialHessian
JacobianOfSpatialHessianType m_JacobianOfSpatialHessian
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:277
itk::AdvancedTranslationTransform::TransformCovariantVector
OutputCovariantVectorType TransformCovariantVector(const InputCovariantVectorType &vector) const
itk::AdvancedTranslationTransform::InputCovariantVectorType
CovariantVector< TScalarType, itkGetStaticConstMacro(SpaceDimension) > InputCovariantVectorType
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:94
double
itk::AdvancedTranslationTransform::GetJacobianOfSpatialJacobian
virtual void GetJacobianOfSpatialJacobian(const InputPointType &, JacobianOfSpatialJacobianType &, NonZeroJacobianIndicesType &) const
itk::AdvancedTransform< float, NDimensions, NDimensions >::JacobianType
Superclass::JacobianType JacobianType
Definition: itkAdvancedTransform.h:115
itk::AdvancedTranslationTransform::Pointer
SmartPointer< Self > Pointer
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:64
itk::AdvancedTransform
Transform maps points, vectors and covariant vectors from an input space to an output space.
Definition: itkAdvancedTransform.h:87
itk::AdvancedTranslationTransform::m_SpatialHessian
SpatialHessianType m_SpatialHessian
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:274
itk::AdvancedTranslationTransform::BackTransform
InputVectorType BackTransform(const OutputVectorType &vector) const
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:297
itk::AdvancedTranslationTransform::m_LocalJacobian
JacobianType m_LocalJacobian
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:272
itk::AdvancedTransform< float, NDimensions, NDimensions >::SpatialHessianType
FixedArray< Matrix< ScalarType, InputSpaceDimension, InputSpaceDimension >, OutputSpaceDimension > SpatialHessianType
Definition: itkAdvancedTransform.h:149
itk::AdvancedTransform< float, NDimensions, NDimensions >::InputVectorType
Superclass::InputVectorType InputVectorType
Definition: itkAdvancedTransform.h:116
itk::AdvancedTranslationTransform::GetJacobianOfSpatialHessian
virtual void GetJacobianOfSpatialHessian(const InputPointType &, JacobianOfSpatialHessianType &, NonZeroJacobianIndicesType &) const
itk::AdvancedTranslationTransform::Compose
void Compose(const Self *other, bool pre=0)
itk::AdvancedTranslationTransform::OutputVectorType
Vector< TScalarType, itkGetStaticConstMacro(SpaceDimension) > OutputVectorType
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:91
itk::AdvancedTranslationTransform::TransformPoint
OutputPointType TransformPoint(const InputPointType &point) const
itk::AdvancedTranslationTransform::ScalarType
Superclass::ScalarType ScalarType
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:78
itk::AdvancedTranslationTransform::operator=
void operator=(const Self &)
itk::AdvancedTransform< float, NDimensions, NDimensions >::JacobianOfSpatialJacobianType
std::vector< SpatialJacobianType > JacobianOfSpatialJacobianType
Definition: itkAdvancedTransform.h:144
itk::AdvancedTranslationTransform::GetJacobian
virtual void GetJacobian(const InputPointType &, JacobianType &, NonZeroJacobianIndicesType &) const
itk::AdvancedTransform< float, NDimensions, NDimensions >::NonZeroJacobianIndicesType
std::vector< unsigned long > NonZeroJacobianIndicesType
Definition: itkAdvancedTransform.h:141
itk
Definition: itkAdvancedImageToImageMetric.h:40
itk::AdvancedTranslationTransform::TransformVector
OutputVectorType TransformVector(const InputVectorType &vector) const
itk::AdvancedTransform< float, NDimensions, NDimensions >::OutputVectorType
Superclass::OutputVectorType OutputVectorType
Definition: itkAdvancedTransform.h:117
itk::AdvancedTranslationTransform::m_Offset
OutputVectorType m_Offset
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:270
itk::AdvancedTranslationTransform::GetTransformCategory
virtual TransformCategoryType GetTransformCategory() const
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:236
itk::AdvancedTranslationTransform::ParametersType
Superclass::ParametersType ParametersType
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:81
itk::AdvancedTranslationTransform::GetJacobianOfSpatialHessian
virtual void GetJacobianOfSpatialHessian(const InputPointType &ipp, SpatialHessianType &sh, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
itk::AdvancedTranslationTransform::BackTransform
InputPointType BackTransform(const OutputPointType &point) const
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:287
itk::AdvancedTransform< float, NDimensions, NDimensions >::NumberOfParametersType
Superclass::NumberOfParametersType NumberOfParametersType
Definition: itkAdvancedTransform.h:113
itk::AdvancedTranslationTransform::BackTransform
InputCovariantVectorType BackTransform(const OutputCovariantVectorType &vector) const
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:317
itk::AdvancedTranslationTransform::m_SpatialJacobian
SpatialJacobianType m_SpatialJacobian
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:273
TScalarType
itk::AdvancedTranslationTransform::Self
AdvancedTranslationTransform Self
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:62
itk::AdvancedTranslationTransform::Translate
void Translate(const OutputVectorType &offset, bool pre=0)
itk::AdvancedTranslationTransform::SpatialHessianType
Superclass::SpatialHessianType SpatialHessianType
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:111
itk::AdvancedTransform< float, NDimensions, NDimensions >::ParametersType
Superclass::ParametersType ParametersType
Definition: itkAdvancedTransform.h:110
itk::AdvancedTranslationTransform::GetSpatialHessian
virtual void GetSpatialHessian(const InputPointType &, SpatialHessianType &) const
itk::AdvancedTransform< float, NDimensions, NDimensions >::OutputVnlVectorType
Superclass::OutputVnlVectorType OutputVnlVectorType
Definition: itkAdvancedTransform.h:123
itk::AdvancedTranslationTransform::NonZeroJacobianIndicesType
Superclass ::NonZeroJacobianIndicesType NonZeroJacobianIndicesType
Definition: Common/Transforms/itkAdvancedTranslationTransform.h:107
itk::AdvancedTransform< float, NDimensions, NDimensions >::OutputCovariantVectorType
Superclass ::OutputCovariantVectorType OutputCovariantVectorType
Definition: itkAdvancedTransform.h:121
itk::AdvancedTransform< float, NDimensions, NDimensions >::FixedParametersType
Superclass::FixedParametersType FixedParametersType
Definition: itkAdvancedTransform.h:111


Generated on OURCE_DATE_EPOCH for elastix by doxygen 1.8.18 elastix logo