dival.measure module¶
Provides the abstract Measure
base class and some popular measures.
Measure instances are identified by a unique short_name
, which
is used by the evaluation
module.
-
class
dival.measure.
Measure
(short_name=None)[source]¶ Bases:
abc.ABC
Abstract base class for measures used for evaluation.
In subclasses, either
__init__()
should be inherited or it should callsuper().__init__()
in order to register theshort_name
and to ensure it is unique.-
measure_type
¶ The measure type. Measures with type
'distance'
should attain small values if the reconstruction is good. Measures with type'quality'
should attain large values if the reconstruction is good.- Type
{
'distance'
,'quality'
}
-
short_name
¶ Short name of the measure, used as identifier (key in
measure_dict
).- Type
str
-
name
¶ Name of the measure.
- Type
str
-
description
¶ Description of the measure.
- Type
str
-
measure_type
= None¶ Class attribute, default value for
measure_type
.
-
description
= ''¶ Class attribute, default value for
description
.
-
measure_dict
= {'l2': <dival.measure.L2Measure object>, 'mse': <dival.measure.MSEMeasure object>, 'psnr': <dival.measure.PSNRMeasure object>, 'ssim': <dival.measure.SSIMMeasure object>}¶ Class attribute, registry of all measures with their
short_name
as key.
-
__init__
(short_name=None)[source]¶ - Parameters
short_name (str, optional) – The short name of this measure, used as identifier in
measure_dict
. If None is passed andshort_name
was not set by the subclass, the__name__
of the subclass is used. If short_name is already taken by another instance, a unique short name is generated by appending a suffix of format'_%d'
.
-
short_name
= ''¶ Class attribute, default value for
short_name
.
-
abstract
apply
(reconstruction, ground_truth)[source]¶ Calculate the value of this measure.
- Parameters
reconstruction (odl element) – The reconstruction.
ground_truth (odl element) – The ground truth to compare with.
- Returns
value – The value of this measure for the given reconstruction and ground_truth.
- Return type
float
-
classmethod
get_by_short_name
(short_name)[source]¶ Return
Measure
instance with given short name by registry lookup.- Parameters
short_name (str) – Short name, identifier in
measure_dict
.- Returns
measure – The instance.
- Return type
-
-
class
dival.measure.
L2Measure
(short_name=None)[source]¶ Bases:
dival.measure.Measure
The euclidean (l2) distance measure.
-
measure_type
= 'distance'¶
-
short_name
= 'l2'¶
-
name
= 'euclidean distance'¶
-
description
= 'distance given by sqrt(sum((reconstruction-ground_truth)**2))'¶
-
apply
(reconstruction, ground_truth)[source]¶ Calculate the value of this measure.
- Parameters
reconstruction (odl element) – The reconstruction.
ground_truth (odl element) – The ground truth to compare with.
- Returns
value – The value of this measure for the given reconstruction and ground_truth.
- Return type
float
-
-
class
dival.measure.
MSEMeasure
(short_name=None)[source]¶ Bases:
dival.measure.Measure
The mean squared error distance measure.
-
measure_type
= 'distance'¶
-
short_name
= 'mse'¶
-
name
= 'mean squared error'¶
-
description
= 'distance given by 1/n * sum((reconstruction-ground_truth)**2)'¶
-
apply
(reconstruction, ground_truth)[source]¶ Calculate the value of this measure.
- Parameters
reconstruction (odl element) – The reconstruction.
ground_truth (odl element) – The ground truth to compare with.
- Returns
value – The value of this measure for the given reconstruction and ground_truth.
- Return type
float
-
-
dival.measure.
MSE
= <dival.measure.MSEMeasure object>¶ Instance of
MSEMeasure
, withshort_name='mse'
.
-
class
dival.measure.
PSNRMeasure
(data_range=None, short_name=None)[source]¶ Bases:
dival.measure.Measure
The peak signal-to-noise ratio (PSNR) measure.
The data range is automatically determined from the ground truth if not given to the constructor.
-
data_range
¶ The data range (max-min possible value). If data_range is None,
np.max(ground_truth) - np.min(ground_truth)
is used inapply()
.- Type
float or None
-
measure_type
= 'quality'¶
-
short_name
= 'psnr'¶
-
name
= 'peak signal-to-noise ratio'¶
-
description
= 'quality given by 10*log10(MAX**2/MSE)'¶
-
__init__
(data_range=None, short_name=None)[source]¶ - Parameters
data_range (float, optional) – The data range (max-min possible value). If data_range is None,
np.max(ground_truth) - np.min(ground_truth)
is used inapply()
.short_name (str, optional) – Short name.
-
apply
(reconstruction, ground_truth)[source]¶ Calculate the value of this measure.
- Parameters
reconstruction (odl element) – The reconstruction.
ground_truth (odl element) – The ground truth to compare with.
- Returns
value – The value of this measure for the given reconstruction and ground_truth.
- Return type
float
-
-
dival.measure.
PSNR
= <dival.measure.PSNRMeasure object>¶ Instance of
PSNRMeasure
, withdata_range=None
andshort_name='psnr'
.
-
class
dival.measure.
SSIMMeasure
(short_name=None, **kwargs)[source]¶ Bases:
dival.measure.Measure
The structural similarity index measure.
-
measure_type
= 'quality'¶
-
short_name
= 'ssim'¶
-
name
= 'structural similarity index'¶
-
description
= 'The (M)SSIM like described in `Wang et al. 2014 <https://doi.org/10.1109/TIP.2003.819861>`_.'¶
-
__init__
(short_name=None, **kwargs)[source]¶ This is a wrapper for
skimage.metrics.structural_similarity()
. The data range is automatically determined from the ground truth if not given to the constructor.- Parameters
short_name (str, optional) – Short name.
kwargs (dict, optional) – Keyword arguments that will be passed to
structural_similarity()
inapply()
. If data_range is not specified,np.max(ground_truth) - np.min(ground_truth)
is used.
-
apply
(reconstruction, ground_truth)[source]¶ Calculate the value of this measure.
- Parameters
reconstruction (odl element) – The reconstruction.
ground_truth (odl element) – The ground truth to compare with.
- Returns
value – The value of this measure for the given reconstruction and ground_truth.
- Return type
float
-
-
dival.measure.
SSIM
= <dival.measure.SSIMMeasure object>¶ Instance of
SSIMMeasure
, withdata_range=None
andshort_name='ssim'
.