SimpleITK  1.0.1
Public Types | Public Member Functions | Private Types | Private Member Functions | Private Attributes | Friends | List of all members
itk::simple::N4BiasFieldCorrectionImageFilter Class Reference

Implementation of the N4 bias field correction algorithm. More...

#include <sitkN4BiasFieldCorrectionImageFilter.h>

+ Inheritance diagram for itk::simple::N4BiasFieldCorrectionImageFilter:
+ Collaboration diagram for itk::simple::N4BiasFieldCorrectionImageFilter:

Public Types

typedef RealPixelIDTypeList PixelIDTypeList
 
typedef N4BiasFieldCorrectionImageFilter Self
 
- Public Types inherited from itk::simple::ImageFilter< 0 >
typedef ImageFilter Self
 
- Public Types inherited from itk::simple::ProcessObject
typedef ProcessObject Self
 

Public Member Functions

Image Execute (const Image &image, const Image &maskImage)
 
Image Execute (const Image &image, const Image &maskImage, double convergenceThreshold, std::vector< uint32_t > maximumNumberOfIterations, double biasFieldFullWidthAtHalfMaximum, double wienerFilterNoise, uint32_t numberOfHistogramBins, const std::vector< uint32_t > &numberOfControlPoints, uint32_t splineOrder)
 
double GetBiasFieldFullWidthAtHalfMaximum () const
 
double GetConvergenceThreshold () const
 
std::vector< uint32_tGetMaximumNumberOfIterations () const
 
std::string GetName () const
 
std::vector< uint32_tGetNumberOfControlPoints () const
 
uint32_t GetNumberOfHistogramBins () const
 
uint32_t GetSplineOrder () const
 
double GetWienerFilterNoise () const
 
 N4BiasFieldCorrectionImageFilter ()
 
SelfSetBiasFieldFullWidthAtHalfMaximum (double BiasFieldFullWidthAtHalfMaximum)
 
SelfSetConvergenceThreshold (double ConvergenceThreshold)
 
SelfSetMaximumNumberOfIterations (std::vector< uint32_t > MaximumNumberOfIterations)
 
SelfSetNumberOfControlPoints (const std::vector< uint32_t > &NumberOfControlPoints)
 
SelfSetNumberOfControlPoints (uint32_t value)
 
SelfSetNumberOfHistogramBins (uint32_t NumberOfHistogramBins)
 
SelfSetSplineOrder (uint32_t SplineOrder)
 
SelfSetWienerFilterNoise (double WienerFilterNoise)
 
std::string ToString () const
 
 ~N4BiasFieldCorrectionImageFilter ()
 
- Public Member Functions inherited from itk::simple::ImageFilter< 0 >
 ImageFilter ()
 
virtual ~ImageFilter ()=0
 
- Public Member Functions inherited from itk::simple::ProcessObject
virtual void Abort ()
 
virtual int AddCommand (itk::simple::EventEnum event, itk::simple::Command &cmd)
 Add a Command Object to observer the event. More...
 
virtual float GetProgress () const
 An Active Measurement of the progress of execution. More...
 
virtual bool HasCommand (itk::simple::EventEnum event) const
 Query of this object has any registered commands for event. More...
 
 ProcessObject ()
 
virtual void RemoveAllCommands ()
 Remove all registered commands. More...
 
virtual ~ProcessObject ()
 
virtual void DebugOn ()
 
virtual void DebugOff ()
 
virtual bool GetDebug () const
 
virtual void SetDebug (bool debugFlag)
 
virtual void SetNumberOfThreads (unsigned int n)
 
virtual unsigned int GetNumberOfThreads () const
 

Private Types

typedef Image(Self::* MemberFunctionType) (const Image *image, const Image *maskImage)
 

Private Member Functions

template<class TImageType1 , class TImageType2 >
Image DualExecuteInternal (const Image *image, const Image *maskImage)
 

Private Attributes

double m_BiasFieldFullWidthAtHalfMaximum
 
double m_ConvergenceThreshold
 
nsstd::auto_ptr< detail::DualMemberFunctionFactory< MemberFunctionType > > m_DualMemberFactory
 
std::vector< uint32_tm_MaximumNumberOfIterations
 
std::vector< uint32_tm_NumberOfControlPoints
 
uint32_t m_NumberOfHistogramBins
 
uint32_t m_SplineOrder
 
double m_WienerFilterNoise
 

Friends

struct detail::DualExecuteInternalAddressor< MemberFunctionType >
 

Additional Inherited Members

- Static Public Member Functions inherited from itk::simple::ProcessObject
static bool GetGlobalDefaultDebug ()
 
