SSIM学习
SSIM原文链接:https://www.researchgate.net/profile/Eero-Simoncelli/publication/3327793_Image_Quality_Assessment_From_Error_Visibility_to_Structural_Similarity/links/542173b20cf203f155c6bf1a/Image-Quality-Assessment-From-Error-Visibility-to-Structural-Similarity.pdf
SSIM用途
SSIM是结构相似性度量(Structural Similarity Index),是一种衡量两个图像相似性的指标。在深度学习中,SSIM常被用来评估生成模型(如GAN)生成的图像与真实图像之间的相似程度。
SSIM通过比较图像的亮度、对比度和结构等方面的相似性,计算出两幅图像之间的相似性分数。它基于人眼对图像的感知,能够更好地反映图像质量,与传统的误差测量方法(如均方误差)相比,更具有鲁棒性和准确性。
我们通过肉眼,可以观察到在相同MSE,不同SSIM下图片的区别:

SSIM计算公式
SSIM在计算的时候主要由图片的3个关键特征决定,分别是:亮度(Luminance),对比度(Contrast),结构 (Structure)。
1. 亮度
亮度以单个像素的灰度值进行描述,用x表示predict图片某个通道中某个像素的灰度值,y表示label图片对应通道中对应像素的灰度值,我们通过求取x,y的样本均值来得到对应亮度的项:

我们能够发现μx=μy\mu_x=\mu_yμx=μy的时候,l=1l=1l=1,引入C1是为了防止均值为0的情况。
2. 对比度
对比度以像素距离均值的偏移程度来进行描述,你可以想到如果一张图对比度越大,那它距离灰度的均值远的像素点就越多。我们通过求取样本标准差来得到对应对比度的项:

3. 结构
结构以像素的线性相关性来进行描述。我们通过求取协方差来得到对应结构的项:

4. SSIM最终公式
SSIM的最终计算公式为:
SSIM(x,y)=[l(x,y)]α[c(x,y)]β[s(x,y)]γSSIM(x, y) = [l(x, y)]^α [c(x, y)]^β [s(x, y)]^γSSIM(x,y)=[l(x,y)]α[c(x,y)]β[s(x,y)]γ
其中,x和y分别表示待比较的两幅图像,l(x,y)、c(x,y)、s(x,y)分别为亮度相似度、对比度相似度和结构相似度,α、β、γ为加权系数,一般取1。
我们将上面计算的l,c,sl, c, sl,c,s带入公式得到如下:

