[docs]@add_suffix_to_doc(DOCUMENT_EXTRA_PARAMETERS)classPSNRMetricConfig(MetricConfig,_GetNotNansConfig):""" Config class for :py:class:`monai.metrics.PSNRMetric`. ``get_not_nans`` is not supported currently. """max_val:PositiveFloatreduction:Reduction=PSNR_MONAI_DEFAULTS["reduction"]@staticmethoddefoptimum()->Optimum:"""The optimum of the metric."""returnOptimum.MAX
class_BaseSSIMConfig(_GetNotNansConfig):"Base config class for SSIM-related metrics."spatial_dims:PositiveIntdata_range:PositiveFloatkernel_type:Kernelkernel_sigma:Union[PositiveFloat,Tuple[PositiveFloat,...]]k1:NonNegativeFloatk2:NonNegativeFloat@field_validator("spatial_dims",mode="after")@classmethoddefvalidator_spatial_dims(cls,v):"""Validates the spatial dimensions."""assertv==2orv==3,f"spatial_dims must be 2 or 3. You passed: {v}."returnv@model_validator(mode="after")defvalidator_kernel_sigma(self):"""Checks coherence between fields."""self._check_spatial_dim("kernel_sigma")returnselfdef_check_spatial_dim(self,attribute:str)->None:"""Checks that the dimensionality of an attribute is consistent with self.spatial_dims."""value=getattr(self,attribute)ifisinstance(value,tuple):assert(len(value)==self.spatial_dims),f"If you pass a sequence for {attribute}, it must be of size {self.spatial_dims}. You passed: {value}."
[docs]@add_suffix_to_doc(DOCUMENT_EXTRA_PARAMETERS)classSSIMMetricConfig(MetricConfig,_BaseSSIMConfig):""" Config class for :py:class:`monai.metrics.regression.SSIMMetric`. ``get_not_nans`` is not supported currently. """spatial_dims:PositiveIntdata_range:PositiveFloat=SSIM_MONAI_DEFAULTS["data_range"]kernel_type:Kernel=SSIM_MONAI_DEFAULTS["kernel_type"]win_size:Union[PositiveInt,Tuple[PositiveInt,...]]=SSIM_MONAI_DEFAULTS["win_size"]kernel_sigma:Union[PositiveFloat,Tuple[PositiveFloat,...]]=SSIM_MONAI_DEFAULTS["kernel_sigma"]k1:NonNegativeFloat=SSIM_MONAI_DEFAULTS["k1"]k2:NonNegativeFloat=SSIM_MONAI_DEFAULTS["k2"]reduction:Reduction=SSIM_MONAI_DEFAULTS["reduction"]@staticmethoddefoptimum()->Optimum:"""The optimum of the metric."""returnOptimum.MAX@model_validator(mode="after")defvalidator_win_size(self):"""Checks coherence between fields."""self._check_spatial_dim("win_size")returnself
[docs]@add_suffix_to_doc(DOCUMENT_EXTRA_PARAMETERS)classMultiScaleSSIMMetricConfig(MetricConfig,_BaseSSIMConfig):""" Config class for :py:class:`monai.metrics.MultiScaleSSIMMetric`. ``get_not_nans`` is not supported currently. """spatial_dims:PositiveIntdata_range:PositiveFloat=MULTI_SCALE_SSIM_MONAI_DEFAULTS["data_range"]kernel_type:Kernel=MULTI_SCALE_SSIM_MONAI_DEFAULTS["kernel_type"]kernel_size:Union[PositiveInt,Tuple[PositiveInt,...]]=MULTI_SCALE_SSIM_MONAI_DEFAULTS["kernel_size"]kernel_sigma:Union[PositiveFloat,Tuple[PositiveFloat,...]]=MULTI_SCALE_SSIM_MONAI_DEFAULTS["kernel_sigma"]k1:NonNegativeFloat=MULTI_SCALE_SSIM_MONAI_DEFAULTS["k1"]k2:NonNegativeFloat=MULTI_SCALE_SSIM_MONAI_DEFAULTS["k2"]weights:Tuple[PositiveFloat,...]=MULTI_SCALE_SSIM_MONAI_DEFAULTS["weights"]reduction:Reduction=MULTI_SCALE_SSIM_MONAI_DEFAULTS["reduction"]@staticmethoddefoptimum()->Optimum:"""The optimum of the metric."""returnOptimum.MAX@model_validator(mode="after")defvalidator_kernel_size(self):"""Checks coherence between fields."""self._check_spatial_dim("kernel_size")returnself