本文引用自:https://blog.csdn.net/u010886794/article/details/84784453

计算PSNR的Python代码,网上有下面两种:

import cv2

import numpy as np

import math

def psnr1(img1, img2):

mse = np.mean((img1 - img2) ** 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))

理论上,这两种计算方式都对应上面的计算公式,在输入图像一样的情况下,这两段代码的结果应该是一样的。但是,在调用这段代码的时候,我发现这两者的结果却相差很远,同样的图片,psnr1的结果大概是29,而psnr2的结果是12。

gt = cv2.imread('1.jpg')

img= cv2.imread('2.jpg')

print(psnr1(gt,img))

print(psnr2(gt,img))

这是输出的结果:

单看代码的话完全看不出来任何问题,后来我输出了这两张图像作差的结果,发现所有的值都是在0-255之间的,比如img1的一个像素值是30,img2的一个像素值是60,二者作差,本来应该是-30,但是结果却是226,即对于负值,输出要加上256。所以,问题就出在这行代码上:

mse = np.mean((img1 - img2) ** 2 )

如果img1某个点的像素比img2小,而两者差别又比较大,这个绝对值比较大的负值就会变成一个比较小的正值,MSE的结果也会偏小,那么PSNR的值就会偏大。

只要把上面那行代码改成mse = np.mean((img1/1.0 - img2/1.0) ** 2 )就可以了。

最后,我们发现这两个结果是一样的了。

python图像质量评价_Python实现图像质量评价准则PSNR相关推荐

  1. python自动评论_Python+selenium自动评价器

    Python+selenium自动评价器 年年岁岁又一年,为了纪念一哈2020年的最后一天,我决定写下这篇文章.你问我为什么要纪念?因为那天我女朋友加班了...,具体什么任务呢?就是一个指标任务,需要 ...

  2. python作用域链_Python 中的作用域准则

    0x00 前言 因为最早用的是 Java 和 C#,写 Python 的时候自然也把 Python 作用域的想的和原有的一致. Python 的作用域变量遵循在大部分情况下是一致的,但也有例外的情况. ...

  3. 图像质量评价方法中客观评价方法又可以分为三类

    早期的图像处理是随由于通讯方面的要求而发展起来的,随着图像处理技术的发展,数字图像处理技术与理论已经成为计算机应用的一个重要领域,广泛应用于众多的科学与工程应用,如遥感.医学.气象.通信等.然而随着图 ...

  4. python爬取携程旅游评价信息词云图分析

    python爬取携程旅游评价信息词云图分析 前言 前面咱们已经分析过如何爬取携程旅游的相关信息,如果没有看过的,可以先跳转看一下前面的那篇博客:python 爬虫 一键爬取携程旅游团数据 这一篇呢,咱 ...

  5. GIS 地质灾害评价——易发性评价方法的选择

    20世纪六十年代,人们开始了对地质灾害易发性评价的研究,九十年代后伴随着计算科学和信息量论以及模糊数学论等众多学科被引入到地质灾害的研究领域,地质灾害易发性评价由最初的定性发展逐步向定量发展转换,即以 ...

  6. python画桃花_Python小白如何使用爬虫自动抓取《三生三世十里桃花》豆瓣电影短评...

    1.准备工作 python是一门相对于其他语言来说肥肠自由的语言,从它只能用空白符作为强制缩进符就能够感受到它与众不同,爱用不用的独特气质,像这样一位潇洒任性的公子自然免不得要提前做一些准备才能驾驭. ...

  7. python评论数据分析_Python亚马逊智能产品评论数据分析

    一.概述 本文主要使用Python对亚马逊智能产品评论数据集进行数据清洗,通过对不同产品的评分进行变换后得到产品的好评数.中评数.差评数以及对应的比率等,通过上述这些指标,找到好评率最高的产品.并尝试 ...

  8. Python学习教程(Python学习视频_Python学些路线):Day05 总结和练习

    Python学习教程(Python学习视频_Python学些路线):总结和练习 练习清单 寻找"水仙花数". 寻找"完美数". "百钱百鸡" ...

  9. 小学计算机课程评价,小学信息技术课堂评价浅谈

    小学信息技术是一门融知识性.趣味性和技能性于一体的学科,它着重于对小学生进行初步的信息意识.信息素养和信息技能的培养,集知识性和技能性于一体.而对于学生学习情况的评价,信息技术学科不像其他学科一样,可 ...

最新文章

  1. 真·降维打击:这篇SIGGRAPH 2020论文帮你「想象」三维生物眼里的四维空间
  2. Kotlin尾递归优化
  3. 计算机中iis6.0配置步骤,Win2003 IIS6.0 安装方法 图文详细教程
  4. Java仿百度网盘,拿来学习/搞外快,都是极好的选择
  5. 简书markdown支持html,简书上使用Markdown(超详细)
  6. C语言再学习 -- 常用头文件和函数(转)
  7. 别再说你不会ElasticSearch,都给你整理好了
  8. python数值模拟教程_数值模拟必备random模块
  9. java 搜索引擎 关键词高亮_和我一起打造个简单搜索之SpringDataElasticSearch关键词高亮(示例代码)...
  10. 随机过程第1讲——泊松过程的模拟与检验
  11. NuGet程序包安装SQLite后完全抽离出SQLite之入门介绍及注意事项,你真的懂了吗?...
  12. webpack 热加载你站住,我对你好奇很久了
  13. 基于React的贪吃蛇游戏的设计与实现
  14. 关于Socket踩过的一些坑
  15. Quartz.net 任务调度
  16. 计算机软考笔试知识点,计算机软考考试必备知识点:关键链法
  17. 【JZOJ A组】东风谷早苗
  18. 2010新财富中国富豪榜1至100名
  19. 离散数学程序实现——求关系矩阵的自反和对称闭包——c
  20. 深搜+剪枝--poj1011--拯救少林神棍

热门文章

  1. Unity3D第三人称视角摄像机、跟随与球面旋转
  2. 解决打开CentOS时出现Cannot connect virtual device ide1:0导致电脑重启蓝屏问题
  3. 1.44寸OLED的Linux驱动
  4. 树冠体积计算之台体-凸包算法
  5. bitset用法整理
  6. flutter 提取图片的主色
  7. centos7-aliyun
  8. 本地网站无服务器,0基础,无需域名服务器,手把手教你搭建本地电脑的影视播放网站...
  9. Java 并发编程入门
  10. zabbix-server 4.4 rpm包安装