Python 中图像的峰值信噪比 (PSNR)

信息处理 图像处理 噪音 Python
2022-01-11 14:12:04

如何计算 Python 中的最大信噪比 (PSNR)?有没有可以计算图像 PSNR 的库?

4个回答

您可以像以下示例一样使用 cv2.PSNR:


import cv2
img1 = cv2.imread('img1.bmp')
img2 = cv2.imread('img2.bmp')
psnr = cv2.PSNR(img1, img2)

两幅图像的PSNR值计算步骤:

import math
import cv2
import numpy as np

original = cv2.imread("original.png")
contrast = cv2.imread("photoshopped.png", 1)

def psnr(img1, img2):
    mse = np.mean((img1 - img2) ** 2)
    if mse == 0:
        return 100
    PIXEL_MAX = 255.0
    return 20 * math.log10(PIXEL_MAX / math.sqrt(mse))

d = psnr(original, contrast)
print(d)

细节。

先转浮起来!!!!!!!!!先转浮起来!!!!!!!!!先转浮起来!!!!!!!!!

def compute_psnr(img1, img2):
img1 = img1.astype(np.float64) / 255.
img2 = img2.astype(np.float64) / 255.
mse = np.mean((img1 - img2) ** 2)
if mse == 0:
    return "Same Image"
return 10 * math.log10(1. / mse)

如果您有无噪声的信号(图像)副本,则可以计算与 SNR 直接相关的相关系数。

有关确定相关系数和 SNR 的具体细节,请参阅我的回复:

噪音检测

在这种情况下,没有“最大 SNR”,但将是整个图像的 SNR,这意味着您所需信号相对于其他所有信号的功率(失真)。