python求不同分辨率图像的峰值信噪比,一文搞懂

article/2025/9/26 23:33:23

可以使用 Python 的 NumPy 和 OpenCV 库来实现这个任务。提前准备一张图片作为素材。

python求不同分辨率图像的峰值信噪比,一文搞懂

文章目录

    • 什么是峰值信噪比
      • PSNR 峰值信噪比补充说明
    • 使用 OpenCV 库来实现这个任务
    • PSNR 的计算值受图像的亮度影响
    • 计算不同分辨率图像的 PSNR
    • python 求不同分辨率图像的峰值信噪比 | 其他知识点补充

什么是峰值信噪比

峰值信噪比(Peak Signal to Noise Ratio,PSNR)是衡量图像质量的常用指标,它表示图像中信号和噪声的比值。通常,较高的 PSNR 值表示图像质量较高。

PSNR 的公式如下:

PSNR = 10 * log10(MAX^2 / MSE)

其中,MAX 是图像的最大亮度(一般为 255),MSE 是图像的均方误差,表示原图像和处理后的图像的差异。

如果需要在 Python 代码中计算 PSNR,可以使用 NumPy 库,并使用它提供的平方误差函数 (numpy.mean((A-B)**2)),然后计算 PSNR 值。还可以使用 OpenCV 库中的 PSNR 函数,它可以直接计算 PSNR 值:

import cv2
import numpy as npimg1 = cv2.imread("demo1.jpg")
img2 = cv2.imread("demo2.jpg")psnr = cv2.PSNR(img1, img2)
print("PSNR:", psnr)

在计算 PSNR 之前,图像必须具有相同的分辨率,并且必须使用相同的颜色空间(例如,都是灰度图或彩色图)。

PSNR 峰值信噪比补充说明

PSNR 是一个非常常见的图像质量评估指标,广泛应用于图像压缩、图像处理、图像识别等领域。

需要注意,PSNR 仅考虑图像的像素均方误差,并不考虑其他的图像质量因素,例如:图像的细节和纹理等。
因此,在评估图像质量时,可以使用其他图像质量评估指标,例如:结构相似度(SSIM),以获得更全面的评估结果。

使用 OpenCV 库来实现这个任务

开始前需要先读入图像的灰度图。

import cv2
import numpy as npimg = cv2.imread("demo.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

使用 NumPy 的 mean 和 std 函数计算图像的均值和标准差:

mean, std = np.mean(gray), np.std(gray)

最后,计算峰值信噪比:

PSNR = 20 * np.log10(255 / np.sqrt(mean))

运行代码得到如下结果:

python求不同分辨率图像的峰值信噪比,一文搞懂

峰值信噪比的计算基于图像的灰度图,因此可以直接对灰度图进行计算。

PSNR 的计算值受图像的亮度影响

如果需要比较不同分辨率的图像,可以先将图像调整到相同的亮度,以便更准确地评估图像质量。

以下是如何使用 Python 和 OpenCV 将图像调整到相同亮度的代码示例:

import cv2
import numpy as npimg1 = cv2.imread("demo.jpg")
img2 = cv2.imread("demo1.jpg")img1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
img2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)img1 = cv2.normalize(img1, None, 0, 255, cv2.NORM_MINMAX)
img2 = cv2.normalize(img2, None, 0, 255, cv2.NORM_MINMAX)psnr = cv2.PSNR(img1, img2)
print("PSNR:", psnr)

上面的代码将两张图像转换为灰度图,并使用 OpenCV 的 normalize 函数将其调整到相同的亮度。随后可以计算 PSNR。

计算不同分辨率图像的 PSNR

使用下面的代码计算不同分辨率图像的 PSNR:

import cv2
import numpy as npimg1 = cv2.imread("demo1.jpg")
img2 = cv2.imread("demo2.jpg")img1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
img2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)img1 = cv2.resize(img1, (100, 100))
img2 = cv2.resize(img2, (100, 100))img1 = cv2.normalize(img1, None, 0, 255, cv2.NORM_MINMAX)
img2 = cv2.normalize(img2, None, 0, 255, cv2.NORM_MINMAX)psnr = cv2.PSNR(img1, img2)
print("PSNR:", psnr)

