【图像超分辨率】一个简单的总结
文章目录
- 图像超分辨率(Image Super-Resolution, ISR)
- 1 什么是图像超分辨率?
- 2 图像超分辨率通常有哪些方法?
- (1)基于插值的方法
- (2)基于重建的方法
- (3)基于学习的方法(LR image in, HR image out)
- (4)基于隐式神经表示的方法(coordinates in, corresponding intensity out)
- 1.基于坐标的表示
- 2.连续表示
- 3.INR的特点
- 4.一些基于INR的方法
图像超分辨率(Image Super-Resolution, ISR)
1 什么是图像超分辨率?
超分辨率(Super-Resolution)即通过硬件或软件的方法提高原有图像的分辨率,通过一系列低分辨率的图像来得到一幅高分辨率的图像过程就是超分辨率重建。
2 图像超分辨率通常有哪些方法?
(1)基于插值的方法
通过数学插值算法来估计高分辨率图像像素值。
- 双线性插值:计算四个邻近像素的加权平均值。
- 双三次插值:使用16个邻近像素进行加权平均,效果较双线性插值更好。
- Lanczos插值:通过更复杂的数学公式进行插值,能保留更多的细节。
(2)基于重建的方法
通过建立图像的先验模型,利用优化算法进行重建。
- 稀疏表示方法:假设图像可以用少数基向量表示,通过稀疏编码和字典学习进行超分辨率重建。
- 正则化方法:加入各种正则化项(如全变分、边缘保留等)来抑制噪声,恢复图像细节。
(3)基于学习的方法(LR image in, HR image out)
随着深度学习的发展,基于学习的方法在图像超分辨率中取得了显著的进展。主要包括:
-
卷积神经网络(CNN):如(2015年)SRCNN(Super-Resolution Convolutional Neural Network),通过多层卷积网络提取特征,恢复高分辨率图像。
Image Super-Resolution Using Deep Convolutional Networks
具体细节:SRCNN直接处理图像数据。它接受低分辨率图像作为输入,通过一系列卷积层提取特征,最终生成高分辨率图像。SRCNN学习从低分辨率图像到高分辨率图像的映射关系,但这个映射关系是通过网络的权重和偏置存储的。每次超分辨率操作都需要输入具体的图像数据。


-
生成对抗网络(GAN):如SRGAN(Super-Resolution Generative Adversarial Network),通过生成器和判别器的对抗训练,生成更为逼真的高分辨率图像。
具体细节:SRGAN也直接处理图像数据。生成器接受低分辨率图像生成高分辨率图像,判别器则区分生成的图像与真实高分辨率图像。SRGAN学习从低分辨率图像到高分辨率图像的映射关系。生成器的权重和偏置参数存储了这个映射关系。

这里的HR指的是真实的高分辨率图像(real image),SR指的是生成器生成的高分辨率图像(fake image) -
自编码器和变分自编码器(VAE):利用编码器和解码器结构学习图像的低维表示,并重建高分辨率图像。
Image Super-Resolution With Deep Variational Autoencoders
具体细节:VAE通过编码器将输入图像编码为一个低维潜在变量,然后通过解码器将潜在变量重新生成高分辨率图像。VAE存储的是从输入图像到潜在变量的编码映射,以及从潜在变量到生成图像的解码映射。这些映射关系通过网络的权重和偏置参数表示。

(4)基于隐式神经表示的方法(coordinates in, corresponding intensity out)
隐式神经表示(Implicit Neural Representations, INRs)是一种新兴的技术,在图像超分辨率及其他计算机视觉任务中表现出色。INRs使用神经网络来表示连续函数,可以用于表示图像、3D形状等数据。
VideoINR: Learning Video Implicit Neural Representation for Continuous Space-Time Super-Resolution


IREM: High-Resolution Magnetic Resonance Image Reconstruction via Implicit Neural Representation

NeRP: Implicit Neural Representation Learning With Prior Embedding for Sparsely Sampled Image Reconstruction

