NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
itkScalarImageToNormalizedGradientVectorImageFilter.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 itkScalarImageToNormalizedGradientVectorImageFilter_h
16 #define itkScalarImageToNormalizedGradientVectorImageFilter_h
17 
18 #include <itkImageToImageFilter.h>
19 #include <itkVector.h>
20 #include <itkImage.h>
21 #include <itkGradientImageFilter.h>
22 #include <itkGradientRecursiveGaussianImageFilter.h>
23 #include <itkCovariantVector.h>
26 
27 namespace itk {
28 
66 template< class TInputImage, typename TScalarType >
68  public ImageToImageFilter<TInputImage,
69  Image< Vector< TScalarType,
70  TInputImage::ImageDimension >,
71  TInputImage::ImageDimension > >
72 {
73 public:
74 
75  typedef TScalarType VectorDataType;
78  typedef ImageToImageFilter<TInputImage,
79  Image< Vector< VectorDataType,
80  TInputImage::ImageDimension >,
81  TInputImage::ImageDimension > > Superclass;
82  typedef SmartPointer<Self> Pointer;
83  typedef SmartPointer<const Self> ConstPointer;
84 
86  typedef enum {CENTRAL_DIFFERENCES, DERIVATIVE_OPERATOR, DERIVATIVE_OF_GAUSSIAN} DerivativeType;
87 
89  itkNewMacro(Self);
90 
92  itkTypeMacro(ScalarImageToNormalizedGradientVectorImageFilter, ImageToImageFilter);
93 
95  itkStaticConstMacro(Dimension, unsigned int, TInputImage::ImageDimension);
96 
98  typedef Vector< VectorDataType, itkGetStaticConstMacro(Dimension) > OutputPixelType;
99  typedef CovariantVector< VectorDataType, itkGetStaticConstMacro(Dimension) > CovariantVectorType;
102  typedef typename CovariantVectorImageType::Pointer CovariantVectorImagePointer;
103  typedef typename Superclass::InputImageType InputImageType;
106  typedef GradientImageFilter<TInputImage, VectorDataType, VectorDataType> GradientImageFilterType;
107  typedef typename GradientImageFilterType::Pointer GradientImageFilterPointer;
108  typedef GradientRecursiveGaussianImageFilter<TInputImage, CovariantVectorImageType> GradientRecursiveGaussianImageFilterType;
109  typedef typename GradientRecursiveGaussianImageFilterType::Pointer GradientRecursiveGaussianImageFilterPointer;
114 
116  void SetScalarImage(const InputImageType *image) {this->SetNthInput(0, const_cast<InputImageType *>(image)); }
117 
119  itkSetMacro(UseMillimetreScaling, bool);
120  itkGetMacro(UseMillimetreScaling, bool);
121 
123  itkSetMacro(DivideByTwo, bool);
124  itkGetMacro(DivideByTwo, bool);
125 
127  itkSetMacro(Normalize, bool);
128  itkGetMacro(Normalize, bool);
129 
136  itkSetMacro(PadValue, InputPixelType);
137  itkGetMacro(PadValue, InputPixelType);
138 
142  itkSetMacro(DerivativeType, DerivativeType);
143  itkGetMacro(DerivativeType, DerivativeType);
144 
146  itkSetMacro(Sigma, double);
147  itkGetMacro(Sigma, double);
148 
149 protected:
150 
153  void PrintSelf(std::ostream& os, Indent indent) const;
154 
155  // The main method to implement in derived classes.
156  virtual void GenerateData();
157 
158 private:
159 
164  void operator=(const Self&);
165 
167  bool m_UseMillimetreScaling;
168 
170  bool m_DivideByTwo;
171 
173  bool m_Normalize;
174 
176  double m_Sigma;
177 
179  InputPixelType m_PadValue;
180 
182  DerivativeType m_DerivativeType;
183 
185  GradientImageFilterPointer m_GradientImageFilter;
186 
188  GradientRecursiveGaussianImageFilterPointer m_GradientRecursiveGaussianImageFilter;
189 
191  GaussianSmoothFilterPointer m_GaussianSmoothFilter;
192 
194  NormaliseFilterPointer m_NormalizeFilter;
195 
196 };
197 
198 }
199 
200 #ifndef ITK_MANUAL_INSTANTIATION
201 #include "itkScalarImageToNormalizedGradientVectorImageFilter.txx"
202 #endif
203 
204 #endif
CovariantVectorImageType::Pointer CovariantVectorImagePointer
Definition: itkScalarImageToNormalizedGradientVectorImageFilter.h:102
~ScalarImageToNormalizedGradientVectorImageFilter()
Definition: itkScalarImageToNormalizedGradientVectorImageFilter.h:152
ScalarImageToNormalizedGradientVectorImageFilter Self
Definition: itkScalarImageToNormalizedGradientVectorImageFilter.h:77
This class takes a vector field and normalises each vector to unit length.
Definition: itkNormaliseVectorFilter.h:28
SmartPointer< Self > Pointer
Definition: itkScalarImageToNormalizedGradientVectorImageFilter.h:82
GaussianSmoothVectorFieldFilter< VectorDataType, itkGetStaticConstMacro(Dimension), itkGetStaticConstMacro(Dimension)> GaussianSmoothFilterType
Definition: itkScalarImageToNormalizedGradientVectorImageFilter.h:110
GradientImageFilter< TInputImage, VectorDataType, VectorDataType > GradientImageFilterType
Definition: itkScalarImageToNormalizedGradientVectorImageFilter.h:106
GLenum GLsizei GLenum GLenum const GLvoid * image
Definition: glew.h:4052
Vector< VectorDataType, itkGetStaticConstMacro(Dimension) > OutputPixelType
Definition: itkScalarImageToNormalizedGradientVectorImageFilter.h:98
TScalarType VectorDataType
Definition: itkScalarImageToNormalizedGradientVectorImageFilter.h:75
Definition: niftkITKAffineResampleImage.cxx:74
void SetScalarImage(const InputImageType *image)
Definition: itkScalarImageToNormalizedGradientVectorImageFilter.h:116
Image< OutputPixelType, itkGetStaticConstMacro(Dimension) > OutputImageType
Definition: itkScalarImageToNormalizedGradientVectorImageFilter.h:100
NormaliseFilterType::Pointer NormaliseFilterPointer
Definition: itkScalarImageToNormalizedGradientVectorImageFilter.h:113
GradientRecursiveGaussianImageFilterType::Pointer GradientRecursiveGaussianImageFilterPointer
Definition: itkScalarImageToNormalizedGradientVectorImageFilter.h:109
GaussianSmoothFilterType::Pointer GaussianSmoothFilterPointer
Definition: itkScalarImageToNormalizedGradientVectorImageFilter.h:111
void Normalize(std::vector< double > &x)
Definition: niftiImageToMitk.cxx:34
InputImageType::RegionType InputRegionType
Definition: itkScalarImageToNormalizedGradientVectorImageFilter.h:105
float PixelType
Definition: niftkBreastDCEandADC.cxx:88
SmartPointer< Self > Pointer
Definition: itkGaussianSmoothVectorFieldFilter.h:45
SmartPointer< Self > Pointer
Definition: itkNormaliseVectorFilter.h:41
ImageType::RegionType RegionType
Definition: niftkMakeLapUSProbeBasicModel.cxx:30
GradientRecursiveGaussianImageFilter< TInputImage, CovariantVectorImageType > GradientRecursiveGaussianImageFilterType
Definition: itkScalarImageToNormalizedGradientVectorImageFilter.h:108
SmartPointer< const Self > ConstPointer
Definition: itkScalarImageToNormalizedGradientVectorImageFilter.h:83
InputImageType::PixelType InputPixelType
Definition: itkScalarImageToNormalizedGradientVectorImageFilter.h:104
Superclass::InputImageType InputImageType
Definition: itkScalarImageToNormalizedGradientVectorImageFilter.h:103
CovariantVector< VectorDataType, itkGetStaticConstMacro(Dimension) > CovariantVectorType
Definition: itkScalarImageToNormalizedGradientVectorImageFilter.h:99
Simultaneous itk::Image and itk::Array (and hence vnl_vector) class.
GradientImageFilterType::Pointer GradientImageFilterPointer
Definition: itkScalarImageToNormalizedGradientVectorImageFilter.h:107
Image< CovariantVectorType, itkGetStaticConstMacro(Dimension) > CovariantVectorImageType
Definition: itkScalarImageToNormalizedGradientVectorImageFilter.h:101
const unsigned int Dimension
Definition: niftkBreastDCEandADC.cxx:89
ImageToImageFilter< TInputImage, Image< Vector< VectorDataType, TInputImage::ImageDimension >, TInputImage::ImageDimension > > Superclass
Definition: itkScalarImageToNormalizedGradientVectorImageFilter.h:81
Class that takes a vector field, and applies Gaussian smoothing.
Definition: itkGaussianSmoothVectorFieldFilter.h:35
This class takes scalar image as input, and outputs a vector field of image gradient.
Definition: itkScalarImageToNormalizedGradientVectorImageFilter.h:67
NormaliseVectorFilter< VectorDataType, itkGetStaticConstMacro(Dimension) > NormaliseFilterType
Definition: itkScalarImageToNormalizedGradientVectorImageFilter.h:112