NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
itkUCLN4BiasFieldCorrectionFilter.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 itkUCLN4BiasFieldCorrectionFilter_h
16 #define itkUCLN4BiasFieldCorrectionFilter_h
17 
18 #include <itkImageToImageFilter.h>
19 #include <itkMacro.h>
20 #include <itkArray.h>
21 
22 
23 namespace itk {
24 
42 template < class TInputImage, class TOutputImage >
43 class ITK_EXPORT UCLN4BiasFieldCorrectionFilter :
44  public ImageToImageFilter< TInputImage, TOutputImage >
45 {
46 public:
49  typedef ImageToImageFilter<TInputImage,TOutputImage> Superclass;
50  typedef SmartPointer<Self> Pointer;
51  typedef SmartPointer<const Self> ConstPointer;
52 
54  itkNewMacro(Self);
55 
57  itkTypeMacro(UCLN4BiasFieldCorrectionFilter, ImageToImageFilter);
58 
60  itkStaticConstMacro(ImageDimension, unsigned int, TInputImage::ImageDimension);
61  itkStaticConstMacro(OutputImageDimension, unsigned int, TOutputImage::ImageDimension);
62 
64  typedef typename Superclass::InputImageConstPointer InputImageConstPointer;
65  typedef typename Superclass::InputImagePointer InputImagePointer;
66  typedef typename Superclass::InputImageType InputImageType;
67 
68  typedef typename Superclass::OutputImagePointer OutputImagePointer;
69  typedef typename Superclass::OutputImageType OutputImageType;
70 
71  typedef unsigned char MaskPixelType;
72  typedef typename itk::Image<MaskPixelType, ImageDimension> MaskImageType;
73  typedef typename MaskImageType::Pointer MaskImagePointer;
74 
75 
76 #ifdef ITK_USE_CONCEPT_CHECKING
77 
78  itkConceptMacro(SameDimensionCheck,
79  (Concept::SameDimension<ImageDimension, OutputImageDimension>));
80  itkConceptMacro(OutputHasNumericTraitsCheck,
81  (Concept::HasNumericTraits<typename TOutputImage::PixelType>));
83 #endif
84 
85  itkSetMacro( Subsampling, float );
86  itkSetMacro( SplineOrder, float );
87  itkSetMacro( NumberOfHistogramBins, float );
88  itkSetMacro( WeinerFilterNoise, float );
89  itkSetMacro( BiasFieldFullWidthAtHalfMaximum, float );
90  itkSetMacro( MaximumNumberOfIterations, float );
91  itkSetMacro( ConvergenceThreshold, float );
92  itkSetMacro( NumberOfFittingLevels, float );
93  itkSetMacro( NumberOfControlPoints, float );
94 
96  itkSetObjectMacro( Mask, MaskImageType );
98  itkGetObjectMacro( Mask, MaskImageType );
99 
101  itkGetObjectMacro( BiasField, InputImageType );
102 
103 protected:
106 
107  float m_Subsampling;
116 
117  MaskImagePointer m_Mask;
118  InputImagePointer m_BiasField;
119 
120  void PrintSelf(std::ostream&os, Indent indent) const;
121 
123  void GenerateData();
124 
125 
126 private:
127  UCLN4BiasFieldCorrectionFilter(const Self&); //purposely not implemented
128  void operator=(const Self&); //purposely not implemented
129 
130 };
131 
132 
133 } // namespace itk
134 
135 #ifndef ITK_MANUAL_INSTANTIATION
136 #include "itkUCLN4BiasFieldCorrectionFilter.txx"
137 #endif
138 
139 #endif
float m_NumberOfControlPoints
Definition: itkUCLN4BiasFieldCorrectionFilter.h:115
itk::Image< MaskPixelType, ImageDimension > MaskImageType
Definition: itkUCLN4BiasFieldCorrectionFilter.h:72
Superclass::InputImagePointer InputImagePointer
Definition: itkUCLN4BiasFieldCorrectionFilter.h:65
SmartPointer< const Self > ConstPointer
Definition: itkUCLN4BiasFieldCorrectionFilter.h:51
float m_MaximumNumberOfIterations
Definition: itkUCLN4BiasFieldCorrectionFilter.h:112
UCLN4BiasFieldCorrectionFilter Self
Definition: itkUCLN4BiasFieldCorrectionFilter.h:48
Superclass::InputImageConstPointer InputImageConstPointer
Definition: itkUCLN4BiasFieldCorrectionFilter.h:64
Definition: niftkITKAffineResampleImage.cxx:74
MaskImagePointer m_Mask
Definition: itkUCLN4BiasFieldCorrectionFilter.h:117
float m_ConvergenceThreshold
Definition: itkUCLN4BiasFieldCorrectionFilter.h:113
Superclass::OutputImageType OutputImageType
Definition: itkUCLN4BiasFieldCorrectionFilter.h:69
Superclass::OutputImagePointer OutputImagePointer
Definition: itkUCLN4BiasFieldCorrectionFilter.h:68
InputImagePointer m_BiasField
Definition: itkUCLN4BiasFieldCorrectionFilter.h:118
Superclass::InputImageType InputImageType
Definition: itkUCLN4BiasFieldCorrectionFilter.h:66
float m_SplineOrder
Definition: itkUCLN4BiasFieldCorrectionFilter.h:108
unsigned char MaskPixelType
Definition: itkUCLN4BiasFieldCorrectionFilter.h:71
MaskImageType::Pointer MaskImagePointer
Definition: itkUCLN4BiasFieldCorrectionFilter.h:73
float m_NumberOfFittingLevels
Definition: itkUCLN4BiasFieldCorrectionFilter.h:114
float m_NumberOfHistogramBins
Definition: itkUCLN4BiasFieldCorrectionFilter.h:109
~UCLN4BiasFieldCorrectionFilter()
Definition: itkUCLN4BiasFieldCorrectionFilter.h:105
SmartPointer< Self > Pointer
Definition: itkUCLN4BiasFieldCorrectionFilter.h:50
float m_BiasFieldFullWidthAtHalfMaximum
Definition: itkUCLN4BiasFieldCorrectionFilter.h:111
ImageToImageFilter< TInputImage, TOutputImage > Superclass
Definition: itkUCLN4BiasFieldCorrectionFilter.h:49
N4 bias field correction algorithm contributed to ITK by Nicholas J. Tustison and James C...
Definition: itkUCLN4BiasFieldCorrectionFilter.h:43
float m_WeinerFilterNoise
Definition: itkUCLN4BiasFieldCorrectionFilter.h:110