123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- from skimage.measure import compare_ssim, compare_psnr
- from ipfml.exceptions import NumpyShapeComparisonException
- """
- Full-reference Image Quality Assessment (FR-IQA) methods
- """
- def _prepare_arrays(arr1, arr2):
- img_true = np.asarray(img_true, dtype=float_32)
- img_test = np.asarray(img_test, dtype=float_32)
- if img_true.shape != img_test.shape:
- raise NumpyShapeComparisonException
- return img_true, img_test
- def mse(img_true, img_test):
- """Returns Mean-Squared Error between two Numpy arrays
- Args:
- img_true: Image, numpy array of any dimension
- img_test: Image, numpy array of any dimension
- Returns:
- Computed MSE score
- Raises:
- NumpyShapeComparisonException: if shape of images are not the same
- Example:
- >>> from ipfml import utils
- >>> import numpy as np
- >>> arr1 = np.arange(10)
- >>> arr2 = np.arange(5, 10)
- >>> mse = utils.mse(arr1, arr2)
- >>> mse
- 100
- """
- img_true, img_test = _prepare_arrays(img_true, img_test)
- return np.mean(np.square(img_true - img_test), dtype=np.float64)
- def rmse(img_true, img_test):
- """Returns Mean-Squared Error between two Numpy arrays
- Args:
- img_true: Image, numpy array of any dimension
- img_test: Image, numpy array of any dimension
- Returns:
- Computed MSE score
- Raises:
- NumpyShapeComparisonException: if shape of images are not the same
- Example:
- >>> from ipfml import utils
- >>> import numpy as np
- >>> arr1 = np.arange(10)
- >>> arr2 = np.arange(5, 10)
- >>> rmse = utils.rmse(arr1, arr2)
- >>> rmse
- 100
- """
- return np.sqrt(mse(img_true, img_test))
- def mae(img_true, img_test):
- """Returns Mean-Squared Error between two Numpy arrays
- Args:
- img_true: Image, numpy array of any dimension
- img_test: Image, numpy array of any dimension
- Returns:
- Computed MSE score
- Raises:
- NumpyShapeComparisonException: if shape of images are not the same
- Example:
- >>> from ipfml import utils
- >>> import numpy as np
- >>> arr1 = np.arange(10)
- >>> arr2 = np.arange(5, 10)
- >>> mse = utils.mse(arr1, arr2)
- >>> mse
- 100
- """
- img_true, img_test = _prepare_arrays(img_true, img_test)
- return np.mean(np.absolute(img_true - img_test), dtype=np.float64)
- def pnsr(img_true, img_test):
- """Returns the computed Peak Signal to Noise Ratio (PSNR) between two images
- Args:
- img_true: Image, numpy array of any dimension
- img_test: Image, numpy array of any dimension
- Returns:
- Computed PSNR score
- """
- return compare_psnr(img_true, img_test)
- def ms_ssim(img_true, img_test):
- """
- Implemented later..
- """
- pass
- def vif(img_true, img_test):
- """
- Implemented later..
- """
- pass
|