Medical Imaging Interaction Toolkit  2026.06.00
Medical Imaging Interaction Toolkit
mitkSUVNormalizationStrategy.h
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 #ifndef mitkSUVNormalizationStrategy_h
14 #define mitkSUVNormalizationStrategy_h
15 
16 #include <limits>
17 #include <memory>
18 #include <optional>
19 
20 #include <mitkException.h>
21 #include <mitkExceptionMacro.h>
22 
24 
25 #include <MitkPETExports.h>
26 
27 namespace mitk
28 {
41  {
42  public:
44  };
45 
67  enum class SUVVariant
68  {
69  BW,
72  IBW,
73  BSA
74  };
75 
103  {
105  double bodyWeightKg = std::numeric_limits<double>::quiet_NaN();
107  double heightM = std::numeric_limits<double>::quiet_NaN();
109  std::optional<Sex> sex;
110  };
111 
130  {
131  public:
132  virtual ~SUVNormalizationStrategy() = default;
133 
145  virtual double ComputeScaleNumerator(const SUVNormalizationInputs& inputs) const = 0;
146 
148  virtual SUVVariant Variant() const = 0;
149  };
150 
162  {
163  public:
164  double ComputeScaleNumerator(const SUVNormalizationInputs& inputs) const override;
165  SUVVariant Variant() const override { return SUVVariant::BW; }
166  };
167 
193  {
194  public:
195  double ComputeScaleNumerator(const SUVNormalizationInputs& inputs) const override;
196  SUVVariant Variant() const override { return SUVVariant::LBM_Janmahasatian; }
197  };
198 
220  {
221  public:
222  double ComputeScaleNumerator(const SUVNormalizationInputs& inputs) const override;
223  SUVVariant Variant() const override { return SUVVariant::LBM_James128; }
224  };
225 
262  {
263  public:
264  double ComputeScaleNumerator(const SUVNormalizationInputs& inputs) const override;
265  SUVVariant Variant() const override { return SUVVariant::IBW; }
266  };
267 
289  {
290  public:
291  double ComputeScaleNumerator(const SUVNormalizationInputs& inputs) const override;
292  SUVVariant Variant() const override { return SUVVariant::BSA; }
293  };
294 
301  std::unique_ptr<SUVNormalizationStrategy> MITKPET_EXPORT
303 
317 
331 }
332 
333 #endif
#define MITKPET_EXPORT
Body-surface-area-normalized SUV strategy (SUVbsa).
double ComputeScaleNumerator(const SUVNormalizationInputs &inputs) const override
Compute the variant-specific scale numerator.
Body-weight-normalized SUV strategy (SUVbw).
SUVVariant Variant() const override
double ComputeScaleNumerator(const SUVNormalizationInputs &inputs) const override
Compute the variant-specific scale numerator.
Ideal-body-weight-normalized SUV strategy (SUVibw), Sugawara (1999) sex-specific formula.
double ComputeScaleNumerator(const SUVNormalizationInputs &inputs) const override
Compute the variant-specific scale numerator.
Lean-body-mass-normalized SUV strategy using the James (1976) "James 128" formula (SUVlbm-James128).
double ComputeScaleNumerator(const SUVNormalizationInputs &inputs) const override
Compute the variant-specific scale numerator.
Lean-body-mass-normalized SUV strategy using the Janmahasatian (2005) formula (SUVlbm-Janma).
double ComputeScaleNumerator(const SUVNormalizationInputs &inputs) const override
Compute the variant-specific scale numerator.
A required SUV normalization input is missing or invalid.
mitkExceptionClassMacro(MissingSUVInputException, SUVHelperException)
Base class for failures originating from the SUV calculation helpers.
Strategy that computes the variant-specific scale numerator used by the SUV scale factor.
virtual SUVVariant Variant() const =0
virtual double ComputeScaleNumerator(const SUVNormalizationInputs &inputs) const =0
Compute the variant-specific scale numerator.
virtual ~SUVNormalizationStrategy()=default
Find image slices visible on a given plane.
std::unique_ptr< SUVNormalizationStrategy > MITKPET_EXPORT MakeSUVNormalizationStrategy(SUVVariant variant)
Construct the SUV normalization strategy for the given variant.
bool MITKPET_EXPORT VariantRequiresPatientSex(SUVVariant variant)
Whether the given SUV variant's scale numerator depends on the patient's sex.
bool MITKPET_EXPORT VariantRequiresPatientHeight(SUVVariant variant)
Whether the given SUV variant's scale numerator depends on the patient's height.
SUVVariant
Identifies a Standardized Uptake Value (SUV) variant.
Inputs available to a SUV normalization strategy.