static void GlobalDefaultDebugOff ()
 
static void GlobalDefaultDebugOn ()
 
static void SetGlobalDefaultDebug (bool debugFlag)
 
static void GlobalWarningDisplayOn ()
 
static void GlobalWarningDisplayOff ()
 
static void SetGlobalWarningDisplay (bool flag)
 
static bool GetGlobalWarningDisplay ()
 
static void SetGlobalDefaultNumberOfThreads (unsigned int n)
 
static unsigned int GetGlobalDefaultNumberOfThreads ()
 
static double GetGlobalDefaultCoordinateTolerance ()
 Access the global tolerance to determine congruent spaces. More...
 
static void SetGlobalDefaultCoordinateTolerance (double)
 Access the global tolerance to determine congruent spaces. More...
 
static double GetGlobalDefaultDirectionTolerance ()
 Access the global tolerance to determine congruent spaces. More...
 
static void SetGlobalDefaultDirectionTolerance (double)
 Access the global tolerance to determine congruent spaces. More...
 
- Protected Member Functions inherited from itk::simple::ProcessObject
virtual unsigned long AddITKObserver (const itk::EventObject &, itk::Command *)
 
virtual itk::ProcessObjectGetActiveProcess ()
 
virtual void OnActiveProcessDelete ()
 
virtual void onCommandDelete (const itk::simple::Command *cmd) throw ()
 
virtual void PreUpdate (itk::ProcessObject *p)
 
virtual void RemoveITKObserver (EventCommand &e)
 
- Protected Member Functions inherited from itk::simple::NonCopyable
 NonCopyable ()
 
- Static Protected Member Functions inherited from itk::simple::ImageFilter< 0 >
static void FixNonZeroIndex (TImageType *img)
 
- Static Protected Member Functions inherited from itk::simple::ProcessObject
template<class TImageType >
static TImageType::ConstPointer CastImageToITK (const Image &img)
 
template<class TImageType >
static Image CastITKToImage (TImageType *img)
 
template<class TPixelType , unsigned int VImageDimension, unsigned int VLength, template< typename, unsigned int > class TVector>
static Image CastITKToImage (itk::Image< TVector< TPixelType, VLength >, VImageDimension > *img)
 
static const itk::EventObjectGetITKEventObject (EventEnum e)
 
template<typename T >
static std::ostream & ToStringHelper (std::ostream &os, const T &v)
 
static std::ostream & ToStringHelper (std::ostream &os, const char &v)
 
static std::ostream & ToStringHelper (std::ostream &os, const signed char &v)
 
static std::ostream & ToStringHelper (std::ostream &os, const unsigned char &v)
 

Detailed Description

Implementation of the N4 bias field correction algorithm.

