NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
itkJonesThicknessFilter.h
Go to the documentation of this file.
1 /*=============================================================================
2 
3  NifTK: A software platform for medical image computing.
4 
5  Copyright (c) University College London (UCL). All rights reserved.
6 
7  This software is distributed WITHOUT ANY WARRANTY; without even
8  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
9  PURPOSE.
10 
11  See LICENSE.txt in the top level directory for details.
12 
13 =============================================================================*/
14 
15 #ifndef itkJonesThicknessFilter_h
16 #define itkJonesThicknessFilter_h
17 #include <itkImageToImageFilter.h>
18 #include <itkVector.h>
23 
24 namespace itk
25 {
26 
37 template <typename TImageType, typename TScalarType, unsigned int NDimensions>
38 class ITK_EXPORT JonesThicknessFilter : public ImageToImageFilter<TImageType, TImageType>
39 {
40  public:
43  typedef ImageToImageFilter<TImageType, TImageType> Superclass;
44  typedef SmartPointer<Self> Pointer;
45  typedef SmartPointer<const Self> ConstPointer;
55  typedef typename VectorNormalImageType::Pointer VectorNormalImagePointer;
57 
59  itkNewMacro(Self);
60 
62  itkTypeMacro(JonesThicknessFilter, ImageToImageFilter);
63 
65  void PrintSelf(std::ostream& os, Indent indent) const;
66 
68  itkSetMacro(LowVoltage, TScalarType);
69  itkGetMacro(LowVoltage, TScalarType);
70 
72  itkSetMacro(HighVoltage, TScalarType);
73  itkGetMacro(HighVoltage, TScalarType);
74 
76  itkSetMacro(LaplaceEpsionRatio, TScalarType);
77  itkGetMacro(LaplaceEpsionRatio, TScalarType);
78 
80  itkSetMacro(LaplaceMaxIterations, unsigned long int);
81  itkGetMacro(LaplaceMaxIterations, unsigned long int);
82 
84  itkSetMacro(WhiteMatterLabel, short int);
85  itkGetMacro(WhiteMatterLabel, short int);
86 
88  itkSetMacro(GreyMatterLabel, short int);
89  itkGetMacro(GreyMatterLabel, short int);
90 
92  itkSetMacro(CSFMatterLabel, short int);
93  itkGetMacro(CSFMatterLabel, short int);
94 
96  itkSetMacro(MinimumStepSize, TScalarType);
97  itkGetMacro(MinimumStepSize, TScalarType);
98 
100  itkSetMacro(MaximumLength, TScalarType);
101  itkGetMacro(MaximumLength, TScalarType);
102 
104  itkSetMacro(Sigma, TScalarType);
105  itkGetMacro(Sigma, TScalarType);
106 
111  itkSetMacro(UseLabels, bool);
112  itkGetMacro(UseLabels, bool);
113 
117  itkSetMacro(UseSmoothing, bool);
118  itkGetMacro(UseSmoothing, bool);
119 
121  void SetVectorNormalsOverrideImage(VectorNormalImageType* v);
122  VectorNormalImageType* GetVectorNormalsOverrideImage();
123  VectorNormalImageType* GetVectorNormalsFilterImage();
124  LaplacianImageType* GetLaplacianFilterImage();
125 
126  protected:
127 
129  virtual ~JonesThicknessFilter() {};
130 
131  // The main filter method. Note, single threaded.
132  virtual void GenerateData();
133 
134  private:
135  JonesThicknessFilter(const Self&); // purposely not implemented
136  void operator=(const Self&); // purposely not implemented
137 
138  TScalarType m_LowVoltage;
139  TScalarType m_HighVoltage;
140  TScalarType m_LaplaceEpsionRatio;
141  unsigned long int m_LaplaceMaxIterations;
142  short int m_WhiteMatterLabel;
143  short int m_GreyMatterLabel;
144  short int m_CSFMatterLabel;
145  TScalarType m_MinimumStepSize;
146  TScalarType m_MaximumLength;
147  TScalarType m_Sigma;
148  bool m_DontUseGaussSiedel;
149  bool m_UseLabels;
150  bool m_UseSmoothing;
151 
152  CheckFilterPointer m_CheckFilter;
153  LaplaceFilterPointer m_LaplaceFilter;
154  NormalsFilterPointer m_NormalsFilter;
155  IntegrateFilterPointer m_IntegrateFilter;
156  VectorNormalImagePointer m_NormalsOverrideImage;
157 
158 };
159 
160 } // end namespace itk
161 
162 #ifndef ITK_MANUAL_INSTANTIATION
163 #include "itkJonesThicknessFilter.txx"
164 #endif
165 
166 #endif
167 
168 
Integrates streamlines using Eulers method (Lagrangian framework).
Definition: itkIntegrateStreamlinesFilter.h:49
LaplaceFilterType::OutputImageType LaplacianImageType
Definition: itkJonesThicknessFilter.h:56
CheckFilterType::Pointer CheckFilterPointer
Definition: itkJonesThicknessFilter.h:47
SmartPointer< Self > Pointer
Definition: itkScalarImageToNormalizedGradientVectorImageFilter.h:82
SmartPointer< Self > Pointer
Definition: itkLaplacianSolverImageFilter.h:56
IntegrateStreamlinesFilter< TImageType, TScalarType, NDimensions > IntegrateFilterType
Definition: itkJonesThicknessFilter.h:52
Definition: niftkITKAffineResampleImage.cxx:74
VectorNormalImageType::Pointer VectorNormalImagePointer
Definition: itkJonesThicknessFilter.h:55
NormalsFilterType::OutputImageType VectorNormalImageType
Definition: itkJonesThicknessFilter.h:54
CheckForThreeLevelsFilter< TImageType > CheckFilterType
Definition: itkJonesThicknessFilter.h:46
NormalsFilterType::Pointer NormalsFilterPointer
Definition: itkJonesThicknessFilter.h:51
LaplaceFilterType::Pointer LaplaceFilterPointer
Definition: itkJonesThicknessFilter.h:49
IntegrateFilterType::Pointer IntegrateFilterPointer
Definition: itkJonesThicknessFilter.h:53
const GLdouble * v
Definition: glew.h:1375
Composite filter to implement Jones et. al. Human Brain Mapping 2005 11:12-32(2000).
Definition: itkJonesThicknessFilter.h:38
ScalarImageToNormalizedGradientVectorImageFilter< TImageType, TScalarType > NormalsFilterType
Definition: itkJonesThicknessFilter.h:50
SmartPointer< Self > Pointer
Definition: itkIntegrateStreamlinesFilter.h:57
SmartPointer< Self > Pointer
Definition: itkJonesThicknessFilter.h:44
LaplacianSolverImageFilter< TImageType, TScalarType > LaplaceFilterType
Definition: itkJonesThicknessFilter.h:48
Simply checks for 3 levels and passes data straight through.
Definition: itkCheckForThreeLevelsFilter.h:39
SmartPointer< const Self > ConstPointer
Definition: itkJonesThicknessFilter.h:45
JonesThicknessFilter Self
Definition: itkJonesThicknessFilter.h:42
Simultaneous itk::Image and itk::Array (and hence vnl_vector) class.
ImageToImageFilter< TImageType, TImageType > Superclass
Definition: itkJonesThicknessFilter.h:43
virtual ~JonesThicknessFilter()
Definition: itkJonesThicknessFilter.h:129
This class takes scalar image as input, and outputs a vector field of image gradient.
Definition: itkScalarImageToNormalizedGradientVectorImageFilter.h:67
SmartPointer< Self > Pointer
Definition: itkCheckForThreeLevelsFilter.h:46
Solves Laplace equation over the cortical volume.
Definition: itkLaplacianSolverImageFilter.h:49