RAISR: Rapid and Accurate Image Super Resolution

2024-08-26 23:58

本文主要是介绍RAISR: Rapid and Accurate Image Super Resolution,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Abstract

对于给定的图像,我们希望生成具有更大像素和更高图像质量的更大尺寸的图像。这通常称为单图像超分辨率(SISR)问题。
这个想法是,有了足够的训练数据(相应的低分辨率和高分辨率图像对),我们可以学习一组过滤器(即映射),当将其应用于不在训练集中的给定图像时,会产生更高分辨率的版本,其中学习最好是低复杂度的。在我们提出的方法中,运行时间比目前可用的最佳竞争方法快一到两个数量级,同时产生与最新技术相当或更好的结果。

密切相关的主题是图像锐化和对比度增强,即,通过放大基本细节(宽范围的频率)来提高模糊图像的视觉质量。我们的方法还包括一种极其有效的方法,可产生比输入模糊图像清晰得多的图像,而不会引入诸如光晕和噪声放大之类的伪影。

I. INTRIDUCTION

单图像超分辨率(SISR)是估算低分辨率(LR)输入图像的高分辨率(HR)版本的过程。这是一个经过充分研究的问题,在许多应用程序中都会出现,例如静态图像和文本图像的放大,LR图像/视频到高清屏幕的转换等等。SISR问题的线性退化模型是由

z=D_{s}Hx

其中zz\in R^{M\times N}是输入图像,x \in R^{M_{s}\times N_{s}}是未知的HR图像,两者均按字典顺序保存。线性算子H\in R^{MN_{s^{2}} \times MN_{s^{2}}}对图像x进行模糊处理,然后在每个轴上以s的倍数进行抽取,这是乘以D_{s}\in R^{MN\times MN_{s^{2}}}的结果。在SR任务中,目标是从已知度量z中恢复未知的基础图像x。注意,在现实世界中,降级模型可以是非线性的(例如由于压缩)或是未知的,并且还可以包括噪声。

放大单个图像的基本方法是线性插值器,包括最近邻,双线性和双三次[1],[2]。这些方法由于其简单性和低复杂度而被广泛使用,因为插值内核(放大滤波器)不适应图像的内容。但是,自然地,这些线性方法在重建复杂结构方面受到限制,通常会导致明显的混叠伪影和过度平滑的区域。在过去的十年中,开发了功能强大的图像先验,例如,自相似[3] – [6],稀疏[7] – [12]和高斯混合[13],从而导致高品质的恢复,但代价却是增加复杂。

在本文中,我们集中于基于示例的方法[8],[9],[11],[14] – [18],这些方法近年来引起了很多关注。 这些方法背后的核心思想是利用图像的外部数据库并学习从LR补丁到其HR对应的映射。在学习阶段,会合成LR-HR对图像斑块,例如,对于2倍放大,HR斑块的典型大小是6×6,合成缩小的LR斑块中的一个是3×3。然后,使用各种本地图像先验知识学习期望的映射并对其进行规范化。

稀疏模型就是这样的先验模型[8],[9],其中的学习机制导致在学习的字典上对LR和HR补丁对进行紧凑(稀疏)表示。换句话说,对于每个LR补丁,这些方法都会构建一个非线性自适应滤波器(以投影矩阵形式表示),该滤波器是一些最适合输入补丁的基本元素(学习的字典原子)的组合。应用针对LR补丁量身定制的滤波器会产生所需的放大效果。

锚定邻域回归(ANR)[10]保持[8]和[9]的高质量重构,同时在运行时实现了显着的加速。这可以通过用稀疏编码步骤代替,该稀疏编码步骤使用预先计算的投影矩阵(过滤器)集来计算学习字典上每个补丁的紧凑表示,这是岭回归问题的结果。因此,在运行时,ANR建议不要搜索稀疏编码,而是搜索与LR补丁最接近的原子,然后再乘以相应的预先计算的投影矩阵。一项称为A + [11]的后续工作不仅通过从最近的字典原子中学习回归变量,而且还从本地最近的训练样本中学习回归变量,从而提高了ANR的性能,从而实现了最新的恢复。

SRCNN [16]是另一种基于示例的有效方法,该方法基于深度卷积神经网络(CNN)[19],并学习了从LR图像到其HR对应物的端到端映射。请注意,与基于稀疏性的技术不同,SRCNN并未明确学习用于对补丁进行建模的字典。 在这种情况下,隐藏的卷积层会隐式学习模型。

上面提到的SISR方法导致了令人印象深刻的恢复,但是(相对)高的计算复杂性付出了代价。在本文中,我们提出了一个基于学习的框架,称为RAISR,该框架可产生高质量的恢复,同时比当前的领先算法快两个数量级,并且内存需求极低。

RAISR背后的核心思想是通过在图像块上应用一组预先学习的滤镜(由有效的哈希机制选择)来提高非常便宜(例如双线性)插值方法的质量。请注意,这些滤镜是根据LR和HR训练图像对配对学习的,而散列是通过估计局部梯度的统计数据来完成的。

