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

article/2025/9/26 23:30:32

文章目录

  • 一、PSNR(峰值信噪比)
  • 二、SSIM(结构相似度)
  • 三、MSE(均方误差)
  • 小插曲:plt.savefig()保存的图片为空白


一、PSNR(峰值信噪比)

在这里插入图片描述
公式直接抄我师哥论文上的,n通常取8,表示0-255.值越大表明越接近真实图像。
在使用前需要从掉包:

from skimage.metrics import peak_signal_noise_ratio

我们用三张图,来试一个例子:

在这里插入图片描述
这三张图分别在路径下:
在这里插入图片描述

分别计算第一张和第二张图的PSNR,第一张图和第三张图的PSNR

from skimage.metrics import peak_signal_noise_ratio as PSNR
import matplotlib.pyplot as plt
imor=plt.imread('imor.jpeg')
imnose=plt.imread('imnose.jpg')
imde=plt.imread('imde.jpeg')
print('原图和噪点图的PSNR为{}'.format(PSNR(imor,imnose)))
print('原图和去噪图的PSNR为{}'.format(PSNR(imor,imde)))

从这里可以看到去噪图的PSNR更高,说明去噪效果不错。

二、SSIM(结构相似度)

SSIM公式:
在这里插入图片描述

SSIM范围在0-1之间。
SSIM和PSNR还不太一样,使用起来要多调几个参数,不是那麽简单
我们首先看看函数构造:
在这里插入图片描述
im1和im2就不说了,后面那一堆还挺复杂的(如果后面参数不管的话,只放入前两个参数会报错。)
在这里插入图片描述

反正要加一个multichannel=True把

from skimage.metrics import structural_similarity as SSIM
import matplotlib.pyplot as plt
imor=plt.imread('imor.jpeg')
imnose=plt.imread('imnose.jpg')
imde=plt.imread('imde.jpeg')
print('原图和噪点图的PSNR为{}'.format(SSIM(imor,imnose,multichannel=True)))
print('原图和去噪图的PSNR为{}'.format(SSIM(imor,imde,multichannel=True)))

在这里插入图片描述
这里去噪图的PSNR明显比噪点图高,说明去噪效果不错

三、MSE(均方误差)

在这里插入图片描述

from skimage.metrics import mean_squared_error as MSE
import matplotlib.pyplot as plt
imor=plt.imread('imor.jpeg')
imnose=plt.imread('imnose.jpg')
imde=plt.imread('imde.jpeg')
print('原图和噪点图的MSE为{}'.format(MSE(imor,imnose)))
print('原图和去噪图的MSE为{}'.format(MSE(imor,imde)))

在这里插入图片描述

小插曲:plt.savefig()保存的图片为空白

今天在做这个实验时,需要一组对照图片,所以我去STL10这个数据集里面去下载和保存一些照片,准备用savefig保存一些照片:

import torch
import numpy as np
from torchvision.datasets import STL10
import matplotlib.pyplot as plt
from skimage.util import random_noise #添加噪声模块
import torch.utils.data as Data
from sklearn.model_selection import  train_test_split
import hiddenlayer as hl
import torch.nn as nn
from tqdm import tqdm
from skimage.measure import compare_psnr
import os
os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"data=STL10('data',download=False)
def read_image(path):with open(path,'rb') as f:data1=np.fromfile(f,dtype=np.uint8)images=np.reshape(data1,(-1,3,96,96))images=np.transpose(images,(0,3,2,1))return images/255.0
data_path='E:/图像处理课题/自编码器去噪网络/data/stl10_binary/train_X.bin'
images=read_image(data_path)  #最后输出的5000张图片
print(type(images)) #格式为<class 'numpy.ndarray'>
print("images.shape:",images.shape)
print("images.shape:",images.shape[0])
#print(images)
plt.figure(figsize=(3,3))
for i in range(1):plt.subplot(1,1,1)plt.imshow(images[i+1000])plt.axis('off')
plt.show()
plt.savefig('1.jpg')

最开始我的代码就是这样写的,结果发现,保存的图片为空白:
在这里插入图片描述
这里发生这个错误的原因是,plt.show()和plt.savefig()不能放在一起用。
如果要正常运行,需要把plt.show()注释掉,之后就正常了:
在这里插入图片描述
不过如果要把ndarray保存为图像,一般用plt.imsave还是挺合适的:

plt.imsave('imor.jpeg', imor)

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

相关文章

信噪比

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

PSNR峰值信噪比matlab实现

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

psnr--峰值信噪比

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

信噪比的定义及计算方法

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

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

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

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

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

用户自定义函数UDF

SQL DDL&#xff1a;用户自定义函数UDF 什么是UDF&#xff1f; Hive支持的函数除了内置函数&#xff0c;允许编写用户自定义函数&#xff08;User Define Function&#xff09;来扩充函数的功能。 用户自定义函数需要使用Java语言进行编写&#xff0c;完成的UDF可以打包成Ja…

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

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

用python实现Hive中的UDF函数

用python实现Hive中的UDF函数 简介 Hive为我们提供了众多的内置函数&#xff0c;但是在实际的运用过程中仍然不能满足我们所有的需求.hive是用java开发的&#xff0c;本身提供了使用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;即用户自定义函数&…

Hive UDF简单函数

概念 在Hive中&#xff0c;用户可以自定义一些函数&#xff0c;用于扩展HiveQL的功能&#xff0c;而这类函数叫做UDF&#xff08;用户自定义函数)。UDF分为两大类&#xff1a;UDAF&#xff08;用户自定义聚合函数&#xff09;和UDTF&#xff08;用户自定义表生成函数)。  UDF…