上面的代码先将两张图像转换为灰度图,然后使用 OpenCV 的 resize() 函数将图像的分辨率调整到相同。
接下来,使用上面提到的代码将图像调整到相同的亮度,最后计算 PSNR。

python 求不同分辨率图像的峰值信噪比 | 其他知识点补充

  • PSNR 的应用:PSNR 常常被用来评估图像压缩、图像处理、图像修复等技术的质量。

  • PSNR 的限制:尽管 PSNR 是一个有用的指标,但它并不能完全反映图像质量,因为它不能评估图像细节的损失。

  • 其他评估指标:除了 PSNR 之外,还有其他评估图像质量的指标,例如:SSIM(结构相似性指数)、MSE(均方误差)等。

📢📢📢📢📢📢
💗 你正在阅读 【梦想橡皮擦】 的博客
👍 阅读完毕,可以点点小手赞一下
🌻 发现错误,直接评论区中指正吧
📆 橡皮擦的第 853 篇原创博客

👇 全网 6000+人正在学习的 爬虫专栏 👇👇👇👇

  • ⭐️ Python 爬虫 120,点击订购 ⭐️
  • ⭐️ 爬虫 100 例教程,点击订购 ⭐️

http://chatgpt.dhexx.cn/article/DVOupVUS.shtml

相关文章

【深度学习】图像去雾,去噪里常用的相似评价指标:PSNR(峰值信噪比) SSIM(结构相似度)MSE(均方误差)

文章目录 一、PSNR(峰值信噪比)二、SSIM(结构相似度)三、MSE(均方误差)小插曲:plt.savefig()保存的图片为空白 一、PSNR(峰值信噪比) 公式直接抄我…

信噪比

