go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
itkAdvancedCombinationTransform.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 #ifndef __itkAdvancedCombinationTransform_h
16 #define __itkAdvancedCombinationTransform_h
17 
18 #include "itkAdvancedTransform.h"
19 #include "itkExceptionObject.h"
20 
21 
22 namespace itk
23 {
24 
53 template < typename TScalarType, unsigned int NDimensions = 3 >
55  public AdvancedTransform<TScalarType, NDimensions, NDimensions>
56 {
57 public:
60  typedef AdvancedTransform< TScalarType,
61  NDimensions, NDimensions > Superclass;
62  typedef SmartPointer< Self > Pointer;
63  typedef SmartPointer< const Self > ConstPointer;
64 
66  itkNewMacro( Self );
67 
70 
72  itkStaticConstMacro( SpaceDimension, unsigned int, NDimensions );
73 
92 
97 
101 
103  virtual void SetInitialTransform( const InitialTransformType * _arg );
104  itkGetConstObjectMacro( InitialTransform, InitialTransformType );
105 
110  virtual void SetCurrentTransform( CurrentTransformType * _arg );
111  itkGetObjectMacro( CurrentTransform, CurrentTransformType );
112 
114  virtual void SetUseComposition( bool _arg );
115  itkGetConstMacro( UseComposition, bool );
116 
118  virtual void SetUseAddition( bool _arg );
119  itkGetConstMacro( UseAddition, bool );
120 
122  virtual OutputPointType TransformPoint( const InputPointType & point ) const;
123 
125  virtual unsigned int GetNumberOfParameters( void ) const;
126 
128  virtual unsigned long GetNumberOfNonZeroJacobianIndices( void ) const;
129 
131  virtual const ParametersType & GetParameters( void ) const;
132 
134  virtual const ParametersType & GetFixedParameters( void ) const;
135 
137  virtual void SetParameters( const ParametersType & param );
138 
142  virtual void SetParametersByValue( const ParametersType & param );
143 
145  virtual void SetFixedParameters( const ParametersType & fixedParam );
146 
157  virtual bool GetInverse( Self* inverse ) const;
158 
161  virtual bool IsLinear( void ) const;
162 
164  virtual bool GetHasNonZeroSpatialHessian( void ) const;
165  virtual bool HasNonZeroJacobianOfSpatialHessian( void ) const;
166 
168  virtual const JacobianType & GetJacobian( const InputPointType & point ) const;
169 
171  virtual void GetJacobian(
172  const InputPointType & ipp,
173  JacobianType & j,
174  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
175 
177  virtual void GetSpatialJacobian(
178  const InputPointType & ipp,
179  SpatialJacobianType & sj ) const;
180 
182  virtual void GetSpatialHessian(
183  const InputPointType & ipp,
184  SpatialHessianType & sh ) const;
185 
187  virtual void GetJacobianOfSpatialJacobian(
188  const InputPointType & ipp,
190  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
191 
195  virtual void GetJacobianOfSpatialJacobian(
196  const InputPointType & ipp,
197  SpatialJacobianType & sj,
199  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
200 
202  virtual void GetJacobianOfSpatialHessian(
203  const InputPointType & ipp,
205  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
206 
210  virtual void GetJacobianOfSpatialHessian(
211  const InputPointType & ipp,
212  SpatialHessianType & sh,
214  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
215 
218  typedef const JacobianType & (Self::*GetJacobianFunctionPointer)( const InputPointType & ) const;
220  const InputPointType &,
221  JacobianType &,
222  NonZeroJacobianIndicesType & ) const;
224  const InputPointType &,
225  SpatialJacobianType & ) const;
227  const InputPointType &,
228  SpatialHessianType & ) const;
230  const InputPointType &,
232  NonZeroJacobianIndicesType & ) const;
234  const InputPointType &,
237  NonZeroJacobianIndicesType & ) const;
239  const InputPointType &,
241  NonZeroJacobianIndicesType & ) const;
243  const InputPointType &,
246  NonZeroJacobianIndicesType & ) const;
247 
248 protected:
249 
252 
255 
259 
263  virtual void UpdateCombinationMethod( void );
264 
266  virtual void NoCurrentTransformSet( void ) const throw (ExceptionObject);
267 
275 
283 
292 
299  const InputPointType & point ) const;
300 
305  const InputPointType & point ) const;
306 
309  const InputPointType & point ) const;
310 
313  const InputPointType & point ) const;
314 
320  inline const JacobianType & GetJacobianUseAddition(
321  const InputPointType & point ) const;
322 
327  const InputPointType & point ) const;
328 
331  const InputPointType & point ) const;
332 
335  const InputPointType & point ) const;
336 
342  inline void GetJacobianUseAddition(
343  const InputPointType &,
344  JacobianType &,
345  NonZeroJacobianIndicesType & ) const;
346 
350  inline void GetJacobianUseComposition(
351  const InputPointType &,
352  JacobianType &,
353  NonZeroJacobianIndicesType & ) const;
354 
356  inline void GetJacobianNoInitialTransform(
357  const InputPointType &,
358  JacobianType &,
359  NonZeroJacobianIndicesType & ) const;
360 
362  inline void GetJacobianNoCurrentTransform(
363  const InputPointType &,
364  JacobianType &,
365  NonZeroJacobianIndicesType & ) const;
366 
372  inline void GetSpatialJacobianUseAddition(
373  const InputPointType & ipp,
374  SpatialJacobianType & sj ) const;
375 
380  const InputPointType & ipp,
381  SpatialJacobianType & sj ) const;
382 
385  const InputPointType & ipp,
386  SpatialJacobianType & sj ) const;
387 
390  const InputPointType & ipp,
391  SpatialJacobianType & sj ) const;
392 
398  inline void GetSpatialHessianUseAddition(
399  const InputPointType & ipp,
400  SpatialHessianType & sh ) const;
401 
406  const InputPointType & ipp,
407  SpatialHessianType & sh ) const;
408 
411  const InputPointType & ipp,
412  SpatialHessianType & sh ) const;
413 
416  const InputPointType & ipp,
417  SpatialHessianType & sh ) const;
418 
425  const InputPointType & ipp,
427  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
428 
430  const InputPointType & ipp,
431  SpatialJacobianType & sj,
433  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
434 
439  const InputPointType & ipp,
441  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
442 
444  const InputPointType & ipp,
445  SpatialJacobianType & sj,
447  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
448 
451  const InputPointType & ipp,
453  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
454 
456  const InputPointType & ipp,
457  SpatialJacobianType & sj,
459  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
460 
463  const InputPointType & ipp,
465  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
466 
468  const InputPointType & ipp,
469  SpatialJacobianType & sj,
471  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
472 
479  const InputPointType & ipp,
481  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
482 
484  const InputPointType & ipp,
485  SpatialHessianType & sh,
487  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
488 
493  const InputPointType & ipp,
495  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
496 
497  virtual inline void GetJacobianOfSpatialHessianUseComposition(
498  const InputPointType & ipp,
499  SpatialHessianType & sh,
501  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
502 
505  const InputPointType & ipp,
507  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
508 
510  const InputPointType & ipp,
511  SpatialHessianType & sh,
513  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
514 
517  const InputPointType & ipp,
519  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
520 
522  const InputPointType & ipp,
523  SpatialHessianType & sh,
525  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
526 
530 
531 private:
532 
533  AdvancedCombinationTransform( const Self& ); // purposely not implemented
534  void operator=( const Self& ); // purposely not implemented
535 
536 }; // end class AdvancedCombinationTransform
537 
538 
539 } // end namespace itk
540 
541 
542 #ifndef ITK_MANUAL_INSTANTIATION
543 #include "itkAdvancedCombinationTransform.hxx"
544 #endif
545 
546 
547 #endif // end #ifndef __itkAdvancedCombinationTransform_h
548 
This class combines two transforms: an &#39;initial transform&#39; with a &#39;current transform&#39;.
Superclass::InputCovariantVectorType InputCovariantVectorType
Superclass::SpatialHessianType SpatialHessianType
GetSpatialHessianFunctionPointer m_SelectedGetSpatialHessianFunction
void(Self::* GetJacobianOfSpatialJacobianFunctionPointer)(const InputPointType &, JacobianOfSpatialJacobianType &, NonZeroJacobianIndicesType &) const
OutputPointType TransformPointUseAddition(const InputPointType &point) const
Superclass::OutputCovariantVectorType OutputCovariantVectorType
itkStaticConstMacro(SpaceDimension, unsigned int, NDimensions)
const JacobianType & GetJacobianNoInitialTransform(const InputPointType &point) const
virtual void GetJacobianOfSpatialHessian(const InputPointType &ipp, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
virtual bool IsLinear(void) const
Superclass::JacobianOfSpatialJacobianType JacobianOfSpatialJacobianType
void GetSpatialJacobianNoInitialTransform(const InputPointType &ipp, SpatialJacobianType &sj) const
void(Self::* GetJacobianOfSpatialHessianFunctionPointer2)(const InputPointType &, SpatialHessianType &, JacobianOfSpatialHessianType &, NonZeroJacobianIndicesType &) const
const JacobianType & GetJacobianNoCurrentTransform(const InputPointType &point) const
Superclass::JacobianOfSpatialHessianType JacobianOfSpatialHessianType
void GetSpatialHessianUseAddition(const InputPointType &ipp, SpatialHessianType &sh) const
GetSparseJacobianFunctionPointer m_SelectedGetSparseJacobianFunction
const JacobianType & GetJacobianUseAddition(const InputPointType &point) const
OutputPointType TransformPointNoCurrentTransform(const InputPointType &point) const
InitialTransformType::Pointer InitialTransformPointer
virtual void SetUseAddition(bool _arg)
void GetSpatialHessianNoCurrentTransform(const InputPointType &ipp, SpatialHessianType &sh) const
void GetSpatialHessianNoInitialTransform(const InputPointType &ipp, SpatialHessianType &sh) const
virtual void SetFixedParameters(const ParametersType &fixedParam)
virtual void GetSpatialHessian(const InputPointType &ipp, SpatialHessianType &sh) const
void(Self::* GetJacobianOfSpatialJacobianFunctionPointer2)(const InputPointType &, SpatialJacobianType &, JacobianOfSpatialJacobianType &, NonZeroJacobianIndicesType &) const
void GetJacobianOfSpatialJacobianUseComposition(const InputPointType &ipp, JacobianOfSpatialJacobianType &jsj, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
virtual OutputPointType TransformPoint(const InputPointType &point) const
void GetSpatialJacobianUseAddition(const InputPointType &ipp, SpatialJacobianType &sj) const
void GetJacobianOfSpatialHessianUseComposition(const InputPointType &ipp, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
const JacobianType &(Self::* GetJacobianFunctionPointer)(const InputPointType &) const
virtual void SetInitialTransform(const InitialTransformType *_arg)
virtual bool HasNonZeroJacobianOfSpatialHessian(void) const
void(Self::* GetJacobianOfSpatialHessianFunctionPointer)(const InputPointType &, JacobianOfSpatialHessianType &, NonZeroJacobianIndicesType &) const
virtual void SetCurrentTransform(CurrentTransformType *_arg)
Transform maps points, vectors and covariant vectors from an input space to an output space...
virtual void SetUseComposition(bool _arg)
TransformPointFunctionPointer m_SelectedTransformPointFunction
CurrentTransformType::Pointer CurrentTransformPointer
void GetJacobianOfSpatialJacobianNoCurrentTransform(const InputPointType &ipp, JacobianOfSpatialJacobianType &jsj, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
void GetSpatialHessianUseComposition(const InputPointType &ipp, SpatialHessianType &sh) const
OutputPointType(Self::* TransformPointFunctionPointer)(const InputPointType &) const
GetJacobianOfSpatialJacobianFunctionPointer m_SelectedGetJacobianOfSpatialJacobianFunction
Superclass::SpatialJacobianType SpatialJacobianType
GetSpatialJacobianFunctionPointer m_SelectedGetSpatialJacobianFunction
GetJacobianOfSpatialJacobianFunctionPointer2 m_SelectedGetJacobianOfSpatialJacobianFunction2
GetJacobianFunctionPointer m_SelectedGetJacobianFunction
InitialTransformType::ConstPointer InitialTransformConstPointer
virtual bool GetInverse(Self *inverse) const
void(Self::* GetSpatialHessianFunctionPointer)(const InputPointType &, SpatialHessianType &) const
virtual void SetParametersByValue(const ParametersType &param)
GetJacobianOfSpatialHessianFunctionPointer m_SelectedGetJacobianOfSpatialHessianFunction
virtual unsigned long GetNumberOfNonZeroJacobianIndices(void) const
void GetJacobianOfSpatialHessianUseAddition(const InputPointType &ipp, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
void(Self::* GetSparseJacobianFunctionPointer)(const InputPointType &, JacobianType &, NonZeroJacobianIndicesType &) const
virtual bool GetHasNonZeroSpatialHessian(void) const
const JacobianType & GetJacobianUseComposition(const InputPointType &point) const
void GetSpatialJacobianNoCurrentTransform(const InputPointType &ipp, SpatialJacobianType &sj) const
Superclass::NonZeroJacobianIndicesType NonZeroJacobianIndicesType
GetJacobianOfSpatialHessianFunctionPointer2 m_SelectedGetJacobianOfSpatialHessianFunction2
Superclass::OutputVnlVectorType OutputVnlVectorType
virtual void SetParameters(const ParametersType &param)
virtual void GetJacobianOfSpatialJacobian(const InputPointType &ipp, JacobianOfSpatialJacobianType &jsj, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
virtual unsigned int GetNumberOfParameters(void) const
virtual const ParametersType & GetParameters(void) const
virtual void UpdateCombinationMethod(void)
Superclass::InputVnlVectorType InputVnlVectorType
OutputPointType TransformPointNoInitialTransform(const InputPointType &point) const
void GetJacobianOfSpatialJacobianUseAddition(const InputPointType &ipp, JacobianOfSpatialJacobianType &jsj, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
void GetJacobianOfSpatialHessianNoInitialTransform(const InputPointType &ipp, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
void GetJacobianOfSpatialHessianNoCurrentTransform(const InputPointType &ipp, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
void(Self::* GetSpatialJacobianFunctionPointer)(const InputPointType &, SpatialJacobianType &) const
FixedArray< Matrix< ScalarType, InputSpaceDimension, InputSpaceDimension >, OutputSpaceDimension > SpatialHessianType
AdvancedTransform< TScalarType, NDimensions, NDimensions > Superclass
virtual void GetSpatialJacobian(const InputPointType &ipp, SpatialJacobianType &sj) const
virtual const ParametersType & GetFixedParameters(void) const
void GetSpatialJacobianUseComposition(const InputPointType &ipp, SpatialJacobianType &sj) const
virtual const JacobianType & GetJacobian(const InputPointType &point) const
void GetJacobianOfSpatialJacobianNoInitialTransform(const InputPointType &ipp, JacobianOfSpatialJacobianType &jsj, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
virtual void NoCurrentTransformSet(void) const
Superclass::InternalMatrixType InternalMatrixType
OutputPointType TransformPointUseComposition(const InputPointType &point) const


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