DMRITool  v0.1.1-139-g860d86b4
Diffusion MRI Tool
itkCylinderModelGenerator.h
Go to the documentation of this file.
1 
19 #ifndef __itkCylinderModelGenerator_h
20 #define __itkCylinderModelGenerator_h
21 
22 #include "itkObject.h"
24 #include "itkFunctors.h"
26 
27 namespace itk
28 {
29 
41 template<class PreciseType = double>
42 class ITK_EXPORT CylinderModelGenerator : public DiffusionModelGenerator<PreciseType>
43 {
44 public:
48  typedef SmartPointer<Self> Pointer;
49  typedef SmartPointer<const Self> ConstPointer;
50 
52  itkNewMacro(Self);
53 
56 
57  typedef typename Superclass::MatrixType MatrixType;
63 
68  typedef typename Superclass::PointType PointType;
69 
70  typedef Image<double> Image3DType;
71  typedef typename Image3DType::Pointer Image3DPointer;
72 
75 
76  itkSetMacro(CylinderAxis, PointType);
77  itkGetMacro(CylinderAxis, PointType);
78 
79  itkSetMacro(Length, double);
80  itkGetMacro(Length, double);
81 
82  itkSetMacro(Radius, double);
83  itkGetMacro(Radius, double);
84 
85  itkSetMacro(D0, double);
86  itkGetMacro(D0, double);
87 
88  void Rotate (const MatrixType& mat);
89 
90  void ComputeDWISamples ();
91 
92  void ComputeEAPSamples ();
93 
94  void ComputeODFSamples ();
95 
96  void BuildTable ();
97 
98  // void VerifyInputParameters() const;
99 
100 protected:
103 
105  {
106  }
107 
108  void PrintSelf(std::ostream& os, Indent indent) const;
109 
110  typename LightObject::Pointer InternalClone() const;
111 
112  double m_Length;
113  double m_Radius;
114  double m_D0;
115 
116  PointType m_CylinderAxis;
117 
118  LUTExpPointer m_LUTExp;
119 
120  Image3DPointer m_EAPVolumeForZAxis;
121  Image3DPointer m_ODFVolumeForZAxis;
122 
123 private :
124  CylinderModelGenerator(const Self&); //purposely not implemented
125  void operator=(const Self&); //purposely not implemented
126 };
127 
128 }
129 
130 #if !defined(ITK_MANUAL_INSTANTIATION) && !defined(__itkCylinderModelGenerator_hxx)
132 #endif
133 
134 #endif
UnaryFunctorLookUpTable< utl::Functor::Exp< double > > LUTExpType
Superclass::SamplingSchemeQSpacePointer SamplingSchemeQSpacePointer
utl_shared_ptr< STDVectorType > STDVectorPointer
generate ground truth DWI/EAP/ODF ets from a given model
Superclass::MatrixPointer MatrixPointer
use UnaryFunctorLookUpTable to accelerate evaluation of functions.
SamplingSchemeQSpaceType::PointType PointType
SamplingSchemeRSpaceType::Pointer SamplingSchemeRSpacePointer
utl_shared_ptr< MatrixType > MatrixPointer
Superclass::SamplingSchemeRSpacePointer SamplingSchemeRSpacePointer
Superclass::STDVectorType STDVectorType
utl_shared_ptr< VectorType > VectorPointer
Superclass::STDVectorPointer STDVectorPointer
DiffusionModelGenerator< PreciseType > Superclass
Superclass::VectorPointer VectorPointer
this class describes sampling in a 3D space (Q space or R space).
SmartPointer< const Self > ConstPointer
this class describes sampling in Q space.
Superclass::SamplingSchemeQSpaceType SamplingSchemeQSpaceType
SamplingSchemeQSpaceType::Pointer SamplingSchemeQSpacePointer
Superclass::SamplingSchemeRSpaceType SamplingSchemeRSpaceType