|
Medical Imaging Interaction Toolkit
2026.06.00
Medical Imaging Interaction Toolkit
|
Image-to-image filter that converts a PET image into a SUV image. More...
#include <mitkSUVImageFilter.h>


Public Member Functions | |
| mitkClassMacro (SUVImageFilter, ImageToImageFilter) | |
| itkSetEnumMacro (TargetVariant, SUVVariant) | |
| Set the target SUV variant. More... | |
| virtual SUVVariant | GetTargetVariant () const |
| itkSetEnumMacro (DICOMReadPolicy, DICOMReadPolicy) | |
| Policy for IBSI-SUV-recommended adaptations of borderline / ambiguous DICOM input. More... | |
| virtual DICOMReadPolicy | GetDICOMReadPolicy () const |
| virtual void | SetPatientWeightInGram (double _arg) |
| Override DICOM (0010,1030) Patient Weight, in [g]. More... | |
| virtual std::optional< double > | GetPatientWeightInGram () const |
| void | ClearPatientWeightInGram () |
| double | GetEffectivePatientWeightInGram () const |
| virtual void | SetPatientHeightInCm (double _arg) |
| Override DICOM (0010,1020) Patient Size, in [cm]. More... | |
| virtual std::optional< double > | GetPatientHeightInCm () const |
| void | ClearPatientHeightInCm () |
| double | GetEffectivePatientHeightInCm () const |
| itkSetEnumMacro (PatientSex, Sex) | |
| Override DICOM (0010,0040) Patient Sex. More... | |
| virtual std::optional< Sex > | GetPatientSex () const |
| void | ClearPatientSex () |
| Sex | GetEffectivePatientSex () const |
| virtual void | SetInjectedActivityInBq (double _arg) |
| Override DICOM (0018,1074) Radionuclide Total Dose, in [Bq]. More... | |
| virtual std::optional< double > | GetInjectedActivityInBq () const |
| void | ClearInjectedActivityInBq () |
| double | GetEffectiveInjectedActivityInBq () const |
| virtual void | SetHalfLifeInSec (double _arg) |
| Override DICOM (0018,1075) Radionuclide Half-Life, in [s]. More... | |
| virtual std::optional< double > | GetHalfLifeInSec () const |
| void | ClearHalfLifeInSec () |
| double | GetEffectiveHalfLifeInSec () const |
| void | SetDecayTimeOverrideInSec (double value) |
| Override the decay duration uniformly across every voxel, in [s]. More... | |
| virtual std::optional< double > | GetDecayTimeOverrideInSec () const |
| void | ClearDecayTimeOverrideInSec () |
| void | SetDecayTimeOverrideMap (DecayTimeMapType map) |
| Override the decay duration on a per-(timestep, slice) basis, in [s]. More... | |
| void | ClearDecayTimeOverrideMap () |
| const std::optional< DecayTimeMapType > & | GetDecayTimeOverrideMap () const |
| const DecayCorrectionInfo & | GetEffectiveDecayCorrection () const |
| virtual void | SetTracerIndex (int _arg) |
| Optional explicit selection for multi-item Radiopharmaceutical Information Sequence (0054,0016). More... | |
| virtual std::optional< int > | GetTracerIndex () const |
| void | ClearTracerIndex () |
| void | SetInputModelOverride (SUVInputModel v) |
| Override the pixel-semantics classification. More... | |
| void | ClearInputModelOverride () |
| std::optional< SUVInputModel > | GetInputModelOverride () const |
| SUVInputModel | GetEffectiveInputModel () const |
| std::optional< SUVInputModel > | GetDetectedInputModel () const noexcept |
| Input model classified (or override-derived) by the most recent ConfigureFromProperties call, regardless of whether that call completed. More... | |
| void | ConfigureFromProperties (const IPropertyProvider *props) |
| Resolve all unset fields from a property provider. More... | |
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 | |
| SUVImageFilter () | |
| ~SUVImageFilter () override | |
| void | GenerateData () override |
| void | GenerateOutputInformation () override |
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... | |
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 () |
Image-to-image filter that converts a PET image into a SUV image.
Single entry point for SUV computation. Encapsulates parameter resolution (CLI args / UI controls vs DICOM-derived defaults), the decay-correction pipeline, the per-voxel SUV math, and the variant-specific output normalization.
Each user-overridable field is held internally as std::optional<T>. An empty optional means "not set, derive from properties"; a populated optional means "user supplied this value; do not overwrite." itkSetMacro / itkGetConstMacro work directly: the macro setter takes T, and std::optional<T> assigns and compares heterogeneously against T (empty optional is unequal to any value, populated optional compares by value, assigning a T engages the optional).
Two accessor flavors per field:
GetXxx() returns the user-supplied override slot (std::optional<T>). Useful for UI round-tripping and "what did the caller pass?" diagnostics.GetEffectiveXxx() returns the resolved value (T) (either provided by user or deduced from dicum) that the filter will use. mitk::Exception.ClearXxx() resets a field to derive-from-properties.Definition at line 73 of file mitkSUVImageFilter.h.
|
protected |
|
overrideprotected |
| void mitk::SUVImageFilter::ClearDecayTimeOverrideInSec | ( | ) |
| void mitk::SUVImageFilter::ClearDecayTimeOverrideMap | ( | ) |
| void mitk::SUVImageFilter::ClearHalfLifeInSec | ( | ) |
| void mitk::SUVImageFilter::ClearInjectedActivityInBq | ( | ) |
| void mitk::SUVImageFilter::ClearInputModelOverride | ( | ) |
| void mitk::SUVImageFilter::ClearPatientHeightInCm | ( | ) |
| void mitk::SUVImageFilter::ClearPatientSex | ( | ) |
| void mitk::SUVImageFilter::ClearPatientWeightInGram | ( | ) |
| void mitk::SUVImageFilter::ClearTracerIndex | ( | ) |
| void mitk::SUVImageFilter::ConfigureFromProperties | ( | const IPropertyProvider * | props | ) |
Resolve all unset fields from a property provider.
Reads the standard PET DICOM tags (patient weight / height / sex, radiopharmaceutical info, decay-correction strategy). Explicit overrides set via the dedicated setters always take precedence over property-derived values.
Calling this is optional: Update() resolves the same way the first time it runs. Call it explicitly when you need to read GetEffective* or GetDetectedInputModel before Update (e.g. to drive a UI). The resolved configuration is a function of the input properties and the overrides, so a later change to the input or any setter re-resolves the parameters on the next Update.
| [in] | props | The source of DICOM properties; typically the filter's input image. |
props is not null. GetEffective*() accessor required by the chosen target variant is safe to call. On exception, the filter returns to its pre-call state and effective accessors stay unsafe.| MissingDICOMPropertyException | if a required property is absent and no override compensates for it. |
| InvalidDICOMPropertyValueException | if a property is present but holds an unparseable / unsupported value. |
| AmbiguousDecayTimingException | for unresolvable decay timing. |
| BenchmarkAdaptationRequiredException | (or a subclass) if DICOMReadPolicy is Strict and the input would have required an IBSI-SUV-recommended adaptation. |
| InvalidDecayTimeMapException | if a per-(timestep, slice) decay-time override map is set and its shape does not match the input image geometry (sparse cells or out-of-range timestep / slice coordinates). |
|
overrideprotected |
|
overrideprotected |
References mitk::BW.
|
virtual |
| const std::optional<DecayTimeMapType>& mitk::SUVImageFilter::GetDecayTimeOverrideMap | ( | ) | const |
|
noexcept |
Input model classified (or override-derived) by the most recent ConfigureFromProperties call, regardless of whether that call completed.
Unlike GetEffectiveInputModel, this accessor never throws and survives rollbacks: ConfigureFromProperties resets it on entry and runs input-model classification first, so once that step produces a value it stays available even if a later validation step in the same call throws.
The intended consumer is a UI that needs to know whether the input is pre-normalized (and what its source variant is) in order to drive UI affordances such as showing variant-specific patient inputs even after a configuration failure further downstream.
Returns std::nullopt if the most recent call did not reach a successful classification (it threw at or before that step), or if ConfigureFromProperties has never run.
|
virtual |
| const DecayCorrectionInfo& mitk::SUVImageFilter::GetEffectiveDecayCorrection | ( | ) | const |
| double mitk::SUVImageFilter::GetEffectiveHalfLifeInSec | ( | ) | const |
| double mitk::SUVImageFilter::GetEffectiveInjectedActivityInBq | ( | ) | const |
| SUVInputModel mitk::SUVImageFilter::GetEffectiveInputModel | ( | ) | const |
| double mitk::SUVImageFilter::GetEffectivePatientHeightInCm | ( | ) | const |
| Sex mitk::SUVImageFilter::GetEffectivePatientSex | ( | ) | const |
| double mitk::SUVImageFilter::GetEffectivePatientWeightInGram | ( | ) | const |
|
virtual |
|
virtual |
| std::optional<SUVInputModel> mitk::SUVImageFilter::GetInputModelOverride | ( | ) | const |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
| mitk::SUVImageFilter::itkSetEnumMacro | ( | DICOMReadPolicy | , |
| DICOMReadPolicy | |||
| ) |
Policy for IBSI-SUV-recommended adaptations of borderline / ambiguous DICOM input.
Default DICOMReadPolicy::Lenient, mirroring SUVCalculationHelper. Governs parameter resolution. Like the other setters, changing it after the filter has been configured re-resolves the parameters on the next Update.
| mitk::SUVImageFilter::itkSetEnumMacro | ( | PatientSex | , |
| Sex | |||
| ) |
Override DICOM (0010,0040) Patient Sex.
| mitk::SUVImageFilter::itkSetEnumMacro | ( | TargetVariant | , |
| SUVVariant | |||
| ) |
Set the target SUV variant.
Always required, no override semantics. Default at construction is SUVVariant::BW, matching the most common use case.
| mitk::SUVImageFilter::mitkClassMacro | ( | SUVImageFilter | , |
| ImageToImageFilter | |||
| ) |
|
static |
| void mitk::SUVImageFilter::SetDecayTimeOverrideInSec | ( | double | value | ) |
Override the decay duration uniformly across every voxel, in [s].
Mirrors the existing CLI –decay-time semantic: if set, the value is applied uniformly to every voxel and the DICOM-decay-correction pipeline is bypassed entirely.
value must be finite and non-negative. Zero is accepted and reproduces ADMIN-style behaviour (residual decay factor 2^0 = 1).
GetDecayTimeOverrideMap() is empty. The uniform and the per-(timestep, slice) decay-time overrides are mutually exclusive; the caller must ClearDecayTimeOverrideMap() before engaging the uniform override.| ConflictingDecayTimeOverrideException | if the precondition is violated. |
| InvalidDecayTimeOverrideException | if value is non-finite or negative. |
| void mitk::SUVImageFilter::SetDecayTimeOverrideMap | ( | DecayTimeMapType | map | ) |
Override the decay duration on a per-(timestep, slice) basis, in [s].
The map must be a complete and well-formed match for the input image: exactly one entry per (timestep, slice) the input owns, no out-of-range coordinates. Sparse or out-of-range maps are rejected at ConfigureFromProperties time with InvalidDecayTimeMapException; the filter does not silently fall back to DICOM-derived values for missing cells. Callers that want a DICOM baseline plus a few overrides must seed the map from GetEffectiveDecayCorrection() after a Configure pass without the override.
GetDecayTimeOverrideInSec() is empty. The two overrides are mutually exclusive (see SetDecayTimeOverrideInSec).| ConflictingDecayTimeOverrideException | if the precondition is violated. |
|
virtual |
Override DICOM (0018,1075) Radionuclide Half-Life, in [s].
|
virtual |
Override DICOM (0018,1074) Radionuclide Total Dose, in [Bq].
| void mitk::SUVImageFilter::SetInputModelOverride | ( | SUVInputModel | v | ) |
Override the pixel-semantics classification.
If set, ConfigureFromProperties does not call ClassifyPETInput on the property provider; the override is used directly. Replaces the legacy CLI –ignore-units-check escape: callers that want to force activity-concentration semantics regardless of (0054,1001) supply SetInputModelOverride({SUVPixelSemantics::ActivityConcentration, 1.0, ...}).
|
virtual |
Override DICOM (0010,1020) Patient Size, in [cm].
|
virtual |
Override DICOM (0010,1030) Patient Weight, in [g].
|
virtual |
Optional explicit selection for multi-item Radiopharmaceutical Information Sequence (0054,0016).
If unset, sequences with exactly one item are accepted automatically and multi-item sequences cause ConfigureFromProperties to throw.