fft原理 能量谱 (5)能量信号频谱通常既含有幅度也含有相位信息;幅度谱的平方(二次量纲)又叫能量谱(密度),它描述了信号能量的频域分布;功率信号的功率谱(密…

PSNR峰值信噪比matlab实现

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

psnr--峰值信噪比

psnr是“Peak Signal to Noise Ratio”的缩写,即峰值信噪比,是一种评价图像的客观标准,它具有局限性,一般是用于最大值信号和背景噪音之间的一个工程项目。 中文名 PSNR 外文名 Peak Signal to Noise Ratio” 意 义 峰值…

信噪比的定义及计算方法

1.信噪比的定义 英文名称叫做SNR或S/N(SIGNAL-NOISE RATIO),又称为讯噪比。是指一个电子设备或者电子系统中信号与噪声的比例。这里面的信号指的是来自设备外部需要通过这台设备进行处理的电子信号,噪声是指经过该设备后产生的原信号中并不存…

PSNR峰值信噪比(python代码实现+SSIM+MSIM)

一、原理 psnr是“Peak Signal to Noise Ratio”的缩写,即峰值信噪比,是一种评价图像的客观标准 用来表示信号最大可能功率和影响它的表示精度的破坏性噪声功率的比值,可以显示图像画质损失的程度。峰值信噪比越大,表示画质损失…

opencv图像处理学习(五十七)——峰值信噪比和结构相似性

1.峰值信噪比 峰值信噪比是常用的衡量信号失真的指标。该参数是基于图像像素灰度值进行统计分析,但是由于人类视觉特性的差异性,通常出现的评价结果与人的主管感觉不一致,但其仍然是一个有参考价值的评价指标。对于两幅图像I与K,…

用户自定义函数UDF

SQL DDL:用户自定义函数UDF 什么是UDF? Hive支持的函数除了内置函数,允许编写用户自定义函数(User Define Function)来扩充函数的功能。 用户自定义函数需要使用Java语言进行编写,完成的UDF可以打包成Ja…

hive笔记八:自定义函数-自定义UDF函数/自定义UDTF函数

目录 自定义函数 自定义UDF函数 自定义UDTF函数 自定义函数 Hive自带一些函数,比如:max/min等;当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数。 UDF:user-defined function …

用python实现Hive中的UDF函数

用python实现Hive中的UDF函数 简介 Hive为我们提供了众多的内置函数,但是在实际的运用过程中仍然不能满足我们所有的需求.hive是用java开发的,本身提供了使用java去开发UDF的方式.而这里我们采用python的方式去实现UDF函数. DEMO实现 我们这里用pyth…

hive创建udf函数流程

1.编写udf函数 引入pom文件 <dependencies> <dependency> <!-- 这个属于额外的jar包 自己按需引用 比如你想搞得函数 里面要连接mysql 这里肯定需要引入mysql的驱动包 我这个包是为了计算字符串的表达式的。 --> <groupId>org.apache.com…

自定义UDF、UDTF函数

自定义步骤 自定义UDF&#xff1a;继承UDF&#xff0c;重写evaluate方法自定义UDTF&#xff1a;继承GenericUDTF&#xff0c;重写3个方法&#xff1a;initialize&#xff08;自定义输出数据的列名和类型&#xff09;&#xff0c;process&#xff08;将结果返回forward(result)…

Hive-编写UDF函数(详细教程~~~)

编写UDF函数 (1)创建项目:(2)导入依赖:(3)继承UDF类(4)业务代码(5)打包编译(5)添加到hive类路径(6)创建临时函数(7)使用测试 Hive 自带了一些函数&#xff0c;比如&#xff1a;max/min 等&#xff0c;但是数量有限&#xff0c;自己可以通过自定义 UDF 来 方便的扩展。 2&#x…

关于Mysql中UDF函数的思考(一)

一点背景 从大学二年纪接触编程&#xff0c;几乎我阅读过的所有的编程语言教材都会有那么一章专门讲述数据库编程&#xff0c;而讲述的内容都无非是介绍某个数据库历史&#xff0c;对应的安装过程&#xff0c;最后才会讲解一点SQL语句&#xff0c;像这样的教材我个人认为是完全…

UDF、UDAF、UDTF之间的区别

1、UDF&#xff1a;用户定义&#xff08;普通&#xff09;函数&#xff0c;只对单行数值产生作用&#xff1b; 继承UDF类&#xff0c;添加方法 evaluate() /*** function 自定义UDF统计最小值**/public class Min extends UDF {public Double evaluate(Double a, Double b) {i…

HIVE udf、udaf、udtf函数定义与用法(最全!!!!!)

一、定义 1、hive udf、udaf、udtf函数定义与用法 &#xff08;1&#xff09;UDF&#xff08;user-defined function&#xff09;作用于单个数据行&#xff0c;产生一个数据行作为输出。&#xff08;数学函数&#xff0c;字符串函数&#xff09; &#xff08;2&#xff09;U…

udf,udaf,udtf之间的区别

1、UDF&#xff1a;用户定义&#xff08;普通&#xff09;函数&#xff0c;只对单行数值产生作用&#xff1b; 继承UDF类&#xff0c;添加方法 evaluate() /*** function 自定义UDF统计最小值* author John**/public class Min extends UDF {public Double evaluate(Double a…

如何编写udf函数(收藏篇)

hive自带了一些函数&#xff0c;比如&#xff1a;max、min 等&#xff0c;但是自带的函数数量有限&#xff0c;所以hive提供给用户自定义函数的功能。 udf 函数可以直接应用于select 语句&#xff0c;对查询结构做格式化处理之后&#xff0c;然后再输出内容。 下面将详细介绍下…

自定义UDF函数

自定义函数案例&#xff1a; 文章目录 自定义UDF函数1.需求2.前期maven工程准备3.编程实现4.导包5.导入hive中 自定义UDTF函数1.需求2.编程实现3.导入hive中 自定义UDF函数 1.需求 自定义一个UDF实现计算给定字符串的长度例如 2.前期maven工程准备 创建一个maven工程&#x…

Hive自定义UDF函数详解

Hive自定义UDF函数详解 一、UDF概述二、UDF种类三、如何自定义UDF四、自定义实现UDF和UDTF4.1 需求4.2 项目pom文件4.3 Hive建表测试及数据4.4 UDF函数编写4.5 UDTF函数编写4.6 UDTF使用 一、UDF概述 UDF全称&#xff1a;User-Defined Functions&#xff0c;即用户自定义函数&…