在实际应用中,由于像素总是正值,例如真彩色RGB 24bit,SSIM的值通常在0到1之间,越接近1表示两幅图像越相似。
相关文章:
SSIM学习
SSIM原文链接:https://www.researchgate.net/profile/Eero-Simoncelli/publication/3327793_Image_Quality_Assessment_From_Error_Visibility_to_Structural_Similarity/links/542173b20cf203f155c6bf1a/Image-Quality-Assessment-From-Error-Visibility-to-Struct…...
selenium自动化测试用例需要关注的几点
自动化测试设计简介注:参看文章地址 我们在本章提供的信息,对自动化测试领域的新人和经验丰富的老手都是有用的。本篇中描述最常见的自动化测试类型, 还描述了可以增强您的自动化测试套件可维护性和扩展性的“设计模式”。还没有使用这些技术…...
harfbuzz 的用法
hb-blob: HarfBuzz Manual harfbuzz 的用法 HarfBuzz 整形 API 的核心是函数。此函数采用一种字体,即 包含一串 Unicode 代码点的缓冲区和 (可选)字体功能列表作为其输入。它取代了 缓冲区中的代码点,其中包含来自 字…...
JSP 在线学习管理系统myeclipse定制开发sqlserver数据库网页模式java编程jdbc
一、源码特点 JSP 在线学习管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为SQLServer2008&#x…...
Python学习笔记——PIL库(Pillow库)总结
一、图像数据的格式 ①jpg 支持高级别的压缩,利用部分损耗,使图片变小,方便网络传播。 ②png 无损压缩格式,比jpg略大,较好的保存图片画质,支持透明效果。 ③gif 动图效果,多帧图像组合到…...
C. Build Permutation【整数理论、构造、思维】
链接 理论基础 结论:在区间[n,2n]上,至少存在一个完全平方数。结论:在区间[n,2n]上,至少存在一个完全平方数。结论:在区间[n,2n]上,至少存在一个完全平方数。 构造⌈n⌉2构造\lceil \sqrt{n}\rceil^2构造⌈…...
关于ETL的两种架构(ETL架构和ELT架构)
ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象…...
android系统目录
环境:android studio引入android系统源码android和ubuntu策略路由的差异android源码编译问题(单编)repo(android源码)命令使用和注意事项wifi:wifi的加密类型梳理android11 wifisetting 流程跟踪android wifi热点settingandroid n…...
【C/C++】中【typedef】用法大全
总结一下typedef用法,一共七种,分别是:为基本数据类型起别名、为结构体起别名、为指针类型起别名、为数组类型起别名、为枚举类型起别名、为模版函数起别名。 目录 一、为基本数据类型起别名 二、为结构体起别名 三、为指针类型起别名 四…...
超实用的公众号运营攻略分享,纯干货
很多小伙伴抱怨,公众号运营真的越来越难做了! 每天会因为少得可怜的阅读量发愁,每天会因为纠结写什么选题发愁,每天更会因为公众号没有什么起色而感到无力。 现阶段公众号运营趋于饱和状态,公众号创建门槛低…...
编写NodeJs脚本实现接口请求
要编写运行脚本,需要先搭建开发环境 环境搭建 nodeJs脚本运行,当然需要先安装nodejs环境 官方地址在这里: nodejs官网 打开官网地址,可以看到下面一句话: Node.js is an open-source, cross-platform JavaScript runtime environment. 在打开的页面,可以直接下载最新的…...
【无人机】回波状态网络(ESN)在固定翼无人机非线性控制中的应用(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
YAML 文件简介
简介 我们在安装 kubernetes 集群的时候使用了一些 YAML 文件来创建相关的资源,但是对 YAML 文件还是非常陌生。所以我们先来简单看一看 YAML 文件是如何工作的,并使用 YAML 文件来定义一个 kubernetes pod,然后再来定义一个 kubernetes dep…...
Python四大主题之一【 Web】 编程框架
目前Python的网络编程框架已经多达几十个,逐个学习它们显然不现实。但这些框架在系统架构和运行环境中有很多共通之处,本文带领读者学习基于Python网络框架开发的常用知识,及目前的4种主流Python网络框架:Django、Tornado、Flask、Twisted。 …...
【C++】哈希表
1. unordered系列关联式容器 在C98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到 ,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。最好的查询是,进行…...
深度学习入门(六十七)循环神经网络——注意力机制
深度学习入门(六十七)循环神经网络——注意力机制前言循环神经网络——注意力机制课件心理学注意力机制注意力机制是显式地考虑随意线索非参注意力池化层Nadaraya-Watson 核回归:总结教材(注意力提示)1 生物学中的注意…...
阿里云云通信风控系统的架构与实践
作者:铭杰 阿里云云通信创立于 2017 年,历经 5 年发展已经孵化出智能消息、智能语音、隐私号、号码百科等多个热门产品。目前,已成为了国内云通信市场的领头羊,在国际市场上服务范围也覆盖了 200 多个国家。随着业务的不断壮大&am…...
【性能测试】loadrunner(一)知识准备
【性能测试】loadrunner(一)知识准备 目录:导读 1.0. 前言 1.1 性能测试术语介绍 1.2 性能测试分类 1.3 HTTP我们需要知道的 1.4 Loadrunner 12.55安装 1.0. 前言 在性能测试中,牵扯到了许多比较杂的知识点,…...
【Vue3源码】第五章 ref的原理 实现ref
【Vue3源码】第五章 ref的原理 实现ref 上一章节我们实现了reactive 和 readonly 嵌套对象转换功能,以及shallowReadonly 和isProxy几个简单的API。 这一章我们开始实现 ref 及其它配套的isRef、unRef 和 proxyRefs 1、实现ref 接受一个内部值,返回一…...
[Flink]部署模式(看pdf上的放上面)
运行一个wordcountval dataStream: DataStream[String] environment.socketTextStream("hadoop1", 7777) //流式数据不能进行groupBy,流式数据要来一条处理一次.0表示第一个元素,1表示第二个元素 //keyBy(0)根据第一个元素进行分组 val out: DataStream[(String, In…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
毫米波雷达基础理论(3D+4D)
3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...