The nonparametric nonuniform intensity normalization (N3) algorithm, as introduced by Sled et al. in 1998 is a method for correcting nonuniformity associated with MR images. The algorithm assumes a simple parametric model (Gaussian) for the bias field and does not require tissue class segmentation. In addition, there are only a couple of parameters to tune with the default values performing quite well. N3 has been publicly available as a set of perl scripts (http://www.bic.mni.mcgill.ca/ServicesSoftwareAdvancedImageProcessingTools/HomePage )

The N4 algorithm, encapsulated with this class, is a variation of the original N3 algorithm with the additional benefits of an improved B-spline fitting routine which allows for multiple resolutions to be used during the correction process. We also modify the iterative update component of algorithm such that the residual bias field is continually updated

Notes for the user:

The basic algorithm iterates between sharpening the intensity histogram of the corrected input image and spatially smoothing those results with a B-spline scalar field estimate of the bias field.

Author
Nicholas J. Tustison

Contributed by Nicholas J. Tustison, James C. Gee in the Insight Journal paper: https://hdl.handle.net/10380/3053

REFERENCE

J.G. Sled, A.P. Zijdenbos and A.C. Evans. "A Nonparametric Method for Automatic Correction of Intensity Nonuniformity in Data" IEEE Transactions on Medical Imaging, Vol 17, No 1. Feb 1998.

N.J. Tustison, B.B. Avants, P.A. Cook, Y. Zheng, A. Egan, P.A. Yushkevich, and J.C. Gee. "N4ITK: Improved N3 Bias Correction" IEEE Transactions on Medical Imaging, 29(6):1310-1320, June 2010.

See also
itk::simple::N4BiasFieldCorrection for the procedural interface
itk::N4BiasFieldCorrectionImageFilter for the Doxygen on the original ITK class.

Definition at line 72 of file sitkN4BiasFieldCorrectionImageFilter.h.

Member Typedef Documentation

typedef Image(Self::* itk::simple::N4BiasFieldCorrectionImageFilter::MemberFunctionType) (const Image *image, const Image *maskImage)
private

Setup for member function dispatching

Definition at line 178 of file sitkN4BiasFieldCorrectionImageFilter.h.

Define the pixels types supported by this filter

Definition at line 84 of file sitkN4BiasFieldCorrectionImageFilter.h.

Definition at line 74 of file sitkN4BiasFieldCorrectionImageFilter.h.

Constructor & Destructor Documentation

itk::simple::N4BiasFieldCorrectionImageFilter::N4BiasFieldCorrectionImageFilter ( )

Default Constructor that takes no arguments and initializes default parameters

itk::simple::N4BiasFieldCorrectionImageFilter::~N4BiasFieldCorrectionImageFilter ( )

Destructor

Member Function Documentation

template<class TImageType1 , class TImageType2 >
Image itk::simple::N4BiasFieldCorrectionImageFilter::DualExecuteInternal ( const Image image,
const Image maskImage 
)
private
Image itk::simple::N4BiasFieldCorrectionImageFilter::Execute ( const Image image,
const Image maskImage 
)

Execute the filter on the input image

Image itk::simple::N4BiasFieldCorrectionImageFilter::Execute ( const Image image,
const Image maskImage,
double  convergenceThreshold,
std::vector< uint32_t maximumNumberOfIterations,
double  biasFieldFullWidthAtHalfMaximum,
double  wienerFilterNoise,
uint32_t  numberOfHistogramBins,
const std::vector< uint32_t > &  numberOfControlPoints,
uint32_t  splineOrder 
)

Execute the filter on the input image with the given parameters

double itk::simple::N4BiasFieldCorrectionImageFilter::GetBiasFieldFullWidthAtHalfMaximum ( ) const
inline

Get the full width at half maximum parameter characterizing the width of the Gaussian deconvolution. Default = 0.15.

Definition at line 116 of file sitkN4BiasFieldCorrectionImageFilter.h.

double itk::simple::N4BiasFieldCorrectionImageFilter::GetConvergenceThreshold ( ) const
inline

Get the convergence threshold. Convergence is determined by the coefficient of variation of the difference image between the current bias field estimate and the previous estimate. If this value is less than the specified threshold, the algorithm proceeds to the next fitting level or terminates if it is at the last level.

Definition at line 96 of file sitkN4BiasFieldCorrectionImageFilter.h.

std::vector<uint32_t> itk::simple::N4BiasFieldCorrectionImageFilter::GetMaximumNumberOfIterations ( ) const
inline

Get the maximum number of iterations specified at each fitting level. Default = 50.

Definition at line 106 of file sitkN4BiasFieldCorrectionImageFilter.h.

std::string itk::simple::N4BiasFieldCorrectionImageFilter::GetName ( ) const
inlinevirtual

Name of this class

Implements itk::simple::ProcessObject.

Definition at line 162 of file sitkN4BiasFieldCorrectionImageFilter.h.

std::vector<uint32_t> itk::simple::N4BiasFieldCorrectionImageFilter::GetNumberOfControlPoints ( ) const
inline

Get the control point grid size defining the B-spline estimate of the scalar bias field. In each dimension, the B-spline mesh size is equal to the number of control points in that dimension minus the spline order. Default = 4 control points in each dimension for a mesh size of 1 in each dimension.

Definition at line 150 of file sitkN4BiasFieldCorrectionImageFilter.h.

uint32_t itk::simple::N4BiasFieldCorrectionImageFilter::GetNumberOfHistogramBins ( ) const
inline

Get number of bins defining the log input intensity histogram. Default = 200.

Definition at line 136 of file sitkN4BiasFieldCorrectionImageFilter.h.

uint32_t itk::simple::N4BiasFieldCorrectionImageFilter::GetSplineOrder ( ) const
inline

Get the spline order defining the bias field estimate. Default = 3.

Definition at line 160 of file sitkN4BiasFieldCorrectionImageFilter.h.

double itk::simple::N4BiasFieldCorrectionImageFilter::GetWienerFilterNoise ( ) const
inline

Get the noise estimate defining the Wiener filter. Default = 0.01.

Definition at line 126 of file sitkN4BiasFieldCorrectionImageFilter.h.

Self& itk::simple::N4BiasFieldCorrectionImageFilter::SetBiasFieldFullWidthAtHalfMaximum ( double  BiasFieldFullWidthAtHalfMaximum)
inline

Set the full width at half maximum parameter characterizing the width of the Gaussian deconvolution. Default = 0.15.

Definition at line 111 of file sitkN4BiasFieldCorrectionImageFilter.h.

Self& itk::simple::N4BiasFieldCorrectionImageFilter::SetConvergenceThreshold ( double  ConvergenceThreshold)
inline

Set the convergence threshold. Convergence is determined by the coefficient of variation of the difference image between the current bias field estimate and the previous estimate. If this value is less than the specified threshold, the algorithm proceeds to the next fitting level or terminates if it is at the last level.

Definition at line 91 of file sitkN4BiasFieldCorrectionImageFilter.h.

Self& itk::simple::N4BiasFieldCorrectionImageFilter::SetMaximumNumberOfIterations ( std::vector< uint32_t MaximumNumberOfIterations)
inline

Set the maximum number of iterations specified at each fitting level. Default = 50.

Definition at line 101 of file sitkN4BiasFieldCorrectionImageFilter.h.

Self& itk::simple::N4BiasFieldCorrectionImageFilter::SetNumberOfControlPoints ( const std::vector< uint32_t > &  NumberOfControlPoints)
inline

Set the control point grid size defining the B-spline estimate of the scalar bias field. In each dimension, the B-spline mesh size is equal to the number of control points in that dimension minus the spline order. Default = 4 control points in each dimension for a mesh size of 1 in each dimension.

Definition at line 141 of file sitkN4BiasFieldCorrectionImageFilter.h.

Self& itk::simple::N4BiasFieldCorrectionImageFilter::SetNumberOfControlPoints ( uint32_t  value)
inline

Set the values of the NumberOfControlPoints vector all to value

Definition at line 144 of file sitkN4BiasFieldCorrectionImageFilter.h.

Self& itk::simple::N4BiasFieldCorrectionImageFilter::SetNumberOfHistogramBins ( uint32_t  NumberOfHistogramBins)
inline

Set number of bins defining the log input intensity histogram. Default = 200.

Definition at line 131 of file sitkN4BiasFieldCorrectionImageFilter.h.

Self& itk::simple::N4BiasFieldCorrectionImageFilter::SetSplineOrder ( uint32_t  SplineOrder)
inline

Set the spline order defining the bias field estimate. Default = 3.

Definition at line 155 of file sitkN4BiasFieldCorrectionImageFilter.h.

Self& itk::simple::N4BiasFieldCorrectionImageFilter::SetWienerFilterNoise ( double  WienerFilterNoise)
inline

Set the noise estimate defining the Wiener filter. Default = 0.01.

Definition at line 121 of file sitkN4BiasFieldCorrectionImageFilter.h.

std::string itk::simple::N4BiasFieldCorrectionImageFilter::ToString ( ) const
virtual

Print ourselves out

Reimplemented from itk::simple::ProcessObject.

Friends And Related Function Documentation

Definition at line 180 of file sitkN4BiasFieldCorrectionImageFilter.h.

Member Data Documentation

double itk::simple::N4BiasFieldCorrectionImageFilter::m_BiasFieldFullWidthAtHalfMaximum
private

Definition at line 193 of file sitkN4BiasFieldCorrectionImageFilter.h.

double itk::simple::N4BiasFieldCorrectionImageFilter::m_ConvergenceThreshold
private

Definition at line 189 of file sitkN4BiasFieldCorrectionImageFilter.h.

nsstd::auto_ptr<detail::DualMemberFunctionFactory<MemberFunctionType> > itk::simple::N4BiasFieldCorrectionImageFilter::m_DualMemberFactory
private

Definition at line 184 of file sitkN4BiasFieldCorrectionImageFilter.h.

std::vector<uint32_t> itk::simple::N4BiasFieldCorrectionImageFilter::m_MaximumNumberOfIterations
private

Definition at line 191 of file sitkN4BiasFieldCorrectionImageFilter.h.

std::vector<uint32_t> itk::simple::N4BiasFieldCorrectionImageFilter::m_NumberOfControlPoints
private

Definition at line 199 of file sitkN4BiasFieldCorrectionImageFilter.h.

uint32_t itk::simple::N4BiasFieldCorrectionImageFilter::m_NumberOfHistogramBins
private

Definition at line 197 of file sitkN4BiasFieldCorrectionImageFilter.h.

uint32_t itk::simple::N4BiasFieldCorrectionImageFilter::m_SplineOrder
private

Definition at line 201 of file sitkN4BiasFieldCorrectionImageFilter.h.

double itk::simple::N4BiasFieldCorrectionImageFilter::m_WienerFilterNoise
private

Definition at line 195 of file sitkN4BiasFieldCorrectionImageFilter.h.


The documentation for this class was generated from the following file: