欢迎关注博主的公众号:happyGirl的异想世界。有更多干货还有技术讨论群哦~

psnr是“Peak Signal to Noise Ratio”的缩写,即峰值信噪比,是一种评价图像的客观标准,它具有局限性,一般是用于最大值信号和背景噪音之间的一个工程项目。

from PIL import Image
import numpy
import mathdef psnr(img1, img2):mse = numpy.mean( (img1 - img2) ** 2 )if mse == 0:return 100PIXEL_MAX = 255.0return 20 * math.log10(PIXEL_MAX / math.sqrt(mse))img1=Image.open('1.png')
img2=Image.open('2.jpg')i1_array = numpy.array(img1)
i2_array = numpy.array(img2)r12=psnr(i1_array,i2_array)
print(r12)

SSIM(Structural SIMilarity),结构相似性,是一种衡量两幅图像相似度的指标。该指标首先由德州大学奥斯丁分校的图像和视频工程实验室(Laboratory for Image and Video Engineering)提出。

SSIM使用的两张图像中,一张为未经压缩的无失真图像,另一张为失真后的图像。

import cv2
import numpy as npdef ssim(img1, img2):C1 = (0.01 * 255) ** 2C2 = (0.03 * 255) ** 2img1 = img1.astype(np.float64)img2 = img2.astype(np.float64)kernel = cv2.getGaussianKernel(11, 1.5)window = np.outer(kernel, kernel.transpose())mu1 = cv2.filter2D(img1, -1, window)[5:-5, 5:-5]  # validmu2 = cv2.filter2D(img2, -1, window)[5:-5, 5:-5]mu1_sq = mu1 ** 2mu2_sq = mu2 ** 2mu1_mu2 = mu1 * mu2sigma1_sq = cv2.filter2D(img1 ** 2, -1, window)[5:-5, 5:-5] - mu1_sqsigma2_sq = cv2.filter2D(img2 ** 2, -1, window)[5:-5, 5:-5] - mu2_sqsigma12 = cv2.filter2D(img1 * img2, -1, window)[5:-5, 5:-5] - mu1_mu2ssim_map = ((2 * mu1_mu2 + C1) * (2 * sigma12 + C2)) / ((mu1_sq + mu2_sq + C1) *(sigma1_sq + sigma2_sq + C2))return ssim_map.mean()def calculate_ssim(img1, img2):'''calculate SSIMthe same outputs as MATLAB'simg1, img2: [0, 255]'''if not img1.shape == img2.shape:raise ValueError('Input images must have the same dimensions.')if img1.ndim == 2:return ssim(img1, img2)elif img1.ndim == 3:if img1.shape[2] == 3:ssims = []for i in range(3):ssims.append(ssim(img1, img2))return np.array(ssims).mean()elif img1.shape[2] == 1:return ssim(np.squeeze(img1), np.squeeze(img2))else:raise ValueError('Wrong input image dimensions.')img1 = cv2.imread("1.png", 0)
img2 = cv2.imread("2.jpg", 0)
img3 = cv2.imread("3.jpg", 0)
img4 = cv2.imread("4.png", 0)img1 = np.array(img1)
img2 = np.array(img2)
img3 = np.array(img3)
img4 = np.array(img4)ss = calculate_ssim(img2, img3)
print(ss)

ssim代码参考:https://www.jb51.net/article/176717.htm

