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 
95 
104 
112 
114  virtual void SetInitialTransform( const InitialTransformType * _arg );
115  itkGetConstObjectMacro( InitialTransform, InitialTransformType );
116 
121  virtual void SetCurrentTransform( CurrentTransformType * _arg );
122  itkGetObjectMacro( CurrentTransform, CurrentTransformType );
123 
125  virtual void SetUseComposition( bool _arg );
126  itkGetConstMacro( UseComposition, bool );
127 
129  virtual void SetUseAddition( bool _arg );
130  itkGetConstMacro( UseAddition, bool );
131 
133  virtual OutputPointType TransformPoint( const InputPointType & point ) const;
134 
140  {
141  itkExceptionMacro(
142  << "TransformVector(const InputVectorType &) is not implemented "
143  << "for AdvancedCombinationTransform" );
144  }
146  {
147  itkExceptionMacro(
148  << "TransformVector(const InputVnlVectorType &) is not implemented "
149  << "for AdvancedCombinationTransform" );
150  }
152  {
153  itkExceptionMacro(
154  << "TransformCovariantVector(const InputCovariantVectorType &) is not implemented "
155  << "for AdvancedCombinationTransform" );
156  }
157 
159  virtual NumberOfParametersType GetNumberOfParameters( void ) const;
160 
162  virtual unsigned long GetNumberOfNonZeroJacobianIndices( void ) const;
163 
165  virtual const ParametersType & GetParameters( void ) const;
166 
168  virtual const ParametersType & GetFixedParameters( void ) const;
169 
171  virtual void SetParameters( const ParametersType & param );
172 
176  virtual void SetParametersByValue( const ParametersType & param );
177 
179  virtual void SetFixedParameters( const ParametersType & fixedParam );
180 
191  virtual bool GetInverse( Self* inverse ) const;
192 
195  virtual bool IsLinear( void ) const;
196 
198  virtual bool GetHasNonZeroSpatialHessian( void ) const;
199  virtual bool HasNonZeroJacobianOfSpatialHessian( void ) const;
200 
202  virtual void GetJacobian(
203  const InputPointType & ipp,
204  JacobianType & j,
205  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
206 
208  virtual void GetSpatialJacobian(
209  const InputPointType & ipp,
210  SpatialJacobianType & sj ) const;
211 
213  virtual void GetSpatialHessian(
214  const InputPointType & ipp,
215  SpatialHessianType & sh ) const;
216 
218  virtual void GetJacobianOfSpatialJacobian(
219  const InputPointType & ipp,
221  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
222 
226  virtual void GetJacobianOfSpatialJacobian(
227  const InputPointType & ipp,
228  SpatialJacobianType & sj,
230  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
231 
233  virtual void GetJacobianOfSpatialHessian(
234  const InputPointType & ipp,
236  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
237 
241  virtual void GetJacobianOfSpatialHessian(
242  const InputPointType & ipp,
243  SpatialHessianType & sh,
245  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
246 
250  const InputPointType &,
251  JacobianType &,
252  NonZeroJacobianIndicesType & ) const;
254  const InputPointType &,
255  SpatialJacobianType & ) const;
257  const InputPointType &,
258  SpatialHessianType & ) const;
260  const InputPointType &,
262  NonZeroJacobianIndicesType & ) const;
264  const InputPointType &,
267  NonZeroJacobianIndicesType & ) const;
269  const InputPointType &,
271  NonZeroJacobianIndicesType & ) const;
273  const InputPointType &,
276  NonZeroJacobianIndicesType & ) const;
277 
278 protected:
279 
282 
285 
289 
293  virtual void UpdateCombinationMethod( void );
294 
296  virtual void NoCurrentTransformSet( void ) const throw (ExceptionObject);
297 
305 
312  //GetJacobianFunctionPointer m_SelectedGetJacobianFunction;
313 
322 
329  const InputPointType & point ) const;
330 
335  const InputPointType & point ) const;
336 
339  const InputPointType & point ) const;
340 
343  const InputPointType & point ) const;
344 
350  inline void GetJacobianUseAddition(
351  const InputPointType &,
352  JacobianType &,
353  NonZeroJacobianIndicesType & ) const;
354 
358  inline void GetJacobianUseComposition(
359  const InputPointType &,
360  JacobianType &,
361  NonZeroJacobianIndicesType & ) const;
362 
364  inline void GetJacobianNoInitialTransform(
365  const InputPointType &,
366  JacobianType &,
367  NonZeroJacobianIndicesType & ) const;
368 
370  inline void GetJacobianNoCurrentTransform(
371  const InputPointType &,
372  JacobianType &,
373  NonZeroJacobianIndicesType & ) const;
374 
380  inline void GetSpatialJacobianUseAddition(
381  const InputPointType & ipp,
382  SpatialJacobianType & sj ) const;
383 
388  const InputPointType & ipp,
389  SpatialJacobianType & sj ) const;
390 
393  const InputPointType & ipp,
394  SpatialJacobianType & sj ) const;
395 
398  const InputPointType & ipp,
399  SpatialJacobianType & sj ) const;
400 
406  inline void GetSpatialHessianUseAddition(
407  const InputPointType & ipp,
408  SpatialHessianType & sh ) const;
409 
414  const InputPointType & ipp,
415  SpatialHessianType & sh ) const;
416 
419  const InputPointType & ipp,
420  SpatialHessianType & sh ) const;
421 
424  const InputPointType & ipp,
425  SpatialHessianType & sh ) const;
426 
433  const InputPointType & ipp,
435  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
436 
438  const InputPointType & ipp,
439  SpatialJacobianType & sj,
441  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
442 
447  const InputPointType & ipp,
449  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
450 
452  const InputPointType & ipp,
453  SpatialJacobianType & sj,
455  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
456 
459  const InputPointType & ipp,
461  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
462 
464  const InputPointType & ipp,
465  SpatialJacobianType & sj,
467  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
468 
471  const InputPointType & ipp,
473  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
474 
476  const InputPointType & ipp,
477  SpatialJacobianType & sj,
479  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
480 
487  const InputPointType & ipp,
489  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
490 
492  const InputPointType & ipp,
493  SpatialHessianType & sh,
495  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
496 
501  const InputPointType & ipp,
503  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
504 
505  virtual inline void GetJacobianOfSpatialHessianUseComposition(
506  const InputPointType & ipp,
507  SpatialHessianType & sh,
509  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
510 
513  const InputPointType & ipp,
515  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
516 
518  const InputPointType & ipp,
519  SpatialHessianType & sh,
521  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
522 
525  const InputPointType & ipp,
527  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
528 
530  const InputPointType & ipp,
531  SpatialHessianType & sh,
533  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const;
534 
538 
539 private:
540 
541  AdvancedCombinationTransform( const Self& ); // purposely not implemented
542  void operator=( const Self& ); // purposely not implemented
543 
544 }; // end class AdvancedCombinationTransform
545 
546 
547 } // end namespace itk
548 
549 
550 #ifndef ITK_MANUAL_INSTANTIATION
551 #include "itkAdvancedCombinationTransform.hxx"
552 #endif
553 
554 
555 #endif // end #ifndef __itkAdvancedCombinationTransform_h
556 
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)
Superclass::InverseTransformBasePointer InverseTransformBasePointer
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
Superclass::JacobianOfSpatialHessianType JacobianOfSpatialHessianType
void GetSpatialHessianUseAddition(const InputPointType &ipp, SpatialHessianType &sh) const
GetSparseJacobianFunctionPointer m_SelectedGetSparseJacobianFunction
void GetJacobianNoCurrentTransform(const InputPointType &, JacobianType &, NonZeroJacobianIndicesType &) const
virtual OutputVnlVectorType TransformVector(const InputVnlVectorType &) const
virtual OutputCovariantVectorType TransformCovariantVector(const InputCovariantVectorType &) const
CurrentTransformType::InverseTransformBasePointer CurrentTransformInverseTransformBasePointer
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
Superclass::InverseTransformBaseType InverseTransformBaseType
void GetJacobianUseComposition(const InputPointType &, JacobianType &, NonZeroJacobianIndicesType &) 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
virtual void SetInitialTransform(const InitialTransformType *_arg)
void GetJacobianUseAddition(const InputPointType &, JacobianType &, NonZeroJacobianIndicesType &) const
virtual bool HasNonZeroJacobianOfSpatialHessian(void) const
void(Self::* GetJacobianOfSpatialHessianFunctionPointer)(const InputPointType &, JacobianOfSpatialHessianType &, NonZeroJacobianIndicesType &) const
virtual void SetCurrentTransform(CurrentTransformType *_arg)
virtual NumberOfParametersType GetNumberOfParameters(void) const
Transform maps points, vectors and covariant vectors from an input space to an output space...
virtual OutputVectorType TransformVector(const InputVectorType &) const
virtual void SetUseComposition(bool _arg)
TransformPointFunctionPointer m_SelectedTransformPointFunction
CurrentTransformType::Pointer CurrentTransformPointer
void GetJacobianOfSpatialJacobianNoCurrentTransform(const InputPointType &ipp, JacobianOfSpatialJacobianType &jsj, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
void GetJacobianNoInitialTransform(const InputPointType &, JacobianType &, NonZeroJacobianIndicesType &) const
void GetSpatialHessianUseComposition(const InputPointType &ipp, SpatialHessianType &sh) const
OutputPointType(Self::* TransformPointFunctionPointer)(const InputPointType &) const
GetJacobianOfSpatialJacobianFunctionPointer m_SelectedGetJacobianOfSpatialJacobianFunction
virtual void GetJacobian(const InputPointType &ipp, JacobianType &j, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
Superclass::SpatialJacobianType SpatialJacobianType
GetSpatialJacobianFunctionPointer m_SelectedGetSpatialJacobianFunction
InitialTransformType::InverseTransformBasePointer InitialTransformInverseTransformBasePointer
GetJacobianOfSpatialJacobianFunctionPointer2 m_SelectedGetJacobianOfSpatialJacobianFunction2
InitialTransformType::ConstPointer InitialTransformConstPointer
CurrentTransformType::InverseTransformBaseType CurrentTransformInverseTransformBaseType
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
Superclass::NumberOfParametersType NumberOfParametersType
void GetJacobianOfSpatialHessianUseAddition(const InputPointType &ipp, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
void(Self::* GetSparseJacobianFunctionPointer)(const InputPointType &, JacobianType &, NonZeroJacobianIndicesType &) const
virtual bool GetHasNonZeroSpatialHessian(void) const
InitialTransformType::InverseTransformBaseType InitialTransformInverseTransformBaseType
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 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
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 04-01-2014 for elastix by doxygen 1.8.5 elastix logo