DMRITool  v0.1.1-139-g860d86b4
Diffusion MRI Tool
itkTensorBasisMatrixGenerator.h
Go to the documentation of this file.
1 
18 #ifndef __itkTensorBasisMatrixGenerator_h
19 #define __itkTensorBasisMatrixGenerator_h
20 
22 #include "itkDiffusionTensor.h"
23 
24 namespace itk
25 {
26 
35 template <typename TElement = double>
36 class ITK_EXPORT TensorBasisMatrixGenerator
37  : public DiscreteBasisMatrixGenerator<TElement>
38 {
39 public:
43  typedef SmartPointer<Self> Pointer;
44  typedef SmartPointer<const Self> ConstPointer;
45 
47  itkNewMacro(Self);
48 
51 
53  typedef typename Superclass::MatrixType MatrixType;
54  typedef typename Superclass::VectorType VectorType;
55  typedef typename Superclass::MatrixPointer MatrixPointer;
56  typedef typename Superclass::VectorPointer VectorPointer;
57  typedef typename Superclass::STDVectorType STDVectorType;
58  typedef typename Superclass::STDVectorPointer STDVectorPointer;
59 
61 
63  itkSetMacro(EigenValue1, double);
64  itkGetMacro(EigenValue1, double);
65  itkSetMacro(EigenValue2, double);
66  itkGetMacro(EigenValue2, double);
67  itkSetMacro(EigenValue3, double);
68  itkGetMacro(EigenValue3, double);
69 
70  itkSetMacro(EigenValueISO, double);
71  itkGetMacro(EigenValueISO, double);
72 
73  void ComputeBasisMatrix() ITK_OVERRIDE;
74 
75  // [>* Generate basis in Q space for DWI<]
76  // virtual MatrixPointer ComputeQBasisMatrixForDWI();
77  // [>* Generate basis in R space for EAP<]
78  // virtual MatrixPointer ComputeRBasisMatrixForEAP();
79  // [>* Generate basis in R space for ODF<]
80  // virtual MatrixPointer ComputeRBasisMatrixForODF();
81 
82 protected:
84  virtual ~TensorBasisMatrixGenerator()
85  {}
86 
87  virtual void VerifyInputParameters() const ITK_OVERRIDE;
88 
89  void PrintSelf(std::ostream& os, Indent indent) const ITK_OVERRIDE;
90  typename LightObject::Pointer InternalClone() const ITK_OVERRIDE;
91 
92  double m_EigenValue1;
93  double m_EigenValue2;
94  double m_EigenValue3;
95 
97 
98 private:
99  TensorBasisMatrixGenerator(const Self&); //purposely not implemented
100  void operator=(const Self&); //purposely not implemented
101 };
102 
103 }
104 
105 // Define instantiation macro for this template.
106 #define ITK_TEMPLATE_TensorBasisMatrixGenerator(_, EXPORT, x, y) namespace itk { \
107  _(2(class EXPORT TensorBasisMatrixGenerator< ITK_TEMPLATE_2 x >)) \
108  namespace Templates { typedef TensorBasisMatrixGenerator< ITK_TEMPLATE_2 x > TensorBasisMatrixGenerator##y; } \
109  }
110 
111 #if ITK_TEMPLATE_EXPLICIT
112 # include "Templates/itkTensorBasisMatrixGenerator+-.h"
113 #endif
114 
115 #if !defined(ITK_MANUAL_INSTANTIATION) && !defined(__itkTensorBasisMatrixGenerator_hxx)
117 #endif
118 
119 
120 
121 #endif
122 
DiscreteBasisMatrixGenerator< TElement > Superclass
#define ITK_OVERRIDE
Definition: utlITKMacro.h:46
Superclass::STDVectorPointer STDVectorPointer
tensor with some useful functions