如何用 Python 评估图像质量:综合指南

2023-03-28  本文已影响0人  iCloudEnd

将涵盖以下 4 个评估指标:

峰值信噪比 (PSNR)
结构相似性指数 (SSIM)
光谱角映射器 (SAM)
空间相关系数 (SCC)

我们将仔细研究每一个背后的数学原理,以便在您阅读完本博客后,您对幕后的实际情况有一个非常清楚的了解。这样做不仅可以帮助您区分它们,还可以帮助您确定哪个指标更适合您的用例。

PSNR:顾名思义,该技术必须处理图像中的峰值图像值和噪声密度。该值越高,噪声对图像峰值的影响就越小。从而更好的图像质量。

峰值信噪比

在对数尺度上评估值有助于我们对退化图像的质量度量有一个标准化的认识。因此,注意图像可能具有的动态值范围。

该评估指标的两个组成部分可以解释如下:

对于 8 位像素,每个像素的值应介于 0 到 255 之间。因此,当我们提到峰值像素值(表示为 MAXf)时,这将指代图像中存在的该范围之间的值。

噪声是清洁图像和噪声图像之间像素级差异的度量。此噪声表示为这两幅图像之间的 MSE。在数学上,这是给出的:

MSE 作为噪声的度量

其中:f表示原始图像,g表示退化图像,(m,n)表示图像矩阵的维度

import cv2
import numpy as np

def getPSNR(I1, I2):
    '''
    :param I1: 表示原始图像矩阵
    :param I2: 表示退化图像矩阵
    :return: psnr score 
    '''
    # mse calculation  mse 计算
    s1 = cv2.absdiff(I1, I2)
    # cannot make a square on 8 bits 不能在 8 位上做一个正方形
    s1 = np.float32(s1)
    s1 = s1 * s1
    sse = s1.sum()
    # return zero if the difference is extremely small  如果差异非常小则返回零
    if sse <= 1e-10:
        return 0
    else:
        shape = I1.shape
        mse = 1.0 * sse / (shape[0] * shape[1] * shape[2])
        # here 255 denotes the maximum possible  此处 255 表示8 位通道中的
        最大可能值 
        # value in a 8-bit channel
        psnr = 10.0 * np.log10((255 * 255) / mse)
        return psnr

SSIM:该评估指标着眼于三个特征以输出最终的总分。这些是亮度、对比度和结构。

上一篇 下一篇

猜你喜欢

热点阅读