NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
itkSmoothVectorFieldFilter.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 itkSmoothVectorFieldFilter_h
16 #define itkSmoothVectorFieldFilter_h
17 #include <itkImage.h>
18 #include <itkVector.h>
19 #include <itkInPlaceImageFilter.h>
20 #include <itkNeighborhoodOperator.h>
21 #include <itkVectorNeighborhoodOperatorImageFilter.h>
22 
23 namespace itk {
43 template <
44  class TScalarType, // Data type for the vectors
45  unsigned int NumberImageDimensions = 3, // Number of image dimensions
46  unsigned int NumberVectorDimensions = NumberImageDimensions> // Number of dimensions in the vectors
47 class ITK_EXPORT SmoothVectorFieldFilter :
48  public InPlaceImageFilter<Image< Vector<TScalarType, NumberVectorDimensions>, NumberImageDimensions>, // Input image
49  Image< Vector<TScalarType, NumberVectorDimensions>, NumberImageDimensions> // Output image
50  >
51 {
52 public:
53 
56  typedef ImageToImageFilter<
57  Image<
58  Vector<
59  TScalarType,
60  NumberVectorDimensions>,
61  NumberImageDimensions>,
62  Image<
63  Vector<
64  TScalarType,
65  NumberVectorDimensions>,
66  NumberImageDimensions>
68  typedef SmartPointer<Self> Pointer;
69  typedef SmartPointer<const Self> ConstPointer;
70 
72  itkTypeMacro(SmoothVectorFieldFilter, ImageToImageFilter);
73 
75  itkStaticConstMacro(ImageDimensions, unsigned int, NumberImageDimensions);
76 
78  itkStaticConstMacro(VectorDimensions, unsigned int, NumberVectorDimensions);
79 
81  typedef TScalarType OutputDataType;
82  typedef Vector< OutputDataType, NumberVectorDimensions > OutputPixelType;
84  typedef typename OutputImageType::Pointer OutputImagePointer;
85  typedef typename Superclass::InputImageType InputImageType;
86  typedef typename InputImageType::Pointer InputImagePointer;
87  typedef typename Superclass::InputImageRegionType RegionType;
88  typedef NeighborhoodOperator<TScalarType, NumberImageDimensions> NeighborhoodOperatorType;
89  typedef VectorNeighborhoodOperatorImageFilter<InputImageType, OutputImageType> SmootherFilterType;
90  typedef typename SmootherFilterType::Pointer SmootherFilterPointer;
91 
93  void WriteVectorImage(std::string filename);
94 
95 protected:
96 
99 
101  virtual void GenerateInputRequestedRegion() throw(InvalidRequestedRegionError);
102 
104  virtual void EnlargeOutputRequestedRegion(DataObject *output);
105 
113  virtual void GenerateData();
114 
116  virtual NeighborhoodOperatorType* CreateOperator(int dimension) = 0;
117 
118 private:
119 
123  SmoothVectorFieldFilter(const Self&);
124  void operator=(const Self&);
125 
126 };
127 
128 } // end namespace.
129 
130 #ifndef ITK_MANUAL_INSTANTIATION
131 #include "itkSmoothVectorFieldFilter.txx"
132 #endif
133 
134 #endif
~SmoothVectorFieldFilter()
Definition: itkSmoothVectorFieldFilter.h:98
SmoothVectorFieldFilter Self
Definition: itkSmoothVectorFieldFilter.h:55
Definition: niftkITKAffineResampleImage.cxx:74
InputImageType::Pointer InputImagePointer
Definition: itkSmoothVectorFieldFilter.h:86
SmootherFilterType::Pointer SmootherFilterPointer
Definition: itkSmoothVectorFieldFilter.h:90
TScalarType OutputDataType
Definition: itkSmoothVectorFieldFilter.h:81
Superclass::InputImageType InputImageType
Definition: itkSmoothVectorFieldFilter.h:85
Superclass::InputImageRegionType RegionType
Definition: itkSmoothVectorFieldFilter.h:87
SmartPointer< Self > Pointer
Definition: itkSmoothVectorFieldFilter.h:68
ImageToImageFilter< Image< Vector< TScalarType, NumberVectorDimensions >, NumberImageDimensions >, Image< Vector< TScalarType, NumberVectorDimensions >, NumberImageDimensions > > Superclass
Definition: itkSmoothVectorFieldFilter.h:67
Image< OutputPixelType, NumberImageDimensions > OutputImageType
Definition: itkSmoothVectorFieldFilter.h:83
Simultaneous itk::Image and itk::Array (and hence vnl_vector) class.
Abstract base class that takes a vector field as input and smoothes it.
Definition: itkSmoothVectorFieldFilter.h:47
Vector< OutputDataType, NumberVectorDimensions > OutputPixelType
Definition: itkSmoothVectorFieldFilter.h:82
SmartPointer< const Self > ConstPointer
Definition: itkSmoothVectorFieldFilter.h:69
VectorNeighborhoodOperatorImageFilter< InputImageType, OutputImageType > SmootherFilterType
Definition: itkSmoothVectorFieldFilter.h:89
OutputImageType::Pointer OutputImagePointer
Definition: itkSmoothVectorFieldFilter.h:84
NeighborhoodOperator< TScalarType, NumberImageDimensions > NeighborhoodOperatorType
Definition: itkSmoothVectorFieldFilter.h:88
GLsizei const GLcharARB ** string
Definition: glew.h:5194