Medical Imaging Interaction Toolkit  2026.06.00
Medical Imaging Interaction Toolkit
mitk::CESTImageNormalizationFilter Class Reference

Normalization filter for CEST images using M0 reference images. More...

#include <mitkCESTImageNormalizationFilter.h>

Inheritance diagram for mitk::CESTImageNormalizationFilter:
Collaboration diagram for mitk::CESTImageNormalizationFilter:

Public Member Functions

 mitkClassMacro (CESTImageNormalizationFilter, ImageToImageFilter)
 
Pointer Clone () const
 
- Public Member Functions inherited from mitk::ImageToImageFilter
 mitkClassMacro (ImageToImageFilter, ImageSource)
 
Pointer Clone () const
 
virtual void SetInput (const InputImageType *image)
 Set the image input of this process object. More...
 
virtual void SetInput (unsigned int idx, const InputImageType *image)
 Set the image input at the specified index. More...
 
InputImageType * GetInput (void)
 Get the input image (non-const). More...
 
InputImageType * GetInput (unsigned int idx)
 Get the input image at the specified index (non-const). More...
 
const InputImageType * GetInput (void) const
 Get the input image (const). More...
 
const InputImageType * GetInput (unsigned int idx) const
 Get the input image at the specified index (const). More...
 
- Public Member Functions inherited from mitk::ImageSource
 mitkClassMacro (ImageSource, BaseDataSource)
 
Pointer Clone () const
 
mitkBaseDataSourceGetOutputDeclarations itk::DataObject::Pointer MakeOutput (DataObjectPointerArraySizeType idx) override
 Get the output data of this image source object. More...
 
itk::DataObject::Pointer MakeOutput (const DataObjectIdentifierType &name) override
 
virtual vtkImageData * GetVtkImageData ()
 Get the output as VTK image data (non-const version). More...
 
virtual const vtkImageData * GetVtkImageData () const
 Get the output as VTK image data (const version). More...
 
- Public Member Functions inherited from mitk::BaseDataSource
 mitkClassMacroItkParent (BaseDataSource, itk::ProcessObject)
 
OutputType * GetOutput ()
 
const OutputType * GetOutput () const
 
OutputType * GetOutput (DataObjectPointerArraySizeType idx)
 
const OutputType * GetOutput (DataObjectPointerArraySizeType idx) const
 
virtual void GraftOutput (OutputType *output)
 Graft the specified BaseData onto this BaseDataSource's output. More...
 
virtual void GraftOutput (const DataObjectIdentifierType &key, OutputType *output)
 Graft the specified base data object onto a named output. More...
 
virtual void GraftNthOutput (unsigned int idx, OutputType *output)
 Graft the specified base data object onto this BaseDataSource's idx'th output. More...
 
bool Updating () const
 Check whether the pipeline is currently executing. More...
 

Static Public Member Functions

static Pointer New ()
 
- Static Public Member Functions inherited from mitk::ImageToImageFilter
static Pointer New ()
 Method for creation through the object factory. More...
 
- Static Public Member Functions inherited from mitk::ImageSource
static Pointer New ()
 Method for creation through the object factory. More...
 

Protected Member Functions

 CESTImageNormalizationFilter ()
 Standard constructor. More...
 
 ~CESTImageNormalizationFilter () override
 Standard destructor. More...
 
void GenerateOutputInformation () override
 Generate the output information of this filter (e.g. image dimension, image type, etc.). The interface ImageToImageFilter requires this implementation. Everything is taken from the input image. More...
 
void GenerateData () override
 Generate the normalized output image. More...
 
template<typename TPixel , unsigned int VImageDimension>
void NormalizeTimeSteps (const itk::Image< TPixel, VImageDimension > *image)
 
- Protected Member Functions inherited from mitk::ImageToImageFilter
 ImageToImageFilter ()
 
 ~ImageToImageFilter () override
 
void PrintSelf (std::ostream &os, itk::Indent indent) const override
 Print self information to the given stream. More...
 
void GenerateInputRequestedRegion () override
 Determine the input requested region to produce the output requested region. More...
 
- Protected Member Functions inherited from mitk::ImageSource
 ImageSource ()
 
 ~ImageSource () override
 
void GenerateData () override
 A version of GenerateData() specific for image processing filters. More...
 
virtual void ThreadedGenerateData (const OutputImageRegionType &outputRegionForThread, itk::ThreadIdType threadId)
 If an imaging filter can be implemented as a multithreaded algorithm, the filter will provide an implementation of ThreadedGenerateData(). More...
 
void PrepareOutputs () override
 This method is intentionally left blank. More...
 
virtual void AllocateOutputs ()
 The GenerateData method normally allocates the buffers for all of the outputs of a filter. More...
 
virtual void BeforeThreadedGenerateData ()
 If an imaging filter needs to perform processing after the buffer has been allocated but before threads are spawned, the filter can provide an implementation for BeforeThreadedGenerateData(). More...
 
virtual void AfterThreadedGenerateData ()
 If an imaging filter needs to perform processing after all processing threads have completed, the filter can provide an implementation for AfterThreadedGenerateData(). More...
 
virtual unsigned int SplitRequestedRegion (unsigned int i, unsigned int num, OutputImageRegionType &splitRegion)
 Split the output's RequestedRegion into "num" pieces, returning region "i" as "splitRegion". More...
 
- Protected Member Functions inherited from mitk::BaseDataSource
 BaseDataSource ()
 Constructor. More...
 
 ~BaseDataSource () override
 Destructor. More...
 

