当前位置: 首页 > news >正文

PSNR/SSIM/LPIPS图像质量评估三件套(含代码)

在图像质量评估上,有三个重要指标:PSNR,SSIM,LPIPS。本文提供简易脚本分别实现。

PSNR,峰值信噪比,是基于MSE的像素比较低质量评估,一般30dB以上质量就不错,到40dB以上肉眼就很难分别了。
SSIM,结构相似性,从分布上来比较相似性,量化到(0-1)之间,越接近1则证明图像质量越好。具体数学公式可以看我之前的博客《SSIM》。
LPIPS,利用AI模型来量化图像之间的相似性。取值范围也是[0,1],与SSIM相反,LPIPS是越小则证明图像质量越好

像这种常见的图像质量评价指标,都会收录到torchmetrics里面。只需安装:

pip install torchmetrics

实验脚本:

import torch
from torchmetrics.image.lpip import LearnedPerceptualImagePatchSimilarity
from torchmetrics.image import StructuralSimilarityIndexMeasure
from torchmetrics.image import PeakSignalNoiseRatio_ = torch.manual_seed(123)def psnr_torch(img1, img2):mse = ((img1 - img2) ** 2).view(img1.shape[0], -1).mean(1, keepdim=True)return 20 * torch.log10(1.0 / torch.sqrt(mse))def psnr(img1, img2):metric = PeakSignalNoiseRatio()return metric(img1, img2)def ssim(img1, img2):metric = StructuralSimilarityIndexMeasure(data_range=1.0)return metric(img1, img2)def lpips(img1, img2):metric = LearnedPerceptualImagePatchSimilarity(net_type='vgg')return metric(img1, img2)def _main():img1 = torch.rand(1, 3, 100, 100)img2 = torch.rand(1, 3, 100, 100)# PSNRprint("PNSR: ", psnr_torch(img1, img2))print("PNSR1: ", psnr(img1, img2))print("SSIM: ", ssim(img1, img2))print("LPIPS: ", lpips(img1, img2))if __name__ == "__main__":_main()

代码里给了两种PSNR实现方法,计算结果差别不大。欢迎自取~

http://www.lryc.cn/news/322349.html

相关文章:

  • 20240318uniapp怎么引用组件
  • 扩展以太网(数据链路层)
  • 每日一练 | 华为认证真题练习Day202
  • 基于python+vue的幼儿园管理系统flask-django-php-nodejs
  • 【java】java环境变量分类
  • 掌握Go语言:Go语言通道,并发编程的利器与应用实例(20)
  • JavaSE(上)-Day9
  • Java 内存模型概述
  • 远程桌面安卓版下载 安卓远程控制免费版
  • 算法打卡day18|二叉树篇07|Leetcode 530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先
  • MySQL 中的自增ID及其应用场景
  • ChatGPT高效完成简历制作[中篇4]-有爱AI实战教程(十一)
  • 5.2.5、【AI技术新纪元:Spring AI解码】VertexAI Embeddings
  • 【vue baidu-map】实现百度地图展示基地,鼠标悬浮标注点展示详细信息
  • uniapp canvas文字和元素居中
  • 深度探索:SWAT模型和生物地球化学循环模型实现流域生态系统水-碳-氮耦合过程模拟
  • C语言经典算法-5
  • python与excel第二节
  • Google云计算原理与应用(四)
  • 面试常问:为什么 Vite 速度比 Webpack 快
  • principles of network applications网络应用原理
  • QT增加线程函数步骤流程
  • Python基础----字符串(持续更新中)
  • 【论文阅读】DiffSpeaker: Speech-Driven 3D Facial Animation with Diffusion Transformer
  • NVM使用教程
  • mysql 学习
  • Jenkins 一个进程存在多个实例问题排查
  • mysql数据类型和常用函数
  • Elastic 线下 Meetup 将于 2024 年 3 月 30 号在武汉举办
  • 线性代数在卷积神经网络(CNN)中的体现