PYTHON 计算PSNR

PSNR 计算公式

对于一张RGB三通道图像,其计算公式如下:

先计算图像与Ground Truth的均方误差MSE:
在这里插入图片描述

再计算PSNR:

在这里插入图片描述

python 实现

网上的实现有下面两种:

import imageio
import numpy as np
import math
 
def psnr1(img1, img2):
   mse = np.mean((img1/1.0 - img2/1.0) ** 2 )
   if mse < 1.0e-10:
      return 100
   return 10 * math.log10(255.0**2/mse)
 
def psnr2(img1, img2):
   mse = np.mean( (img1/255. - img2/255.) ** 2 )
   if mse < 1.0e-10:
      return 100
   PIXEL_MAX = 1
   return 20 * math.log10(PIXEL_MAX / math.sqrt(mse))

gt = imageio.imread('1.jpg')
img= imageio.imread('2.jpg')

print(psnr1(gt,img))
print(psnr2(gt,img))

注意点:

  1. 使用imageio的原因是在使用scipy.misc.imread()的时候,被提示这个写法将被丢弃,所以大家也可以选择导入这个新的模块来进行图像的读写等操作。

  2. 其中psnr1函数中在两个数组相减前除以1.0,是为了将数组的类型从uint类型转化为float类型。

转载:https://blog.csdn.net/u010886794/article/details/84784453

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值