PSNR: Image quality assessment: from error visibility to structural similarity

SSIM: Image Quality Assessment: From Error Visibility to Structural Similarity

直接上代码:

from tqdm import tqdm
import torch
import os
from torch.utils.data import Dataset
from torch.utils.data import DataLoader
import numpy as np
import cv2
from skimage.metrics import peak_signal_noise_ratio as psnr_loss
from skimage.metrics import structural_similarity as ssim_lossdef is_png_file(filename):return any(filename.endswith(extension) for extension in [".png"])def load_img(filepath):img = cv2.cvtColor(cv2.imread(filepath), cv2.COLOR_BGR2RGB)img = img.astype(np.float32)img = img/255.return imgclass DataLoaderVal(Dataset):def __init__(self, rgb_dir, target_transform=None):super(DataLoaderVal, self).__init__()self.target_transform = target_transformgt_dir = 'input'input_dir = 'groundtruth'clean_files = sorted(os.listdir(os.path.join(rgb_dir, gt_dir)))noisy_files = sorted(os.listdir(os.path.join(rgb_dir, input_dir)))self.clean_filenames = [os.path.join(rgb_dir, gt_dir, x) for x in clean_files if is_png_file(x)]self.noisy_filenames = [os.path.join(rgb_dir, input_dir, x) for x in noisy_files if is_png_file(x)]self.tar_size = len(self.clean_filenames)def __len__(self):return self.tar_sizedef __getitem__(self, index):tar_index = index % self.tar_sizeclean = torch.from_numpy(np.float32(load_img(self.clean_filenames[tar_index])))noisy = torch.from_numpy(np.float32(load_img(self.noisy_filenames[tar_index])))clean_filename = os.path.split(self.clean_filenames[tar_index])[-1]noisy_filename = os.path.split(self.noisy_filenames[tar_index])[-1]clean = clean.permute(2, 0, 1)noisy = noisy.permute(2, 0, 1)return clean, noisy, clean_filename, noisy_filenamedef get_validation_data(rgb_dir):assert os.path.exists(rgb_dir)return DataLoaderVal(rgb_dir, None)input_dir = "image"
test_dataset = get_validation_data(input_dir)
test_loader = DataLoader(dataset=test_dataset, batch_size=1, shuffle=False, num_workers=0, drop_last=False)if __name__ == '__main__':psnr_val_rgb = []ssim_val_rgb = []for ii, data_test in enumerate(tqdm(test_loader), 0):rgb_groundtruth = data_test[0].numpy().squeeze().transpose((1, 2, 0))rgb_restored = data_test[1].cuda()rgb_restored = torch.clamp(rgb_restored, 0, 1).cpu().numpy().squeeze().transpose((1, 2, 0))psnr_val_rgb.append(psnr_loss(rgb_restored, rgb_groundtruth))ssim_val_rgb.append(ssim_loss(rgb_restored, rgb_groundtruth, multichannel=True))psnr_val_rgb = sum(psnr_val_rgb) / len(test_dataset)ssim_val_rgb = sum(ssim_val_rgb) / len(test_dataset)print("PSNR: %f, SSIM: %f " % (psnr_val_rgb, ssim_val_rgb))

文件夹格式:

需要注意的是:input与groundtruth的图片个数要一致


1. PSNR (Peak Signal-to-Noise Ratio) 峰值信噪比

PSNR越高,图像和原图越接近。这是客观指标,

PSNR(峰值信噪比):用得最多,但是其值不能很好地反映人眼主观感受。一般取值范围:20-40.值越大,视频质量越好

# im1 和 im2 都为灰度图像,uint8 类型# method 1
diff = im1 - im2
mse = np.mean(np.square(diff))
psnr = 10 * np.log10(255 * 255 / mse)# method 2
psnr = skimage.measure.compare_psnr(im1, im2, 255)

2. SSIM (Structural SIMilarity) 结构相似性

实际评价还有主观指标,不过主观的东西就比较模糊了,每个人感觉都会不同的。最常用的全参考视频质量评价方法:

计算稍复杂,其值可以较好地反映人眼主观感受。一般取值范围:0-1.值越大,视频质量越好。

# im1 和 im2 都为灰度图像,uint8 类型
ssim = skimage.measure.compare_ssim(im1, im2, data_range=255)

图像质量评价指标之 PSNR 和 SSIM - 知乎