作为最后一步,为了避免出现伪像,通过应用加权平均值将初始放大的图像及其滤波版本进行局部混合,其中权重是结构描述符的函数。我们利用Census 变换(CT)[20]来完成混合任务,因为它是图像结构的极其快速和廉价的描述符,可用于检测由于滤波步骤而导致的结构变形。

与SISR紧密相关的主题是图像锐化,旨在放大模糊图像的结构/细节。基本锐化技术在图像上应用线性滤波器,例如在锐化蒙版[21]或高斯差分(DoG)[22],[23]的情况下。 这些技术在复杂性方面非常有效,但是往往会引入诸如过度锐化,梯度反转,噪声放大等伪像。与SISR相似,依靠补丁先验可以获得更好的结果,其中对图像内容/结构的敏感度是无伪影增强的关键[24]-[28]。例如,与线性方法相比,随着复杂性成本的增加,边缘感知双边滤波器[29],[30],非局部均值[3]和导向滤波器[25]产生了令人印象深刻的锐化效果。

作为生成高质量清晰图像的一种方法,可以学习从LR图像到其锐化的HR版本的映射,从而“免费”获得内置的锐化/对比度增强效果。此外,学习阶段不限于线性降级模型(如式(1)中所示),因此,可以轻松地完成从压缩的LR图像到其锐化的HR版本的映射,从而实现“一体式” 这种机制不仅可以提高图像分辨率,还可以减少压缩伪像并增强图像的对比度。

受此观察结果的启发,我们也开发了一种锐化器,这是值得关注的。所提出的锐化器是高效的,并且能够增强图像的精细细节(高频)和图像的整体对比度(中低频)。所提出的方法具有与线性锐化器几乎相似的复杂性,同时可以与更复杂的技术竞争。建议的锐化器是基于在图像上应用DoG滤波器[22],[23],它们能够增强宽范围的频率。接下来,基于CT的结构感知混合步骤被用作防止由于增加的内容感知属性(与SISR上下文中所建议的机制相似)而导致伪影的方法。

本文的组织结构如下:在第二部分中,我们描述了全局学习和升级方案,并制定了RAISR的核心引擎。在第三部分中,我们通过将初始升级内核集成到学习方案中来完善全局方法。 在第四部分中,我们描述了整个学习和升级框架,包括哈希和混合步骤。锐化算法在第V部分中进行了详细说明。在第VI部分中进行了实验,将建议的放大和锐化算法与最新方法进行了比较。第七节给出了结论和未来的研究方向。

II. FIRST STEPS: GLOBAL FILTER LEARNING

给定训练数据库图像y_{i}\in R^{M\times N}的初始(例如,在我们的情况下为双线性)升级版本,其中i=1,...,L,我们的目标是学习一个d×d过滤器h,该过滤器最小化集合\{y_{i}\}与所需训练HR图像\{x_{i}\}之间的欧几里得距离。

\underset{h}{min} \sum_{i=1}^{L} ||A_{i}h-b_{i}||_{2}^{2}

其中h\in R^{d^{2}}表示矢量符号的滤波器h\in R^{d\times d}A_{i}\in R^{MN\times d^{2}}是一个矩阵,由从图像yi中提取的大小为d×d的小块组成,每个小块在矩阵中形成一行。向量b_{i}\in R^{MN}由来自xi的像素组成,对应于yi补丁的中心坐标。该框图展示了学习过程的核心思想,如图1a所示。

实际上,矩阵A可能非常大,因此我们采用两种单独的方法来控制估计滤波器的计算复杂度。 首先,通常并非所有可用补丁都需要使用以获得可靠的估计。实际上,我们通常通过从固定网格(K <<MN)上的图像中采样K个补丁/像素来构造Ai和bi。第二,最小二乘问题的最小化,由等式(2)表示,可以以显着减少内存和计算需求的方式进行重铸。为了简化说明,下面的讨论是在仅基于一张图像进行滤镜学习的情况下进行的,但是将思想扩展到多个图像和滤镜是微不足道的。所提出的方法为学习阶段提供了一种有效的解决方案,在该阶段内存需求仅在学习的滤波器大小的数量级上。该解决方案基于以下观察结果,而不是最小化方程(2),我们可以最小化

\underset{h}{min}||Qh-V||_{2}^{2}(3)

其中Q=A^{T}AV=A^{T}b

注意,Q是一个小的d2×d2矩阵,因此需要相对较少的内存。 对V而言,与保存向量b相比需要更少的内存,这是相同的观察结果。此外,基于矩阵矩阵和矩阵向量乘法的固有定义,我们实际上避免将整个矩阵(和向量)保留在内存中。更具体地,可以通过对行的大块(例如,子矩阵A_{j}\in R^{q\times d^{2}},q << MN)求和来累积地计算Q,可以独立地相乘,然后进行累积步骤; 即

Q=A^{T}A=\sum_{j}A_{j}^{T}A_{j}

矩阵向量乘法也是如此

V=A^{T}b=\sum_{j}A_{j}^{T}b_{j}