1.基于坐标的表示
INRs通过神经网络将输入坐标(如图像的(x, y)坐标)映射到相应的像素值。这种方法不直接存储图像像素,而是存储一个映射函数。
2.连续表示
由于神经网络可以表示连续的函数,INRs可以自然地处理不同分辨率下的图像表示。通过查询任意坐标,INRs可以生成不同分辨率的图像。在图像超分辨率任务中,INRs通过学习一个低分辨率图像的隐式表示(这个隐式表示就是上面提到的一个从坐标到像素值的一个映射函数,通常是随机初始化一个MLP,然后通过学习得到一个参数化好的MLP就是该映射函数),可以生成高分辨率图像。例如,使用一个多层感知机(MLP)网络来映射输入坐标到像素值。
注:为什么使用多层感知机(MLP)作为隐式神经表示的基础结构?
- MLP作为一种通用的函数逼近器,能够表示任意连续函数。 通过适当的训练,MLP可以学习从输入坐标(如图像的(x, y)坐标)到输出值(如像素值)的复杂映射关系。这种能力使得MLP特别适合用于隐式表示数据,如图像或3D形状。
- 使用MLP来表示图像或其他数据,实际上是在存储一个函数而不是数据本身。 这种表示方式在存储空间上更加高效,尤其是对于高分辨率图像。此外,通过查询任意坐标,MLP可以生成对应的像素值,使得生成不同分辨率的图像变得更加灵活和方便。
- 在INRs中,激活函数的选择对网络性能有重要影响。MLP可以结合各种激活函数,如ReLU、正弦函数等,以适应不同的数据特性和任务需求。例如,SIREN使用正弦激活函数,能够更好地表示高频信号。
3.INR的特点
- 高效存储:相比于直接存储高分辨率图像,INRs可以显著减少存储空间。
- 灵活性:可以生成任意分辨率(任意上采样率) 的图像,无需重新训练模型。
- 细节保留:能够在图像放大时保留更多细节。
4.一些基于INR的方法
- SIREN(Sinusoidal Representation Networks):通过使用正弦激活函数的神经网络表示复杂的信号,包括图像。
- NeRF(Neural Radiance Fields):虽然主要用于3D场景表示,但其基本思想也可应用于图像超分辨率,通过隐式函数表示和查询生成高分辨率图像。
相关文章:
【图像超分辨率】一个简单的总结
文章目录 图像超分辨率(Image Super-Resolution, ISR)1 什么是图像超分辨率?2 图像超分辨率通常有哪些方法?(1)基于插值的方法(2)基于重建的方法(3)基于学习的方法(LR im…...
WEB与低代码:B/S架构在开发中的应用与优势
在互联网迅猛发展的今天,WEB应用已经成为人们日常生活和工作中不可或缺的一部分。随着技术的进步和需求的多样化,开发高效、灵活且易于维护的WEB应用变得尤为重要。B/S架构(Browser/Server Architecture)作为一种常见的WEB应用架构…...
内容营销专家刘鑫炜揭秘:姜萍一夜暴红背后的品牌传播密码
在互联网的浪潮下,品牌传播的方式愈发多样和复杂。近日,江苏省涟水中等专业学校的十七岁中专生姜萍因在世界级数学竞赛中取得优异成绩而一夜暴红,成为网络上的热议焦点。 在这个充满变数的时代,谁也无法预测下一个网红会是谁。然…...
安装VEX外部编辑器
Houdini20配置VEX外部编辑器方法_哔哩哔哩_bilibili 下载并安装Visual Studio Code软件:Download Visual Studio Code - Mac, Linux, Windows 在Visual Studio Code软件内,安装相关插件,如: 中文汉化插件vex插件 安装Houdini Expr…...
ISO 19110全局要求类/req/global/bound-association-role要求的详细解释
/req/global/bound-association-role 要求: 如果模型允许在一个关联角色(association role)中存在“rolePlayer”关联,并且该角色属于一个“globalProperty”角色,那么这种绑定必须通过一个绑定的关联角色实体(bound …...
武汉凯迪正大等简述电缆电容检测:原理、应用与重要性
为了确保电缆的安全稳定运行评估电缆绝缘质量以及检测潜在故障,需要对电缆做一些必要的检测。本文将依照凯迪正大的一些经验对电缆电容检测的原理、应用及其重要性进行简单的序述。 一、电缆电容检测的原理 电缆电容检测基于电容的基本特性,电容是指两个…...
python调用阿里云OSS对象存储
1)安装SDK import oss2 print(oss2.__version__) 如果能返回SDK版号,则安装成功 2)配置访问凭证 import oss2 from project1 import settings #以下参数在阿里云账号中可以查到 auth=oss2.Auth(settings.ACCESS_KEY_ID, settings.ACCESS_KEY_SECRET) endpoint=settings.E…...
530、二叉搜索树的最小绝对差
给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数,其数值等于两值之差的绝对值。 代码如下: class Solution { private: int result INT_MAX; TreeNode* pre NULL; void traversal(TreeNode…...
docker配置redis主从复制
下载redis,复制redis.conf 主节点(6379) 修改redis.conf # bind 127.0.0.1 # 注释掉这里 protected-mode no # 改为no port 6379从节点(6380) 修改redis.conf bind 127.0.0.1 protected-mode no # 改为no port 6380 replicaof 172.17.0.2 6379 # 这里的ip为主节点容器的i…...
IPython调试秘籍:pdb调试器深度解析与实战
🐞 IPython调试秘籍:pdb调试器深度解析与实战 在Python编程中,调试是开发过程中不可或缺的一环。IPython,作为一个强大的交互式Python解释器,内置了pdb调试器,使得代码调试变得异常便捷。本文将深入探讨如…...
MySQL 死锁处理
查询是否锁表 SHOW OPEN TABLES WHERE In_use > 0; 查看正在锁的事务 SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS; 查看等待锁的事务 SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS; 查看进程信息 SHOW PROCESSLIST; 或者 SELECT * FROM INFORMATION_SCHE…...
scatterlist的相关概念与实例分析
概念 scatterlist scatterlist用来描述一块内存,sg_table一般用于将物理不同大小的物理内存链接起来,一次性送给DMA控制器搬运 struct scatterlist {unsigned long page_link; //指示该内存块所在的页面unsigned int offset; //指示该内存块在页面中的…...
leetCode.97. 交错字符串
leetCode.97. 交错字符串 题目思路 代码 class Solution { public:bool isInterleave(string s1, string s2, string s3) {int n s1.size(), m s2.size();if ( s3.size() ! n m ) return false;vector<vector<bool>> f( n 1, vector<bool> (m 1));s1 …...
算力时代,算能(SOPHGO)的算力芯片/智算板卡/服务器选型
数字经济时代,算力成为支撑经济社会发展新的关键生产力,全球主要经济体都在加快推进算力战略布局。随着大模型持续选代,模型能力不断增强,带来算力需求持续增长。算力对数字经济和GDP的提高有显著的带动作用,根据IDC、…...
ManageEngine连续荣登Gartner 2024年安全信息和事件管理魔力象限
我们很高兴地宣布,ManageEngine再次在Gartner的安全信息和事件管理(SIEM)魔力象限中榜上有名,这是我们连续第七年获得这一认可。 Gartner ManageEngine Log360是一款全面的SIEM解决方案,旨在帮助组织有效处理日志数据…...
51单片机第11步_在C语言中插入汇编语言
本章重点介绍如何在C语言中插入汇编语言。要不是有记录,真不知道怎么搞。 /* 你在 Project Workspace窗口中,将光标移到DELAY.c处,点下鼠标右键,选择"Options for file DELAY.c", 点击右边的"Generate Assembler SRC File"和“Assemble SRC …...
【Qt+opencv】图片与视频的操作
文章目录 前言图片的操作图片的读取图片的写入示例代码 视频的操作打开视频关闭视频 总结 前言 在现代计算机视觉应用中,图像和视频处理起着至关重要的作用。这些应用范围广泛,包括图像识别、物体跟踪、3D建模等。为了实现这些功能,我们需要…...
Kubernetes面试整理-PersistentVolumes和PersistentVolumeClaims的使用和配置
在 Kubernetes 中,PersistentVolumes (PV) 和 PersistentVolumeClaims (PVC) 提供了一种分离存储和使用存储的机制。PV 是集群中存储资源的抽象表示,而 PVC 是用户对存储资源的请求。通过这种机制,用户可以动态地申请和管理存储资源。 PersistentVolumes (PV) PersistentVol…...
C++学习全教程(Day2)
一、数组 在程序中为了处理方便,常常需要把具有相同类型的数据对象按有序的形式排列起来,形成“一组”数据,这就是“数组”(array) 数组中的数据,在内存中是连续存放的,每个元素占据相同大小的空间,就像排…...
Transformer详解encoder
目录 1. Input Embedding 2. Positional Encoding 3. Multi-Head Attention 4. Add & Norm 5. Feedforward Add & Norm 6.代码展示 (1)layer_norm (2)encoder_layer1 最近刚好梳理了下transformer,今…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
