本文链接:https://blog.csdn.net/leviopku/article/details/84586446

PSNR的全称为“Peak Signal-to-Noise Ratio”,直译为中文就是峰值信噪比。

是一种衡量图像质量的指标,在很多领域都会需要这个指标,比如在超分辨率重建图像的时候,PSNR就是很重要的指标了。

WIKI解释

峰值信噪比(英语:Peak signal-to-noise ratio常缩写为PSNR)是一个表示信号最大可能功率和影响它的精度的破坏性噪声功率的比值的工程术语。由于许多信号都有非常宽的动态范围,峰值信号比常用对数分贝单位来表示。

计算PSNR要先知道MSE(均方误差)的计算。两个m×n单色图像I和k,如果一个为另外一个的噪声近似,那么它们的均方误差定义为:

MSE的概念是常见的损失函数,而PNSR就是通过MSE得出来的,公式如下:

其中,MAXI 是表示图像点颜色的最大数值,如果每个采样点用8位表示,那么就是255.

所以MSE越小,则PSNR越大,PSNR越大,代表图像质量越好。

一般来说,

PSNR高于40dB说明图像质量极好(即非常接近原始图像),

在30—40dB通常表示图像质量是好的(即失真可以察觉但可以接受),

在20—30dB说明图像质量差;

最后,PSNR低于20dB图像不可接受


Python代码实现PSNR计算

# PSNR.pyimport numpy as np
import mathdef psnr(target, ref, scale):# target:目标图像  ref:参考图像  scale:尺寸大小# assume RGB imagetarget_data = np.array(target)target_data = target_data[scale:-scale,scale:-scale]ref_data = np.array(ref)ref_data = ref_data[scale:-scale,scale:-scale]diff = ref_data - target_datadiff = diff.flatten('C')rmse = math.sqrt( np.mean(diff ** 2.) )return 20*math.log10(1.0/rmse)

以上代码仅作参考之用,tensorflow框架里有直接关于psnr计算的函数,直接调用就行了:(更推荐)

注意:计算PSNR的时候必须满足两张图像的size要完全一样!

'''
compute PSNR with tensorflow
'''
import tensorflow as tfdef read_img(path):return tf.image.decode_image(tf.read_file(path))def psnr(tf_img1, tf_img2):return tf.image.psnr(tf_img1, tf_img2, max_val=255)def _main():t1 = read_img('t1.jpg')t2 = read_img('t2.jpg')with tf.Session() as sess:sess.run(tf.global_variables_initializer())y = sess.run(psnr(t1, t2))print(y)if __name__ == '__main__':_main()

PSNR-峰值信噪比(原理及Python代码实现)相关推荐

  1. 图像的评价指标之PSNR——峰值信噪比

    图像的评价指标之PSNR--峰值信噪比 文章目录: 以及Python的实现 参考: https://blog.csdn.net/szfhy/article/details/49615833 https ...

  2. 随机森林分类算法python代码_随机森林的原理及Python代码实现

    原标题:随机森林的原理及Python代码实现 最近在做kaggle的时候,发现随机森林这个算法在分类问题上效果十分的好,大多数情况下效果远要比svm,log回归,knn等算法效果好.因此想琢磨琢磨这个 ...

  3. 弗雷歇距离的原理及python代码实现(动态规划)

    弗雷歇距离的原理及python代码实现(动态规划) 在网上看了很多关于弗雷歇距离的介绍,结合自己的理解,出一版更通俗易懂.更清晰具体的解释. 最简单的解释自然是最短狗绳长度,但我将从另一个角度来解释它 ...

  4. CRC爆破png图片宽度和高度原理以及python代码

    CRC爆破png图片宽度和高度原理以及python代码 文章目录 CRC爆破png图片宽度和高度原理以及python代码 1.PNG图片的格式 2.CRC 3.Python爆破图片宽度和高度 参考文章 ...

  5. 模式识别中利用二型势函数法求解非线性分类器的原理以及python代码实现

    前言 在学校的深度学习实验过程中,由于要求实现非线性分类器的势函数实验中给出的例程代码是matlab语言的(ps:自从电脑被偷了以后,新电脑没有装matlab),我便想到用python实现非线性分类器 ...

  6. 图像质量评估指标:PSNR / SSIM 原理及Python代码

    1. PSNR   PSNR(峰值信噪比,Peak Signal-to-Noise Ratio),用于衡量两张图像之间差异,例如压缩图像与原始图像,评估压缩图像质量:复原图像与ground truth ...

  7. PSNR峰值信噪比matlab实现

    PSNR,峰值信噪比,通常用来评价一幅图像压缩后和原图像相比质量的好坏,当然,压缩后图像一定会比原图像质量差的,所以就用这样一个评价指标来规定标准了.PSNR越高,压缩后失真越小.这里主要定义了两个值 ...

  8. catboost原理以及Python代码

    原论文: http://learningsys.org/nips17/assets/papers/paper_11.pdf catboost****原理: One-hot编码可以在预处理阶段或在训练期 ...

  9. python原理及代码_lightgbm原理以及Python代码

    原论文: lightgbm原理: gbdt困点: gbdt是受欢迎的机器学习算法,当特征维度很高或数据量很大时,有效性和可拓展性没法满足.lightgbm提出GOSS(Gradient-based O ...

最新文章

  1. H5 canvas 绘图
  2. Android借助Application重写App的Crash(简易版)
  3. 【git】强制覆盖本地代码(与git远程仓库保持一致)
  4. Apache虚拟目录和多端口多主机名配置
  5. assert()函数_【工程师分享】避免Xil_Assert系列宏导致的死循环
  6. 使用SAP CRM WebClient UI Design layer修改field label
  7. .Net Core AA.FrameWork应用框架介绍
  8. Ubuntu 20 04 提示“检测到系统程序出现问题”
  9. MongoDB在Windows环境下部署
  10. Hibernate annotation配置方式的MappedBy使用详解
  11. P问题,NP问题,NP完全问题,NP难问题
  12. 离散度计算公式 python_Python实现熵值法确定权重
  13. DB2 数据库的备份与还原
  14. VCL界面组件DevExpress VCL v22.1 - 发布全新的Shell组件
  15. 如何用自签名证书给.Sis文件签名
  16. CSS中的传统布局、多列布局、弹性伸缩布局及Emmet工具
  17. UVALive 6922 Reverse Polish Notation
  18. 撤销前进快捷键_「撤销快捷键」excel表格撤销快捷键是什么_ctrl+z是吗 - seo实验室...
  19. m基于FPGA的GPS收发系统开发,包括码同步,载波同步,早迟门跟踪环,其中L1采用QPSK,L2采用BPSK
  20. IIC驱动0.96寸OLED屏幕显示(51单片机)

热门文章

  1. 树莓派4安装homeassistant(官方系统Home Assistant OS)
  2. Spring 项目启动错误提示 LoggingApplicationListener
  3. 《SpringBoot2.0 实战》系列-整合thymeleaf 实现模板文件转图片
  4. 基于goEasy消息推送的扫码登录
  5. ccd视觉定位教程_正规CCD视觉定位系统工作原理
  6. Windows的此版本即將過期
  7. 【Sublime text3】解决tab和space混用问题
  8. Learn Emacs in 21 Days: day 3 学习笔记
  9. 循环播放背景音乐 html,js背景音乐循环播放代码(多浏览器支持)
  10. Processon一款免费好用的画图工具