首页 > 其他分享 >44

44

时间:2024-03-20 11:24:50浏览次数:15  
标签:psnr 44 ssim values np img2 img1

import os
import torch
import lpips
import numpy as np
from PIL import Image
from skimage.metrics import peak_signal_noise_ratio as psnr
from skimage.metrics import structural_similarity as ssim

# 初始化LPIPS模型
loss_fn = lpips.LPIPS(net='vgg')

def calculate_metrics(folder1, folder2, ext='.jpg'):
    # 获取文件夹中的文件名
    filenames = [f for f in os.listdir(folder1) if f.endswith(ext)]
    
    psnr_values = []
    ssim_values = []
    lpips_values = []
    
    for filename in filenames:
        # 加载图像
        img1 = Image.open(os.path.join(folder1, filename))
        img2 = Image.open(os.path.join(folder2, filename))
        
        # 转换为numpy数组
        img1_np = np.array(img1)
        img2_np = np.array(img2)
        
        # 计算PSNR
        psnr_value = psnr(img1_np, img2_np)
        
        # 计算SSIM
        ssim_value = ssim(img1_np, img2_np, multichannel=True, win_size=min(img1_np.shape[:2]))  
                                                                     # 使用图像的较小边作为窗口大小
        # 转换为张量
        img1_tensor = torch.from_numpy(img1_np).unsqueeze(0).float()
        img2_tensor = torch.from_numpy(img2_np).unsqueeze(0).float()
        
        # 计算LPIPS
        lpips_value = loss_fn(img1_tensor, img2_tensor)
        
        psnr_values.append(psnr_value)
        ssim_values.append(ssim_value)
        lpips_values.append(lpips_value.item())
    
    return psnr_values, ssim_values, lpips_values

# 使用函数
folder1 = 'path_to_folder1'
folder2 = 'path_to_folder2'
psnr_values, ssim_values, lpips_values = calculate_metrics(folder1, folder2)

 



标签:psnr,44,ssim,values,np,img2,img1
From: https://www.cnblogs.com/yyhappy/p/18084833

相关文章

  • Exynos4412 IIC Controller
    学习资料来源:https://www.bilibili.com/video/BV14o4y1Y7A1?p=10&vd_source=432ba293ecfc949a4174ab91ccc526d6寄存器描述来自Exynos4412User'sManual 在Exynos4412芯片中,使用IIC,重要寄存器如下:Multi-masterI2C-buscontrolregister–I2CCONMulti-masterI2C-busc......
  • CF1944
    A题意:给定完全图,可以删掉\(k\)条边。问\(1\)号点所在连通块的大小最小是多少。显然要么\(1\)要么\(n\)。B题意:给定长为\(2n\)的数组,从\(a_1\sima_n\)中和\(a_{n+1}\sima_{2n}\)中分别选\(2k\)个数,使得它们的异或相等。因为两个相同的数异或得\(0\),可以......
  • 洛谷-P1449 后缀表达式
    目录 何为后缀表达式?模拟过程AC代码采用STL的stack题目链接:P1449后缀表达式-洛谷|计算机科学教育新生态(luogu.com.cn) 何为后缀表达式?那后缀表达式是怎么算的呢那显然就需要引用最开始说的栈了因为后缀表表达式本来就是栈的一种应用那么现在来说说后缀表......
  • CMU15445 2022fall project2
    CMU154452022fallproject2CheckPoint1Task1B+TreePages这部分主要是给page、internal、leaf三个page类实现一些get、set方法和一些简单的函数。注意点:判断rootpage:parentpageid=INVALID_PAGE_IDGetMinSize():叶子结点为max_size_/2,内部节点为(max_size_+1)......
  • 学习笔记444—macbook软件卸载了图标还在launchpad上怎么办?一分钟搞定!
    macbook软件卸载了图标还在launchpad上怎么办?一分钟搞定!问题描述有时候,我们使用MacBook时没有从AppleStore安装软件,而是从一些非官方渠道安装的软件。这样我们将这些macbook软件卸载了之后,图标还会留在在launchpad(启动台)上,这些软件的图标无法删除,鼠标长按也不会出来叉叉。我们的......
  • 蓝桥杯——344图书管理员
      法一使用取模运算对于每本书的图书编码(bookCode),我们需要判断其是否以读者的需求码结尾。首先,将需求码的长度作为指数,使用Math.pow(10,demandLength)来得到一个以需求码长度为指数的基数。然后,将书的图书编码与这个基数进行取模运算,即bookCode%Math.pow(10,demandLe......
  • 美国科技行业今年裁员超 5 万人;宁德时代一年净赚超 440 亿丨 RTE 开发者日报 Vol.167
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(RealTimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑的个人观......
  • 844. 比较含退格的字符串c
    boolbackspaceCompare(char*s,char*t){intns=strlen(s),nt=strlen(t);intheads=0,headt=0,index=0;while(index<ns){if(s[index]!='#'){s[heads++]=s[index++];}else{heads--;i......
  • git diff 查看文件修改提示“new mode 100644”和“old mode 100755”(使用 vscode 查
    使用vscode查看不出差异通过gitgui或者通过gitbash查看文件内容并没有修改,出现这个问题的原因是修改了文件的权限,文件的filemode发生了变化,比如执行了chmod命令。解决办法:切换到项目的根目录,执行如下命令,忽略filemode的变化即可gitconfig--addcore.filemodefa......
  • 学习笔记443—UML设计:类图说明及一步一步制作UML类图
    UML设计:类图说明及一步一步制作UML类图什么是类图UML类图是用来描述一个系统的静态结构。它既可以用于一般概念建模也可以用于细节建模。类包含了数据和行为,是面向对象的重要组成部分,它是具有相同属性、操作、关系的对象集合的总称。UML类图也可以用于数据建模。它可以用来描述......