图像质量评价指标: PSNR 和 SSIM相关推荐

  1. 图像质量评价指标PSNR和SSIM

    由于是从Word文档直接复制过来,其中格式如果乱码或者不通顺,请评论区告知我 参考链接: https://blog.csdn.net/dxpqxb/article/details/85071338 h ...

  2. 【图像相关】图像质量评价指标 PSNR 和 SSIM

    文章目录 PSNR SSIM 参考链接 PSNR PSNR 是 "Peak Signal to Noise Ratio" 的缩写,即峰值信噪比,是一种评价图像的客观标准,它具有局限 ...

  3. 两幅相同大小图像的相似程度的两个评价指标-PSNR和SSIM

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 图像相似度主要是对两幅图像内容的相似程度进行打分 ...

  4. 图像评价指标——PSNR、SSIM、FID、KID

    概念 PSNR PSNR 叫 峰值信噪比,与均方误差MSE 和最大像素值MAX有关. SSIM SSIM 是结构相似性,比较亮度.对比度和结构三个指标. FID fid是一个非常常用的评估图像生成质量 ...

  5. 两种常用的参考图像质量评价指标——超分辨率(五)

    两种常用的参考图像质量评价指标 PSNR(Peak Signal to Noise Ratio)峰值信噪比: 峰值信噪比(PSNR)是一个表示信号最大可能功率和影响它的表示精度的破坏性噪声功率的比值的 ...

  6. 图像质量评价指标之 PSNR 和 SSIM

    1.PSNR (Peak Signal-to-Noise Ratio) 峰值信噪比 概念: PSNR(PeakSignaltoNoiseRatio) 峰值信噪比,是信号最大功率与信号噪声功率之比. 通 ...

  7. 图像质量评价指标: PSNR 和 SSIM 和 LPIPS

    简单介绍: 1.PSNR:峰值信噪比 图像与影像压缩中典型的峰值讯噪比值在30dB 到50dB 之间,愈高愈好. PSNR接近50dB ,代表压缩后的图像仅有些许非常小的误差. PSNR大于30dB ...

  8. 【图像评价指标】PSNR和SSIM

    PSNR是一种全参考的图像质量评价指标.给定一个大小为m x n的清晰图像I和噪声图像K,均方误差MSE为: 则PSNR(dB)定义为: 其中,MSE表示当前图像X和参考图像Y的均方误差(Mean S ...

  9. 图像质量评估指标:MSE,PSNR,SSIM

    文章目录 MSE与PSNR的计算方法 MSE与PSNR的问题 SSIM的理念与计算方法 理念 概念准备 公式理解 基本元素 三原则 亮度.对比度.结构的相似度指标设计 最终公式 程序计算方法 计算公式 ...

最新文章

  1. 移动端IOS和androi及浏览器js判断[转载]
  2. kali Linux metasploit进入msfgui
  3. xgboost模型参数详解
  4. html日期横向拖动选择控件,一个简单横向javascript日期控件
  5. PHP的file_put_contents函数把一个字符串写入文件中
  6. 【设计模式】—— 适配器模式Adapter
  7. Android USB 属性设置:ADB、RNDIS、MTP等
  8. Html5---可编辑的Contenteditable
  9. 经典冒泡排序-由低到高
  10. 【AI视野·今日CV 计算机视觉论文速览 第180期】Wed, 26 Feb 2020
  11. php网站渗透实战_【案例分析】记一次综合靶场实战渗透
  12. 如果把钱存入余额宝时,所有人都在受益,那么谁在亏损呢?
  13. ios苹果越狱教程(奥德赛)
  14. pcb上钽电容丝印图_pcb钽电容正负极该如何识别
  15. 博客上云历程(二):Docker入门介绍与使用
  16. 人应该怎样度过自己的一生
  17. 【gym 101991 E】(ACPC 2018) E. Exciting Menus 题解
  18. 爬虫第四战爬取糗事百科搞笑段子
  19. 从优酷到阿里文娱,大麦终于“转正”了?
  20. mysql sys模式_mysql8 参考手册-sys模式存储过程diagnostics()过程

热门文章

  1. PLSQL创建用户及权限分配
  2. 编程体系结构(04):JavaIO流文件管理
  3. JavaScript数据结构与算法(1)(数组、栈、队列、链表)(ES6)
  4. UML类图操作(一)
  5. Python3之对象垃圾收集机制浅析
  6. springboot项目根据不同的环境启动不同的配置,如开发环境dev,测试环境sit,生产环境application...
  7. leetcode题解(二叉树和递归问题)
  8. 一天一个设计模式之JS实现——建造者模式
  9. 异构平台同步(Mysql到Oracle)
  10. SVG.js 颜色渐变使用