如何计算 Python 中的最大信噪比 (PSNR)?有没有可以计算图像 PSNR 的库?
Python 中图像的峰值信噪比 (PSNR)
信息处理
图像处理
噪音
Python
2022-01-11 14:12:04
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,这意味着您所需信号相对于其他所有信号的功率(失真)。