Protected Attributes

std::string m_RealOffsets
 Offsets without M0s, space-separated, stored after normalization. More...
 
std::vector< unsigned int > m_NonM0Indices
 Indices of non-M0 timesteps in the original input image. More...
 

Additional Inherited Members

- Public Types inherited from mitk::ImageToImageFilter
typedef Superclass::OutputImageRegionType OutputImageRegionType
 Superclass typedefs. More...
 
typedef mitk::Image InputImageType
 Some convenient typedefs. More...
 
typedef InputImageType::Pointer InputImagePointer
 
typedef InputImageType::ConstPointer InputImageConstPointer
 
typedef SlicedData::RegionType InputImageRegionType
 
- Public Types inherited from mitk::ImageSource
typedef mitk::Image OutputImageType
 Some convenient typedefs. More...
 
typedef OutputImageType OutputType
 
typedef OutputImageType::Pointer OutputImagePointer
 
typedef SlicedData::RegionType OutputImageRegionType
 
- Public Types inherited from mitk::BaseDataSource
typedef BaseData OutputType
 Output data type. More...
 
typedef itk::DataObject::DataObjectIdentifierType DataObjectIdentifierType
 Identifier type for named data objects. More...
 
- Static Protected Member Functions inherited from mitk::ImageSource
static itk::ITK_THREAD_RETURN_TYPE ThreaderCallback (void *arg)
 Static function used as a "callback" by the MultiThreader. More...
 
- Static Protected Member Functions inherited from mitk::BaseDataSource
static Pointer New ()
 

Detailed Description

Normalization filter for CEST images using M0 reference images.

This filter normalizes CEST images by dividing each voxel value by the corresponding M0 (normalization) reference voxel value. It only works with 4D images and assumes that the input mitk::Image has a property called "CEST.Offsets" (mitk::CEST_PROPERTY_NAME_OFFSETS), with offsets separated by spaces. The number of offsets must match the number of timesteps.

Each timestep with a corresponding offset greater than 299 or less than -299 will be interpreted as a normalization (M0) image. If only one M0 image is present, normalization is done by dividing the voxel value by the corresponding M0 voxel value. If multiple M0 images are present, normalization between any two M0 images is done by dividing by a linear interpolation between them. The M0 images themselves are removed from the result.

The output image will have:

  • The same 3D geometry as the input image
  • A time geometry consisting only of non-M0 timesteps
  • Double pixel type
  • Updated "CEST.Offsets" property without M0 offset values
  • Removed DICOM UIDs (series, study, SOP instance)
Precondition
The input image must be a 4D image.
The input image must have a "CEST.Offsets" property with space-separated offset values.
The number of offsets must match the number of timesteps.
At least one offset must be an M0 indicator (absolute value > 299).
See also
CustomTagParser, ExtractCESTOffset, IsNotNormalizedCESTImage, ImageToImageFilter

Definition at line 50 of file mitkCESTImageNormalizationFilter.h.

Constructor & Destructor Documentation

◆ CESTImageNormalizationFilter()

mitk::CESTImageNormalizationFilter::CESTImageNormalizationFilter ( )
protected

Standard constructor.

◆ ~CESTImageNormalizationFilter()

mitk::CESTImageNormalizationFilter::~CESTImageNormalizationFilter ( )
overrideprotected

Standard destructor.

Member Function Documentation

◆ Clone()

Pointer mitk::CESTImageNormalizationFilter::Clone ( ) const

◆ GenerateData()

void mitk::CESTImageNormalizationFilter::GenerateData ( )
overrideprotected

Generate the normalized output image.

Performs the actual M0 normalization across all timesteps. M0 timesteps are identified, linear interpolation weights are computed between adjacent M0 images, and each non-M0 timestep is divided by the interpolated M0 value. The time geometry is updated to exclude M0 timesteps.

Exceptions
mitk::Exceptionif the input image is not 4D.

◆ GenerateOutputInformation()

void mitk::CESTImageNormalizationFilter::GenerateOutputInformation ( )
overrideprotected

Generate the output information of this filter (e.g. image dimension, image type, etc.). The interface ImageToImageFilter requires this implementation. Everything is taken from the input image.

◆ mitkClassMacro()

mitk::CESTImageNormalizationFilter::mitkClassMacro ( CESTImageNormalizationFilter  ,
ImageToImageFilter   
)

◆ New()

static Pointer mitk::CESTImageNormalizationFilter::New ( )
static

◆ NormalizeTimeSteps()

template<typename TPixel , unsigned int VImageDimension>
void mitk::CESTImageNormalizationFilter::NormalizeTimeSteps ( const itk::Image< TPixel, VImageDimension > *  image)
protected

Internal templated method that normalizes across timesteps.

Template Parameters
TPixelThe pixel type of the input image.
VImageDimensionThe dimensionality of the input image (must be 4).
Parameters
[in]imageThe ITK image to normalize.

Member Data Documentation

◆ m_NonM0Indices

std::vector< unsigned int > mitk::CESTImageNormalizationFilter::m_NonM0Indices
protected

Indices of non-M0 timesteps in the original input image.

Definition at line 95 of file mitkCESTImageNormalizationFilter.h.

◆ m_RealOffsets

std::string mitk::CESTImageNormalizationFilter::m_RealOffsets
protected

Offsets without M0s, space-separated, stored after normalization.

Definition at line 92 of file mitkCESTImageNormalizationFilter.h.


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