DMRITool  v0.1.1-139-g860d86b4
Diffusion MRI Tool
itkSamplingSchemeQSpaceIMOCEstimationFilter.h
Go to the documentation of this file.
1 
17 #ifndef __itkSamplingSchemeQSpaceIMOCEstimationFilter_h
18 #define __itkSamplingSchemeQSpaceIMOCEstimationFilter_h
19 
21 #include "itkSamplingScheme3D.h"
22 
23 #include "itkListSample.h"
24 #include "itkKdTreeGenerator.h"
25 
26 
27 namespace itk
28 {
29 
37 template <class TSamplingType>
39  : public SamplingSchemeQSpaceEstimationFilter<TSamplingType>
40 {
41 
42 public:
46  typedef SmartPointer< Self > Pointer;
47  typedef SmartPointer< const Self > ConstPointer;
48 
49  typedef TSamplingType SamplingType;
50  typedef typename SamplingType::Pointer SamplingPointer;
51 
52  typedef typename Superclass::ValueType ValueType;
53  typedef typename Superclass::MatrixType MatrixType;
55  typedef typename Superclass::STDVectorType STDVectorType;
56  typedef typename Superclass::STDVectorPointer STDVectorPointer;
57  typedef typename Superclass::IndexVectorType IndexVectorType;
58  typedef typename Superclass::Index2DVectorType Index2DVectorType;
59  typedef typename Superclass::Index2DVectorPointer Index2DVectorPointer;
60 
61  typedef itk::Point<double,3> MeasurementVectorType;
62  typedef itk::Statistics::ListSample< MeasurementVectorType > SampleType;
63  typedef itk::Statistics::KdTreeGenerator< SampleType > TreeGeneratorType;
64  typedef TreeGeneratorType::KdTreeType TreeType;
65 
68  itkNewMacro(Self);
69 
70  itkSetGetMacro(TessellationOrder, unsigned int);
71 
72  itkSetGetMacro(FineOrientations, MatrixPointer);
73 
74  itkSetGetMacro(AngleMinChange, double);
75 
76  itkSetGetMacro(ChooseMinimalCoverageShell, bool);
77 
78  void GenerateData() ITK_OVERRIDE;
79 
80 protected:
82  ~SamplingSchemeQSpaceIMOCEstimationFilter(){}
83 
84  void Initialization() ITK_OVERRIDE;
85 
86  bool IsSatisfiedSeparationAngles(const std::vector<double>& angles);
87 
89  unsigned int m_TessellationOrder=7;
90 
92  MatrixPointer m_FineOrientations;
93  SamplingPointer m_FineScheme = SamplingType::New();
94 
95  double m_MinDistanceInFineScheme=-1;
96 
97  typename TreeGeneratorType::Pointer m_TreeGenerator=nullptr;
98  typename TreeType::Pointer m_KDTree= nullptr;
99  typename SampleType::Pointer m_Sample;
100 
101  double m_AngleMinChange=0.0001;
102 
108  bool m_ChooseMinimalCoverageShell=true;
109 
110 private:
111  SamplingSchemeQSpaceIMOCEstimationFilter(const Self &); //purposely not implemented
112  void operator=(const Self &); //purposely not implemented
113 
114 };
115 
116 }
117 
118 #if !defined(ITK_MANUAL_INSTANTIATION) && !defined(__itkSamplingSchemeQSpaceIMOCEstimationFilter_hxx)
120 #endif
121 
122 
123 #endif
Estimation of single/multi-shell orientations using Iterative Maximum Overlap Construction (IMOC) ...
SamplingSchemeQSpaceEstimationFilter< TSamplingType > Superclass
#define ITK_OVERRIDE
Definition: utlITKMacro.h:46
itk::Statistics::KdTreeGenerator< SampleType > TreeGeneratorType
#define itkSetGetMacro(name, type)
Definition: utlITKMacro.h:134
base class for the filters to estimate the sampling scheme in Q-space
itk::Statistics::ListSample< MeasurementVectorType > SampleType