在具有不同像素格式的 2 个图像之间生成的 PSNR 分数是否准确?

问题描述

我正在尝试验证像素格式之间的某些图像转换质量。我有一个基本测试图像,正在将它从给定的像素格式(例如 Y444)转换为不同的像素格式(例如 Y42B)。然后我通过生成 PSNR 分数将新图像与测试图像进​​行比较。但也有人担心,由于像素格式的数组大小不同,生成的分数可能不准确。

我目前正在使用自定义编码的 PSNR 分数生成器,但我可能会切换到 OpenCV 的 PSNR 功能。这是分数生成的当前代码

    """Computes the PSNR rating between 2 given images."""
    mse = mean((original - converted) ** 2)
    if (mse == 0):  # MSE is zero means no noise is present.
        # Therefore PSNR have no importance.
        return 100
    max_pixel = 255.0
    psnr = 20 * log10(max_pixel / sqrt(mse))
    return psnr

有谁知道这个分数是否真的准确?或者是否有我可以使用的库 oo 方法来提供更准确的度量,例如 OpenCV 的 PSNR 评分函数,或进行 SSIM 比较?

解决方法

两个图像的格式相同。您可以转换它们,然后应用 PSNR