mri-autoencoder-v0.1 / metrics.py
pidajay's picture
Commited model weights and demo code
83e314f
import numpy as np
from skimage.metrics import peak_signal_noise_ratio, structural_similarity
from typing import Optional
def ssim(
gt: np.ndarray, pred: np.ndarray, data_range: Optional[float] = None
) -> np.ndarray:
"""Compute Structural Similarity Index Metric (SSIM)"""
if not gt.ndim == 3:
raise ValueError("Unexpected number of dimensions in ground truth.")
if not gt.ndim == pred.ndim:
raise ValueError("Ground truth dimensions does not match pred.")
data_range = gt.max() if data_range is None else data_range
ssim = np.array([0])
for slice_num in range(gt.shape[0]):
ssim = ssim + structural_similarity(
gt[slice_num], pred[slice_num], data_range=data_range
)
return ssim / gt.shape[0]
def psnr(
gt: np.ndarray, pred: np.ndarray, data_range: Optional[float] = None
) -> np.ndarray:
"""Compute Peak Signal to Noise Ratio metric (PSNR)"""
data_range = gt.max() if data_range is None else data_range
return peak_signal_noise_ratio(gt, pred, data_range=data_range)