图像峰值信噪比PSNR计算模板_haohulala的博客-程序员资料

技术标签: 计算机视觉  

参考博客 https://blog.csdn.net/u010886794/article/details/84784453

import numpy as np
import math
from PIL import Image


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 - img2) ** 2)
    if mse < 1.0e-10:
        return 100
    PIXEL_MAX = 255
    return 20 * math.log10(PIXEL_MAX / math.sqrt(mse))

if __name__ == "__main__":
    img1 = Image.open("img1.jpg")
    img2 = Image.open("img2.jpg")
    img1 = img1.resize((300,500))
    img2 = img2.resize((300,500))

    img1 = np.array(img1)
    img2 = np.array(img2)

    psnr1 = psnr1(img1, img2)
    psnr2 = psnr2(img1, img2)
    print(psnr1)
    print(psnr2)

img1

img2

计算结果 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/haohulala/article/details/112380610

智能推荐

U-boot分析第0章------------------ 编译烧写__CN_黄雷的博客-程序员资料

【说明】             首先我们先编译并烧写一下U-BOOT体验一下,我使用的是友善公司提供的U-BOOT,可以编译后直接用在TINY6410上边,下面就来介绍整个配置,编译,烧写的过程。  【解压】            我们得到的是压缩文件,我们得解压它,很简单,如下                                   得到一个源码包

如何捕获java线程中的逃逸的异常_惜暮的博客-程序员资料

由于Java线程的本质特征,当抛出异常的时候就终止了如果再进行catch,都不在一个线程里面,所以无法捕捉到异常。Java线程中,要在run()方法中把一切的异常都处理掉,可以使用try-catch块。不能让这个线程抛出异常,因为如果我们不使用特殊的方式的话,我们是无法捕获从这个线程中逃逸的异常的。异常一旦抛出了,那么这个线程就会停止运行,但是不会影响主线程和其它的线程。因为主线程和其它的线程都不知

2021年中国互联网人才招聘行业发展现状及发展趋势分析[图]_各大招聘形式近几年的变化曲线图_m0_66572497的博客-程序员资料

互联网招聘指通过技术手段的运用,帮助企业人事经理完成招聘的过程。即企业通过公司自己的网站、第三方招聘网站等机构,使用简历数据库或搜索引擎等工具来完成招聘过程。一、行业发展现状2021年1-9月,我国互联网新增企业量639.4万,同比增长78%;其后是租赁和商务服务业新增企业量284.5万,同比增长51%;批发零售业新增企业量1143万,同比增长20%;住宿和餐饮业新增企业量222.1万,同比增长15%。2021年中国各行业新增企业量及同比增速资料来源:智研咨询整理受疫情影响,2020

史上更全的MySQL高性能优化实战总结!_mysql高级性能优化及实战精讲_qq_4278923的博客-程序员资料

一、前言MySQL对于很多Linux从业者而言,是一个非常棘手的问题,多数情况都是因为对数据库出现问题的情况和处理思路不清晰。在进行MySQL的优化之前必须要了解的就是MySQL的查询过程,很多的查询优化工作实际上就是遵循一些原则让MySQL的优化器能够按照预想的合理方式运行而已。今天给大家体验MySQL的优化实战,助你高薪之路顺畅!二、优化的哲学注意:优化有风险,涉足需谨慎!2.1、优化可能带来的问题 优化不总是对一个单纯的环境进行,还很可能是一个复杂的已投产的系统。 ..

UE4创建VR项目笔记_用vrpawn制作游戏_尔德顶顶顶顶的博客-程序员资料

VR手动创建项目1,建立VR测试时,最好选择最低设置,保持流畅的性能,2,创建角色(Pawn)和游戏模式(GameMode)3,将游戏模式细节面板上Classes中的默认Pawn类改为创建的VRPawn类,4,Pawn角色蓝图类中添加摄像机和运动控制器,1)添加一个Scene改为CameraRoot,再子集添加摄像机,2)添加两个motioncontroller,分别控制左右,在设...

用树莓派打造世界上最小的“iMac”_程序猿DD_的博客-程序员资料

点击上方蓝色“程序猿DD”,选择“设为星标”回复“资源”获取独家整理的学习资料!作者 |xplanet来源 |https://www.oschina.net/news/118215/...

随便推点

二层交换机配管理地址_weixin_33940102的博客-程序员资料

第一步:给vlan配好地址第二步:给vlan划分到相应接口第三步:给交换机配置默认网关ip default-gateway ……记住了…… 转载于:https://blog.51cto.com/moniao987/1419490...

activiti7 设置流程启动者_activiti startuserid_lqh841106的博客-程序员资料

问题:表act_hi_procinst的字段START_USER_ID_空,导致查询我发起的流程没有结果集;historyService.createHistoricProcessInstanceQuery().startedBy(String.valueOf(userId));返回空。通过翻源码String authenticatedUserId = Authentication.getAuthenticatedUserId();Authentication类提供了静态的get和set,在流程

SDS:一个简易动态字符串库_sds github_吉阿的博客-程序员资料

http://blog.jobbole.com/68119/英文原文: https://github.com/antirez/sds/blob/master/README.mdSDS(Simple Dynamic Strings)是一个C语言字符串库,设计中增加了从堆上分配内存的字符串,来扩充有限的libc字符处理的功能,使得:使用更简便二进制安全计算更有效率而且仍旧…

html如何设置字体纵向居中,html如何实现文本上下居中_weixin_39860946的博客-程序员资料

html实现文本上下居中的方法:首先创建一个HTML示例文件;然后创建一个文本框;接着定义Text的height属性;最后通过css中“vertical-align:middle;”等属性实现文本上下居中即可。本教程操作环境:Windows7系统、HTML5&amp;&amp;CSS3版,DELL G3电脑。推荐:css视频教程让HTML中的文本框中的文字垂直居中当你自己定义了 Text 的 he...

Ubuntu SVN 客户端_「已注销」的博客-程序员资料

Ubuntu SVN 客户端 安装 svn客户端:apt-get install subversion,然后根据提示一步一步,就完成了 svn的安装。当然,也可以源码安装 svn,下载 subversion 一个最新版本的源码包,解压之后就可以安装了。2、 新建一个目录,cd 到新建目录下,将文件 checkout 到本地目录...

传统的ARM与Cortex-M3_孔雀东南飞的博客-程序员资料

要使用低成本的 32位处理器,开发人员面临两种选择,基于Cortex-M3内核或者ARM7TDMI内核的处理器。如何做出选择?选择标准又是什么?本文主要介绍了ARM Cortex-M3内核微控制器区别于ARM7的一些特点,帮助您快速选择。1.ARM实现方法    ARM Cortex-M3是一种基于ARM7v架构的最新ARM嵌入式内核,它采用哈佛结构,使用分离的指令和数据总线(冯诺伊曼结构下,数据和指令共用一条总线)。从本质上来说,哈佛结构在物理上更为复杂,但是处理速度明显加快。根据摩尔定理,复杂性并不是一