计算两幅图像的PSNR和SSIM以及python代码实现相关推荐

  1. 计算两幅图像PSNR

    计算两幅图像PSNR 1.原始图像 2.对比图像 3.MATLAB程序代码 4.计算结果 1.原始图像 lenna512.bmp 2.对比图像 lenna512_low_dynamic_range.b ...

  2. 使用OpenCV计算两幅图像的协方差

    要计算协方差首先要知道协方差的数学原理. 定义 Cov(X,Y) = E{ [X-E(X)][Y-E(Y)] }为随机量X与Y的协方差. 其中E(X)为随机变量X的期望(均值),E(Y)为随机变量Y的 ...

  3. 比较两幅图像的相似度

    现在以图搜图的功能比较火热,很好奇其原理. 简单的搜索学习得知,实现相似图片搜索的关键技术是"感知哈希算法",作用是对每一张图片按照某种规律生成一个对应的指纹字符串.比较不同图片之 ...

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

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

  5. 相机计算坐标公式_相机位姿估计3:根据两幅图像的位姿估计结果求某点的世界坐标...

    关键词:相机位姿估计,单目尺寸测量,环境探知 用途:基于相机的环境测量,SLAM,单目尺寸测量 文章类型:原理说明.Demo展示 @Author:VShawn @Date:2016-11-28 @La ...

  6. 从两幅图像的匹配点计算焦距f

    从网络中找到两种计算焦距的方法 1.两幅图像的单应矩阵H计算焦距f(取自<全景图拼接>opencv代码) //从两幅图像的单应矩阵H计算焦距f. void focalsFromHomogr ...

  7. 如何计算两幅图像的相似度,计算两张图片相似度

    怎么对比两张图片的相似度 1.首先打开微信,选择底部"发现".如图所示.2.然后在点击进入"小程序".如图所示.3.然后输入"腾讯AI体验中心&quo ...

  8. matlab求两个图像的误差,求两幅图像的均方误差

    测量电源电动势和内阻图像误差 从坐标图上可以清楚的看到:由于电流表和电压表连接的位置不同,测试的误差也不同,当把电压表接在电流表的外侧时,在电路接通状态下,实际把电流表的内阻产生的压降也算进去了,电压 ...

  9. OpenCV之core 模块. 核心功能(1)Mat - 基本图像容器 OpenCV如何扫描图像、利用查找表和计时 矩阵的掩码操作 使用OpenCV对两幅图像求和(求混合(blending))

    Mat - 基本图像容器 目的 从真实世界中获取数字图像有很多方法,比如数码相机.扫描仪.CT或者磁共振成像.无论哪种方法,我们(人类)看到的是图像,而让数字设备来"看"的时候,则 ...

最新文章

  1. python结果输出到excel-python实现数据导出到excel的示例--普通格式
  2. sklearn中的fit_transform和transform以及什么时候使用
  3. android组合动画还原,Android - Fragment,View动画,组合动画,属性动画
  4. 北京活动:4月20号《科技媒体、SEO与PM》主题活动
  5. mysql locate 和 like_MySQL比like语句更高效的写法locate position instr find_in_set
  6. linux环境cpp/c文件的makefile编写(caffe举例)
  7. 主进程退出后子进程还会存在吗?_【干货】Linux进程模型 全解
  8. oracle在archivelog模式进行rman备份和恢复
  9. HM 内存池设计(2) HM6.0内存池设计
  10. TypeError: tuple indices must be integers, not tuple是怎么回事
  11. 想请问下PDF双面打印时(打印机自动双面打印)为什么反面那页的内容是倒过来的,应该怎么设置?...
  12. Janusgraph使用示例
  13. 通过pyproj进行WGS84到UTM坐标的转换
  14. Chapter3:字符串编码和文件操作
  15. FTP电脑间传输文件
  16. IO接口以太网低频工业RFID读写器|读取器CK-LR12-E00之Modbus TCP的寄存器定义与说明
  17. 读史蒂芬·利维《黑客:计算机革命的英雄》
  18. Android事件分发机制:示例(三)
  19. 关于计算机图形学的学习的书籍推荐
  20. java手机游戏(堡垒)的设计与开发

热门文章

  1. “金银花露”是夏令保健清凉饮料 养生专属!
  2. 有没有什么靠谱的副业?
  3. 论文投稿-图片处理技巧
  4. 洛谷P4324 扭动的回文串
  5. android 获取手机号码 权限,Android跳转到通讯录获取用户名称和手机号码
  6. Arduino制作俄罗斯方块小游戏(三)程序源码
  7. 边缘检测系列5:【CED】添加了反向细化路径的 HED 模型
  8. 通信原理眼图画法_四川大学通信原理眼图实验
  9. openstack与ceph环境恢复云主机
  10. 计算机绘图1091大作业,2018秋季【西南大学】[1091]《计算机绘图(1)》作业(参考答案)...