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 


Generated on 21-03-2014 for elastix by doxygen 1.8.1.2 elastix logo