PSNRSSIMVIF指标-python版本
PSNR:
# 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)
SSIM:
# im1 和 im2 都为灰度图像,uint8 类型
ssim = skimage.measure.compare_ssim(im1, im2, data_range=255)
VIF:
vifp = skimage.measure.compare_vifp(img1, img2)
这里我把函数包里的SSIM改成了VIF的计算方式。
同样都是skimage
函数库中的,从anaconda
的函数库那个文件夹进去,找到~/skimage/measure
里面的函数_structural_similarity.py
,然后复制粘贴,改成VIF的计算(下面代码复制过去),改成_vifp.py
,就可以直接调用。
##我的命名成_vifp!!import numpy
import scipy.signal
import scipy.ndimage__all__ = ['compare_vifp']def compare_vifp(ref, dist):sigma_nsq = 2eps = 1e-10num = 0.0den = 0.0for scale in range(1, 5):N = 2 ** (4 - scale + 1) + 1sd = N / 5.0if (scale > 1):ref = scipy.ndimage.gaussian_filter(ref, sd)dist = scipy.ndimage.gaussian_filter(dist, sd)ref = ref[::2, ::2]dist = dist[::2, ::2]mu1 = scipy.ndimage.gaussian_filter(ref, sd)mu2 = scipy.ndimage.gaussian_filter(dist, sd)mu1_sq = mu1 * mu1mu2_sq = mu2 * mu2mu1_mu2 = mu1 * mu2sigma1_sq = scipy.ndimage.gaussian_filter(ref * ref, sd) - mu1_sqsigma2_sq = scipy.ndimage.gaussian_filter(dist * dist, sd) - mu2_sqsigma12 = scipy.ndimage.gaussian_filter(ref * dist, sd) - mu1_mu2sigma1_sq[sigma1_sq < 0] = 0sigma2_sq[sigma2_sq < 0] = 0g = sigma12 / (sigma1_sq + eps)sv_sq = sigma2_sq - g * sigma12g[sigma1_sq < eps] = 0sv_sq[sigma1_sq < eps] = sigma2_sq[sigma1_sq < eps]sigma1_sq[sigma1_sq < eps] = 0g[sigma2_sq < eps] = 0sv_sq[sigma2_sq < eps] = 0sv_sq[g < 0] = sigma2_sq[g < 0]g[g < 0] = 0sv_sq[sv_sq <= eps] = epsnum += numpy.sum(numpy.log10(1 + g * g * sigma1_sq / (sv_sq + sigma_nsq)))den += numpy.sum(numpy.log10(1 + sigma1_sq / sigma_nsq))vifp = num / denif numpy.isnan(vifp):return 1.0else:return vifp
PSNRSSIMVIF指标-python版本相关推荐
- python多个版本可不可以装在一起_可以在同一台计算机上安装多个Python版本。
可以在同一台计算机上安装多个Python版本. 答:对 合理膳食的核心问题是 ( ) 答:膳食结构 青天明月来几时?我今停杯一问之.人攀明月不可得,. --李白<把酒问月> 答:月行却与人 ...
- 基于ModelArts和CANN的端到端行人检测和跟踪Demo(Python版本)【训练篇】
前言 基于华为云ModelArts和昇腾CANN实现从训练到部署的端到端行人检测和跟踪Demo,这里的CANN使用的是Python接口(Python版本). 在ModelArts完成开发和模型训练 华 ...
- 多版本python共存,安装三方库到指定python版本 多Python版本和虚拟环境
多个Python版本:在同一台机器上安装不同的Python,例如2.7和3.4. 虚拟环境:独立的环境,既可以同时安装特定版本的Python,也可以安装任何特定于项目的软件包,而不会影响任何其他项目. ...
- 适合win7的python版本_windows下多个python版本共存,如何在Windows7系统上安装最新的64位Python3.6.2...
windows下多个python版本共存,如何在Windows7系统上安装最新的64位Python3.6.2 1.官网下载python3.6.2 https://www.python.org/ftp/ ...
- linux python版本_linux下更新Python版本并修改默认版本
linux下更新Python版本并修改默认版本,有需要的朋友可以参考下. 很多情况下拿到的服务器python版本很低,需要自己动手更改默认python版本 1.从官网下载python安装包(这个版本可 ...
- 如何管理多个Python版本和虚拟环境
Addition January 2019: If you are coming back to this blog after upgrading to macOS Mojave please se ...
- Python版本的数据结构书_《用Python解决数据结构与算法问题》
源于经典 数据结构作为计算机从业人员的必备基础,Java, c 之类的语言有很多这方面的书籍,Python 相对较少, 其中比较著名的一本 problem-solving-with-algorithm ...
- ubuntu升级python_ubuntu升级python版本
运行发现错误: AttributeError: 'module' object has no attribute 'OrderedDict' google发现是因为python版本老了的原因(pyth ...
- linux中更新python_linux下面升级 Python版本并修改yum属性信息
最近需要在linux下使用python,故需要升级一下python版本,上网查询了一下相关资料,更新了一下linux下面的python环境,记录如下: linux下面升级 Python版本并修改yum ...
- 如何确定python对应电脑版本_查看Anaconda版本、Anaconda和python版本对应关系和快速下载...
官网 查看Anaconda版本 (C:\ProgramData\Anaconda3) C:\Users\Administrator>conda -V conda 4.3.30 Anaconda和 ...
最新文章
- Khadas VIM3 (Amlogic A311D) uboot去掉烦人的乱七八糟的打印1——BL2 BL3x
- 2016/1/4 学习笔记 数据类型转换 注释 语句
- 数据返回nan_数据处理教程
- 换脸App爆红引发人脸盗刷担忧?看到支付宝的回应放心了...
- Spring : Bean依赖注解(@DependsOn)
- [OC]数据库的使用--数据读取
- js img转换base64
- python声明编码_Python 2.x 编码声明:是coding:utf-8还是coding=urf-8呢
- android App下载与安装
- 华为odjava机试题_华为机试题及答案
- 网页中那些遇到过的导航选中状态actived selected
- maxwell采集mysql binlog 日志数据到kafka topic
- 【C++初阶学习】之 懒人神器——模版(概念)
- 什么是火起来的“宅经济”,重庆阿尔克互联网技能帮扶学习,进入互联网
- 12月19日科技资讯|富士康员工涉嫌盗卖 iPhone 零件遭调查;IntelliJ IDEA 2019.3.1 发布
- 用通俗的话解释下offsetHeight
- 魔兽争霸Trigger学习教程(0)
- 推荐适合新手入门的音频剪辑软件推荐
- yl335b分拣站单元流程图_基于PLC与MCGS的YL-335B分拣单元的创新设计
- 【英语阅读】纽约时报 | 边走路边看手机有多危险,以及你该如何控制自己