psnr峰值信噪比,
计算公式:
相同文件大小的jpg和heic的psnr
import cv2 as cv
import math
import numpy as np
import pyheif
from PIL import Image
def psnr1(img1,img2):
img1 =np.float64(img1)
img2 =np.float64(img2)
#compute mse
# mse = np.mean((img1-img2)**2)
mse = np.mean((img2/1.0-img1/1.0)**2)
#compute psnr
if mse < 1e-10:
return 100
psnr1 = 20*math.log10(255/math.sqrt(mse))
return psnr1
def psnr2(img1,img2):
img1 =np.float64(img1)
img2 =np.float64(img2)
mse = np.mean((img2/255.0-img1/255.0)**2)
if mse < 1e-10:
return 100
psnr2 = 20*math.log10(1/math.sqrt(mse))
return psnr2
imag1 = cv.imread("dian.jpg")
print (imag1.shape)
heif_file = pyheif.read("dian.heic")
imag2 = Image.frombytes(
heif_file.mode,
heif_file.size,
heif_file.data,
"raw",
heif_file.mode,
heif_file.stride,
)
res1 = psnr1(imag1,imag2)
print("res1:",res1)