其中b_{j}\in R^{q}是向量b的一部分,对应于矩阵Aj。 因此,建议的学习方案在内存方面的复杂度非常低–大约是滤波器大小。此外,使用此观察,我们可以并行化A_{j}^{T}A_{j}A_{j}^{T}b_{j}的计算,从而导致运行时加速。至于最小二乘求解器本身,由于Q是一个正半定矩阵,因此可以有效地使等式(3)最小化,这非常适合快速共轭梯度求解器[31]。

总而言之,学习阶段在内存需求和并行化能力方面都是有效的。如图1b所示,在运行时,给定LR图像(不在训练集中),我们首先使用与学习阶段相同的廉价升频方法(例如双线性)对其进行插值,从而生成其HR近似值,然后使用预学习的滤波器进行滤波。

 

 

 

这篇关于RAISR: Rapid and Accurate Image Super Resolution的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1110057

相关文章

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

问:Super与this在Java中有什么区别?

this: this 关键字用于引用当前对象。它通常用于区分成员变量和方法参数或局部变量。在实例方法中,this 指向调用该方法的对象。在构造函数中,this 指向正在被初始化的对象。 super: super 关键字用于引用父类(超类)的构造函数、方法或变量。在子类的构造函数中,super() 用于调用父类的构造函数。在子类的方法中,super.methodName() 用于调用父类的方法。

Unity 资源 之 Super Confetti FX:点亮项目的璀璨粒子之光

Unity 资源 之 Super Confetti FX:点亮项目的璀璨粒子之光 一,前言二,资源包内容三,免费获取资源包 一,前言 在创意的世界里,每一个细节都能决定一个项目的独特魅力。今天,要向大家介绍一款令人惊艳的粒子效果包 ——Super Confetti FX。 二,资源包内容 💥充满活力与动态,是 Super Confetti FX 最显著的标签。它宛如一位

MTK Android P/Q system/vendor/super快速打包

一、Android 新版本默认开启了动态分区,把system vendor  product等分区打包成一个super分区。这对于我们使用替换分区的方法来排查问题不是很方便,直接替换一个super也不知道到底是哪个部分导致的。所以我们需要自己制作super.img来缩小范围。下面讲讲如何快速生成system、vendor、super,以及vbmeta(校验image,不匹配可能会导致不开机) 二

? extends T 和 ? super T分别是什么意思?有什么不同?

<? extends T>首先你很容易误解它为继承于T的所有类的集合,这是大错特错的,相信能看下去你一定见过或用过List<? extends T>吧?为什么我说理解成一个集合是错呢?如果理解成一个集合那为什么不用List<T>来表示?所以<? extends T>不是一个集合,而是T的某一种子类的意思,记住是一种,单一的一种,问题来了,由于连哪一种都不确定,带来了不确定性,所以是不可能通过add

java基础总结11-面向对象7(super关键字)

在JAVA类中使用super来引用父类的成分,用this来引用当前对象,如果一个类从另外一个类继承,我们new这个子类的实例对象的时候,这个子类对象里面会有一个父类对象。怎么去引用里面的父类对象呢?使用super来引用,this指的是当前对象的引用,super是当前对象里面的父对象的引用。 1 super关键字测试 package cn.galc.test;/*** 父类* @autho

【大数据Java基础-JAVA 面向对象14】面向对象的特征二:继承性 (三) 关键字:super以及子类对象实例化全过程

关键字:super 1.super 关键字可以理解为:父类的 2.可以用来调用的结构: 属性、方法、构造器 3.super调用属性、方法: 3.1 我们可以在子类的方法或构造器中。通过使用"super.属性"或"super.方法"的方式,显式的调用父类中声明的属性或方法。但是,通常情况下,我们习惯省略"super." 3.2 特殊情况:当子类和父类中定义了同名的属性时,我们要想在子类中调用父类

IMAGE LIST

   CImageList就是一个容器,用来存储图片资源,方便这些资源被CListBox,CComboBox,CComboBoxEx,CTabCtrl以及CTreeCtrl,CListCtrl等使用。      要使用CImgeList首先要使用它的create函数:      一般用的比较多的是这一个函数,当然,它还有很多重载,自己可以去翻阅msdn.       BOOL

【vscode】vscode paste image插件设置

本文首发于 ❄️慕雪的寒舍 vscode编辑md文件的时候,如果想插入图片,自带的粘贴只会粘贴到当前目录下,也没有文件重命名,很不友好。 在扩展商店里面有mushan的Paste Image插件,相比自带的,更加友好一点。但是它的配置把我弄糊涂了,简单测试了一下才明白处理的逻辑。 注意,本文编写的是对mushan的Paste Image插件的教程。 首先是安装这个插件,这个不多说

pytorch时空数据处理4——图像转文本/字幕Image-Captionning(二)

pytorch时空数据处理4——图像转文本/字幕Image-Captionning(二) pytorch时空数据处理4——图像转文本/字幕Image-Captionning(二)DatasetInputs to modelCaption LengthsData pipelineEncoderAttentionDecoder代码数据集初始化 create_input_files.py训练 tr