CBICA Toolkit  1.0.0
itkDTILogEuclideanCalculator.h
Go to the documentation of this file.
1 /**
2 \file itkDTILogEuclideanCalculator.h
3 
4 \brief Declaration of the DTILogEuclideanCalculator class
5 
6 https://www.cbica.upenn.edu/sbia/software/ <br>
7 software@cbica.upenn.edu
8 
9 Copyright (c) 2015 University of Pennsylvania. All rights reserved. <br>
10 See COPYING file or https://www.cbica.upenn.edu/sbia/software/license.html
11 
12 */
13 #pragma once
14 
15 #include "itkObject.h"
16 #include "itkObjectFactory.h"
17 #include "itkDiffusionTensor3D.h"
18 #include "itkSymmetricSecondRankTensor.h"
19 
20 #if WIN32
21 __declspec(dllexport) inline void getRidOfLNK4221(){};
22 #endif
23 
24 namespace itk
25 {
26  /**
27  \class DTILogEuclideanCalculator
28 
29  \brief The Purpose of this class is to provide common computations for
30  diffusion tensors specifically
31 
32  1) Matrix Log Computation
33  2) Matrix Exp Computaiton
34  3) Tests for positive definitness
35  */
36  template <class TDtiCompType , class TSymCompType>
37  class ITK_EXPORT DTILogEuclideanCalculator:public Object
38  {
39  public:
40 
41  //! Standard class typedefs
43  typedef Object Superclass;
44 
45  typedef SmartPointer<Self> Pointer;
46  typedef SmartPointer<const Self> ConstPointer;
47 
48  //! Method for creation through the object factory
49  itkNewMacro(Self);
50 
51  //! Run-time type information (and related methods)
52  itkTypeMacro(DTILogEuclideanCalculator, Object);
53 
54  //! Typedefs for methods
55  typedef DiffusionTensor3D< TDtiCompType > DTType;
56  typedef SymmetricSecondRankTensor< TSymCompType, 3> SymMatType;
57 
58  static const unsigned int MatrixDimension = 3;
59 
60  //! Compute the MatrixExponential
61  DTType CalculateMatrixExp( SymMatType ) const;
62  //! Compute the MatrixLogarithm
63  SymMatType CalculateMatrixLog( DTType ) const;
64  //! Check if the eigenvalues are > 0
65  bool IsPositiveDefinite( SymMatType ) const;
66 
67  protected:
70 
71  private:
72  DTILogEuclideanCalculator(const Self&); // purposely not implemented
73  void operator=(const Self&); // purposely not implemented
74 
75  };
76 
77 } // end namespace itk
78 
79 #ifndef ITK_MANUAL_INSTANTIATION
80 #include "itkDTILogEuclideanCalculator.cpp"
81 #endif
82 
DTILogEuclideanCalculator Self
Standard class typedefs.
Definition: itkDTILogEuclideanCalculator.h:42
The Purpose of this class is to provide common computations for diffusion tensors specifically.
Definition: itkDTILogEuclideanCalculator.h:37
DiffusionTensor3D< TDtiCompType > DTType
Typedefs for methods.
Definition: itkDTILogEuclideanCalculator.h:55