python实现指定路径下的图像psnr和ssim平均值计算,并且计算程序运行时间

计算每张图像处理前后的psnr、ssim,然后进行除以总数,分别得到psnr和ssim均值。

只需要修改路径进行指定文件夹的循环计算即可。

import os
import numpy as np
import math
import cv2



import time

start = time.clock()

#当中是你的程序



def psnr(img1, img2):
    mse = np.mean((img1/1. - img2/1.) ** 2 )
    if mse < 1.0e-10:
        return 100*1.0
    return 10 * math.log10(255.0*255.0/mse)

def mse(img1,img2):
    mse = np.mean((img1/1. - img2/1.) ** 2 )
    return mse

def ssim(y_true , y_pred):
    u_true = np.mean(y_true)
    u_pred = np.mean(y_pred)
    var_true = np.var(y_true)
    var_pred = np.var(y_pred)
    std_true = np.sqrt(var_true)
    std_pred = np.sqrt(var_pred)
    c1 = np.square(0.01*7)
    c2 = np.square(0.03*7)
    ssim = (2 * u_true * u_pred + c1) * (2 * std_pred * std_true + c2)
    denom = (u_true ** 2 + u_pred ** 2 + c1) * (var_pred + var_true + c2)
    return ssim / denom



path1 = 'D:/sy_imags1000_80lun/outputs/'  #指定输出结果文件夹
path2 = 'D:/sy_imags1000_80lun/targets/'#指定原图文件夹
f_nums = len(os.listdir(path1))
list_psnr = []
list_ssim = []
list_mse = []
for i in range(1,f_nums+1):
    img_a = cv2.imread(path1+str(i)+'-outputs.png')
    img_b = cv2.imread(path2+str(i)+'-targets.png')
    psnr_num = psnr(img_a, img_b)
    ssim_num = ssim(img_a, img_b)
    mse_num = mse(img_a,img_b)
    list_ssim.append(ssim_num)
    list_psnr.append(psnr_num)
    list_mse.append(mse_num)
print("平均PSNR:",np.mean(list_psnr))#,list_psnr)
print("平均SSIM:",np.mean(list_ssim))#,list_ssim)
print("平均MSE:",np.mean(list_mse))#,list_mse)

elapsed = (time.clock() - start)
print("Time used:",elapsed)

 

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值