DMRITool  v0.1.1-139-g860d86b4
Diffusion MRI Tool
itkSamplingSchemeQSpaceEstimationFilter.h
Go to the documentation of this file.
1 
18 #ifndef __itkSamplingSchemeQSpaceEstimationFilter_h
19 #define __itkSamplingSchemeQSpaceEstimationFilter_h
20 
21 #include "itkLightProcessObject.h"
22 #include "itkSamplingScheme3D.h"
23 #include "utlITK.h"
24 
25 namespace itk
26 {
27 
35 template <class TSamplingType>
36 class ITK_EXPORT SamplingSchemeQSpaceEstimationFilter : public LightProcessObject
37 {
38 
39 public:
42  typedef LightProcessObject Superclass;
43  typedef SmartPointer< Self > Pointer;
44  typedef SmartPointer< const Self > ConstPointer;
45 
46  typedef TSamplingType SamplingType;
47  typedef typename SamplingType::Pointer SamplingPointer;
48  typedef typename SamplingType::ConstPointer SamplingConstPointer;
49 
50  typedef typename SamplingType::ValueType ValueType;
51  typedef typename SamplingType::MatrixType MatrixType;
52  typedef typename SamplingType::MatrixPointer MatrixPointer;
53  typedef typename SamplingType::STDVectorType STDVectorType;
54  typedef typename SamplingType::STDVectorPointer STDVectorPointer;
55  typedef typename SamplingType::IndexVectorType IndexVectorType;
56  typedef typename SamplingType::Index2DVectorType Index2DVectorType;
57  typedef typename SamplingType::Index2DVectorPointer Index2DVectorPointer;
58 
60  itkTypeMacro(SamplingSchemeQSpaceEstimationFilter, LightProcessObject);
61  itkNewMacro(Self);
62 
63  typedef enum
64  {
65  DISTANCE=0,
66  ELECTROSTATIC
67  } CriteriaType;
68 
69  itkSetMacro(CriteriaType, CriteriaType);
70  itkGetMacro(CriteriaType, CriteriaType);
71 
72  itkSetMacro(ElectrostaticOrder, double);
73  itkGetMacro(ElectrostaticOrder, double);
74 
75  itkSetNDebugMacro(NumbersInShell, IndexVectorType);
76  itkGetMacro(NumbersInShell, IndexVectorType);
77 
78  itkSetMacro(WeightForSingleShell, double);
79  itkGetMacro(WeightForSingleShell, double);
80 
81  itkSetObjectMacro(InitialOrientations, SamplingType);
82  itkGetObjectMacro(InitialOrientations, SamplingType);
83 
84  itkGetObjectMacro(OutputOrientations, SamplingType);
85  itkGetConstObjectMacro(OutputOrientations, SamplingType);
86 
87  virtual void GenerateData() ITK_OVERRIDE{}
88 
89  bool IsSetInitialization() const
90  {
91  return m_InitialOrientations && m_InitialOrientations->GetNumberOfSamples()>0;
92  }
93 
94 protected:
95 
96  virtual void Initialization(){}
97 
99  {
100  m_WeightForSingleShell = 0.5;
101  m_ElectrostaticOrder = 2.0;
102  m_CriteriaType = DISTANCE;
103  m_InitialOrientations = NULL;
104  m_OutputOrientations = SamplingType::New();
105  }
106 
108 
110 
112  IndexVectorType m_NumbersInShell;
113 
116 
118  SamplingPointer m_InitialOrientations;
119 
120  SamplingPointer m_OutputOrientations;
121  // Index2DVectorPointer m_Indices;
122 
123  CriteriaType m_CriteriaType;
124 
125 private:
126  SamplingSchemeQSpaceEstimationFilter(const Self &); //purposely not implemented
127  void operator=(const Self &); //purposely not implemented
128 };
129 
130 }
131 
132 
133 #endif
134 
#define itkSetNDebugMacro(name, type)
Definition: utlITKMacro.h:100
#define ITK_OVERRIDE
Definition: utlITKMacro.h:46
base class for the filters to estimate the sampling scheme in Q-space