Source code for imgutils.metrics.psnr_

"""
Overview:
    Implementation of `PSNR <https://en.wikipedia.org/wiki/Peak_signal-to-noise_ratio>`_ metrics.
"""
import numpy as np

from ..data import rgb_encode

__all__ = [
    'psnr',
]


[docs]def psnr(img1, img2) -> float: """ Overview: Psnr difference between images. :param img1: First image. :param img2: Second image. :return: Psnr difference of these two images. Example: Here are some images for example .. image:: psnr.plot.py.svg :align: center >>> from imgutils.metrics import psnr >>> >>> psnr('psnr/origin.jpg', 'psnr/origin.jpg') # same image inf >>> psnr('psnr/origin.jpg', 'psnr/gaussian_20.dat.jpg') 15.058228614646987 >>> psnr('psnr/origin.jpg', 'psnr/gaussian_3.dat.jpg') 27.65611098737784 >>> psnr('psnr/origin.jpg', 'psnr/lq.dat.jpg') 25.29589659377844 """ d1, d2 = rgb_encode(img1), rgb_encode(img2) mse = np.mean((d1 - d2) ** 2) return float(10 * np.log10(1. / mse))