信号处理中的数学方法,作业1

import mathimport numpy as np
from PIL import Image
from scipy.signal import convolve2d# target:目标图像  ref:参考图像
def PSNR(target, ref):target = np.array(target, dtype=np.float32)ref = np.array(ref, dtype=np.float32)if target.shape != ref.shape:raise ValueError('输入图像的大小应该一致!')diff = ref - targetdiff = diff.flatten('C')rmse = math.sqrt( np.mean(diff ** 2.) )psnr = 20 * math.log10(np.max(target) / rmse)return psnrdef SSIM(target, ref, K1=0.01, K2=0.03, gaussian_kernel_sigma = 1.5, gaussian_kernel_width = 11, L=255):# 高斯核,方差为1.5,滑窗为11*11gaussian_kernel = np.zeros((gaussian_kernel_width,gaussian_kernel_width))for i in range(gaussian_kernel_width):for j in range(gaussian_kernel_width):gaussian_kernel[i,j] = (1 / (2 * math.pi * (gaussian_kernel_sigma ** 2))) * math.exp(-(((i-5) ** 2)+((j - 5) ** 2)) / (2 * (gaussian_kernel_sigma ** 2)))target = np.array(target, dtype=np.float32)ref = np.array(ref, dtype=np.float32)if target.shape != ref.shape:raise ValueError('输入图像的大小应该一致!')target_window = convolve2d(target, np.rot90(gaussian_kernel, 2), mode='valid')ref_window = convolve2d(ref, np.rot90(gaussian_kernel, 2), mode='valid')mu1_sq = target_window * target_windowmu2_sq = ref_window * ref_windowmu1_mu2 = target_window * ref_windowsigma1_sq = convolve2d(target * target, np.rot90(gaussian_kernel, 2), mode='valid') - mu1_sqsigma2_sq = convolve2d(ref * ref, np.rot90(gaussian_kernel, 2), mode='valid') - mu2_sqsigma12 = convolve2d(target * ref, np.rot90(gaussian_kernel, 2), mode='valid') - mu1_mu2C1 = (K1*L)**2C2 = (K2*L)**2ssim_array = ((2 * mu1_mu2 + C1) * (2 * sigma12 + C2)) / ((mu1_sq + mu2_sq + C1) * (sigma1_sq + sigma2_sq + C2))ssim = np.mean(np.mean(ssim_array))return ssimif __name__ == '__main__':target = Image.open('目标图像路径').convert('L')ref = Image.open('参考图像路径').convert('L')psnr = PSNR(target, ref)print('PSNR为:{}'.format(psnr))ssim = SSIM(target, ref)print('SSIM为:{}'.format(ssim))

用python实现PSNR与SSIM相关推荐

  1. Python 实现图片质量比较之PSNR和SSIM

    图片质量评价 Python 实现图片质量比较之PSNR和SSIM PSNR skimge 实现 完示例代码 TensorFlow 实现 SSIM 代码实现 Python 实现图片质量比较之PSNR和S ...

  2. 计算两个文件夹中图片的PSNR和SSIM

    注释:两个文件夹中图片的文件名要一致,格式.后缀都要一直,如果其他格式可以将.jpg改成.bmp 写来只是自己看,自己能用,所以跑不通您也别怪我菜 ```bash```bash```python im ...

  3. psnr 与 ssim评测步骤

    hi3559a平台: 原理: 编码器设置用户图片,作为无视频信号时的插入图片. 解码器通过VO获取视频层上的输出图像帧. 编码用到的关键MPI:HI_MPI_VI_SetUserPic 解码用到的关键 ...

  4. matlab中中图像PSNR和SSIM的计算

    图像处理结果的度量 -- SNR.PSNR.SSIM 网上找了很多关于PSNR和SSIM的计算,很多结果算出来都不一样,公式都是普遍的,如下: 现在总结下造成结果差异的原因. PSNR的差异: 1.灰 ...

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

    PSNR: Image quality assessment: from error visibility to structural similarity SSIM: Image Quality A ...

  6. 全参考客观视频质量评价方法 (MSE, PSNR,SSIM)原理

    全参考客观视频质量评价方法是指把原始参考视频与失真视频在每一个对应帧中的每一个对应像素之问进行比较.准确的讲,这种方法得到的并不是真正的视频质量,而是失真视频相对于原始视频的相似程度或保真程度.最简单 ...

  7. 全参考视频质量评价方法(PSNR,SSIM)以及相关数据库

    最常用的全参考视频质量评价方法有以下2种: PSNR(峰值信噪比):用得最多,但是其值不能很好地反映人眼主观感受.一般取值范围:20-40.值越大,视频质量越好. SSIM(结构相似性):计算稍复杂, ...

  8. 图像评价常用指标(PSNR、SSIM、LPIPS 、FID、Recall)

    最近需要测试图像的指标,然后特意去关注了一下相关的信息,然后主要用的评价指标为: 1.PSNR 和 SSIM 去看:图像质量评价指标: PSNR 和 SSIM_马鹏森的博客-CSDN博客_psnr范围 ...

  9. 计算两张图像之间的PSNR和SSIM值

    计算两张图像之间的PSNR和SSIM值 from skimage.metrics import mean_squared_error as mse from skimage.metrics impor ...

  10. PSNR和SSIM计算工具

    全参考客观视频质量评价方法是指把原始参考视频与失真视频在每一个对应帧中的每一个对应像素之问进行比较.准确的讲,这种方法得到的并不是真正的视频质量,而是失真视频相对于原始视频的相似程度或保真程度.最简单 ...

最新文章

  1. DeepFaceLab史上最快的环境搭建(虚拟环境)
  2. 读过的好书[技术类]
  3. 普及组2008NOIP 排座椅(贪心+排序)
  4. 3. Qt Creator
  5. ubuntu18.04下安装tomcat8.5
  6. 【数据结构与算法】之深入解析“寻找峰值”的求解思路与算法示例
  7. ORACLE IMP-00017: following statement failed with ORACLE error 6550
  8. 深度学习:优化方法——momentum、Nesterov Momentum、AdaGrad、Adadelta、RMSprop、Adam
  9. Java 基础 —— 注解
  10. 09 spring-aop
  11. 阶段3 2.Spring_09.JdbcTemplate的基本使用_2 JdbcTemplate的概述和入门
  12. python冒泡算法_python冒泡算法
  13. FileInputStream.read()返回int类型原因
  14. 2005年上半年软件评测师试题和答案
  15. W3Cschool从零开始学C语言笔记(1-2)位、字节及排列组合
  16. 安卓游戏平台怎样对接游戏?
  17. Android PC同步软件 类似 apple 的 itunes
  18. clickhouse--求累计数值
  19. excel高级筛选怎么用_excel:高级筛选技巧大全,值得收藏
  20. 【PyTorch】PyTorch深度学习实践|视频学习笔记|P6-P9

热门文章

  1. 计算机组装故障排除方法,计算机的硬件组装及故障排除
  2. 使用八爪鱼工具爬取京东当前所有手机信息存入mysql
  3. 团体程序设计天梯赛-练习集——7-9 打印学生选课清单 (25分)
  4. SecondCopy 2000 简单说明
  5. 鸿蒙系统和安装包,鸿蒙系统安装包
  6. 热敏电阻(NTC)的作用
  7. 计算机win10+上锁,手把手教你在windows 10右键菜单中添加Bitlocker上锁/解锁教程-网络教程与技术 -亦是美网络...
  8. 基于halconc++坏点簇检测算法
  9. mySQL数据库学习的一些心得
  10. Django REST framework 中文文档