SimpleITK
|
Normalize the grayscale values for a source image by matching the shape of the source image histogram to a reference histogram. More...
#include <sitkHistogramMatchingImageFilter.h>
Normalize the grayscale values for a source image by matching the shape of the source image histogram to a reference histogram.
HistogramMatchingImageFilter normalizes the grayscale values of a source image based on the grayscale values of either a reference image or a reference histogram. This filter uses a histogram matching technique where the histograms of the are matched only at a specified number of quantile values.
This filter was originally designed to normalize MR images of the same MR protocol and same body part. The algorithm works best if background pixels are excluded from both the source and reference histograms. A simple background exclusion method is to exclude all pixels whose grayscale values are smaller than the mean grayscale value. ThresholdAtMeanIntensityOn() switches on this simple background exclusion method. With ThresholdAtMeanIntensityOn() , The reference histogram returned from this filter will expand the first and last bin bounds to include the minimum and maximum intensity values of the entire reference image, but only intensity values greater than the mean will be used to populate the histogram.
The source image can be set via either SetInput() or SetSourceImage(). The reference object used is selected with can be set via SetReferenceImage() or SetReferenceHistogram().
SetNumberOfHistogramLevels() sets the number of bins used when creating histograms of the source and reference images. SetNumberOfMatchPoints() governs the number of quantile values to be matched.
This filter assumes that both the source and reference are of the same type and that the input and output image type have the same number of dimension and have scalar pixel types.
Definition at line 53 of file sitkHistogramMatchingImageFilter.h.
Public Types | |
using | PixelIDTypeList = BasicPixelIDTypeList |
using | Self = HistogramMatchingImageFilter |
Public Types inherited from itk::simple::ImageFilter | |
using | Self = ImageFilter |
Public Types inherited from itk::simple::ProcessObject | |
using | Self = ProcessObject |
Public Member Functions | |
Image | Execute (const Image &image, const Image &referenceImage) |
std::string | GetName () const |
uint32_t | GetNumberOfHistogramLevels () const |
uint32_t | GetNumberOfMatchPoints () const |
bool | GetThresholdAtMeanIntensity () const |
HistogramMatchingImageFilter () | |
Self & | SetNumberOfHistogramLevels (uint32_t NumberOfHistogramLevels) |
Self & | SetNumberOfMatchPoints (uint32_t NumberOfMatchPoints) |
Self & | SetThresholdAtMeanIntensity (bool ThresholdAtMeanIntensity) |
Self & | ThresholdAtMeanIntensityOff () |
Self & | ThresholdAtMeanIntensityOn () |
std::string | ToString () const |
virtual | ~HistogramMatchingImageFilter () |
Public Member Functions inherited from itk::simple::ImageFilter | |
ImageFilter () | |
virtual | ~ImageFilter ()=0 |
Public Member Functions inherited from itk::simple::ProcessObject | |
virtual void | Abort () |
virtual int | AddCommand (itk::simple::EventEnum event, const std::function< void()> &func) |
Directly add a callback to observe an event. More... | |
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 |
virtual void | SetNumberOfWorkUnits (unsigned int n) |
virtual unsigned int | GetNumberOfWorkUnits () const |
Private Types | |
using | MemberFunctionType = Image(Self::*)(const Image *image, const Image *referenceImage) |
Private Member Functions | |
template<class TImageType > | |
Image | ExecuteInternal (const Image *image, const Image *referenceImage) |
Private Attributes | |
std::unique_ptr< detail::MemberFunctionFactory< MemberFunctionType > > | m_MemberFactory |
uint32_t | m_NumberOfHistogramLevels {256u} |
uint32_t | m_NumberOfMatchPoints {1u} |
bool | m_ThresholdAtMeanIntensity {true} |
Friends | |
struct | detail::MemberFunctionAddressor< 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 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... | |
static bool | SetGlobalDefaultThreader (const std::string &threader) |
Set/Get the default threader used for process objects. More... | |
static std::string | GetGlobalDefaultThreader () |
Set/Get the default threader used for process objects. More... | |
static void | SetGlobalDefaultNumberOfThreads (unsigned int n) |
static unsigned int | GetGlobalDefaultNumberOfThreads () |
Set/Get the default threader used for process objects. More... | |
Protected Member Functions inherited from itk::simple::ImageFilter | |
void | CheckImageMatchingDimension (const Image &image1, const Image &image2, const std::string &image2Name) |
void | CheckImageMatchingPixelType (const Image &image1, const Image &image2, const std::string &image2Name) |
void | CheckImageMatchingSize (const Image &image1, const Image &image2, const std::string &image2Name) |
Protected Member Functions inherited from itk::simple::ProcessObject | |
virtual unsigned long | AddITKObserver (const itk::EventObject &, itk::Command *) |
virtual itk::ProcessObject * | GetActiveProcess () |
virtual void | OnActiveProcessDelete () |
virtual void | onCommandDelete (const itk::simple::Command *cmd) noexcept |
virtual void | PreUpdate (itk::ProcessObject *p) |
virtual void | RemoveITKObserver (EventCommand &e) |
Protected Member Functions inherited from itk::simple::NonCopyable | |
NonCopyable ()=default | |
NonCopyable (const NonCopyable &)=delete | |
NonCopyable & | operator= (const NonCopyable &)=delete |
Static Protected Member Functions inherited from itk::simple::ImageFilter | |
template<class TImageType > | |
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 TPixelType , unsigned int VImageDimension, unsigned int VLength, template< typename, unsigned int > class TVector> | |
static Image | CastITKToImage (itk::Image< TVector< TPixelType, VLength >, VImageDimension > *img) |
template<unsigned int VImageDimension, unsigned int VLength, template< unsigned int > class TVector> | |
static Image | CastITKToImage (itk::Image< TVector< VLength >, VImageDimension > *img) |
template<class TImageType > | |
static Image | CastITKToImage (TImageType *img) |
static const itk::EventObject & | GetITKEventObject (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) |
|
private |
Setup for member function dispatching
Definition at line 117 of file sitkHistogramMatchingImageFilter.h.
Define the pixels types supported by this filter
Definition at line 65 of file sitkHistogramMatchingImageFilter.h.
Definition at line 55 of file sitkHistogramMatchingImageFilter.h.
|
virtual |
Destructor
itk::simple::HistogramMatchingImageFilter::HistogramMatchingImageFilter | ( | ) |
Default Constructor that takes no arguments and initializes default parameters
Image itk::simple::HistogramMatchingImageFilter::Execute | ( | const Image & | image, |
const Image & | referenceImage | ||
) |
Execute the filter on the input image
|
private |
|
inlinevirtual |
Name of this class
Implements itk::simple::ProcessObject.
Definition at line 103 of file sitkHistogramMatchingImageFilter.h.
|
inline |
Set/Get the number of histogram levels used.
Definition at line 76 of file sitkHistogramMatchingImageFilter.h.
|
inline |
Set/Get the number of match points used.
Definition at line 86 of file sitkHistogramMatchingImageFilter.h.
|
inline |
Set/Get the threshold at mean intensity flag. If true, only source (reference) pixels which are greater than the mean source (reference) intensity is used in the histogram matching. If false, all pixels are used.
Definition at line 100 of file sitkHistogramMatchingImageFilter.h.
|
inline |
Set/Get the number of histogram levels used.
Definition at line 71 of file sitkHistogramMatchingImageFilter.h.
|
inline |
Set/Get the number of match points used.
Definition at line 81 of file sitkHistogramMatchingImageFilter.h.
|
inline |
Set/Get the threshold at mean intensity flag. If true, only source (reference) pixels which are greater than the mean source (reference) intensity is used in the histogram matching. If false, all pixels are used.
Definition at line 91 of file sitkHistogramMatchingImageFilter.h.
|
inline |
Definition at line 95 of file sitkHistogramMatchingImageFilter.h.
|
inline |
Set the value of ThresholdAtMeanIntensity to true or false respectfully.
Definition at line 94 of file sitkHistogramMatchingImageFilter.h.
|
virtual |
Print ourselves out
Reimplemented from itk::simple::ProcessObject.
|
friend |
Definition at line 121 of file sitkHistogramMatchingImageFilter.h.
|
private |
Definition at line 123 of file sitkHistogramMatchingImageFilter.h.
|
private |
Definition at line 126 of file sitkHistogramMatchingImageFilter.h.
|
private |
Definition at line 128 of file sitkHistogramMatchingImageFilter.h.
|
private |
Definition at line 130 of file sitkHistogramMatchingImageFilter.h.