Learning Multi-Scale Photo Exposure Correction

news2025/1/5 22:28:23

Abstract

用错误的曝光捕捉照片仍然是相机成像的主要错误来源。曝光问题可分为以下两类:(i)曝光过度,即相机曝光时间过长,导致图像区域明亮和褪色;(ii)曝光不足,即曝光时间过短,导致图像区域变暗。曝光不足和曝光过度都会大大降低图像的对比度和视觉吸引力。先前的工作主要集中在曝光不足的图像或一般图像增强。相比之下,我们提出的方法针对照片中的过度曝光和曝光不足错误。我们将曝光校正问题表述为两个主要子问题:(i)色彩增强和(ii)细节增强。因此,我们提出了一个从粗到精的深度神经网络(DNN)模型,可以端到端训练,分别解决每个子问题。我们的解决方案的一个关键方面是一个超过24,000张图像的新数据集,展示了迄今为止最广泛的曝光值范围和相应的正确曝光图像。我们的方法在曝光不足的图像上取得了与现有最先进的方法相当的结果,并且对遭受过度曝光错误的图像产生了显着改善。

1. Introduction

拍摄时使用的曝光直接影响最终渲染照片的整体亮度。数码相机使用三个主要因素来控制曝光:(i)捕捉快门速度,(ii) f值,即焦距与相机光圈直径的比率,以及(iii)控制接收像素信号放大系数的ISO值。在摄影中,曝光设置由曝光值(EV)表示,其中每个EV指的是产生相同曝光效果的相机快门速度和f值的不同组合,在摄影中也被称为“等效曝光”。

数码相机可以调整所摄图像的曝光值,以达到改变亮度水平的目的。这种调整可以由用户手动控制,也可以在自动曝光(AE)模式下自动进行。当使用AE时,相机调整EV以补偿拍摄场景中的低/高亮度,使用通过镜头(TTL)测光来测量从场景接收的光量[49]。曝光错误可能由以下几个因素引起,例如TTL测光测量错误、强光条件(例如,非常低的照明和背光)、场景亮度水平的剧烈变化以及用户在手动模式下的错误。这种曝光误差是在拍摄过程的早期引入的,因此在渲染最终的8位图像后很难纠正。这是由于相机图像信号处理器(ISP)在渲染最终的8位标准RGB (sRGB)图像[31]时应用了高度非线性的操作。

图显示了带有曝光误差的图像的典型例子。在图1中,曝光误差导致最终渲染图像中要么由于过度曝光导致图像区域非常亮,要么由于曝光不足导致图像区域非常暗。即使对于完善的图像增强软件包,纠正具有此类错误的图像也是一项具有挑战性的任务,参见图。虽然曝光过曝和曝光不足都是摄影中常见的错误,但大多数先前的工作主要集中在纠正曝光不足错误[23,56,58,65,66]或一般的图像质量增强[11,18]。

我们提出了一种从粗到精的深度学习方法,用于过度曝光和曝光不足的sRGB图像的曝光误差校正。我们的方法将曝光校正问题表述为两个主要的子问题:(i)颜色和(ii)细节增强。我们提出了一个从粗到细的深度神经网络(DNN)模型,可以端到端方式进行训练,该模型首先校正全局颜色信息,然后细化图像细节。除了我们的DNN模型之外,曝光校正问题的一个关键贡献是一个包含超过24,000张图像的新数据集1,这些图像从原始rgb渲染到sRGB,具有不同的曝光设置,曝光范围比以前的数据集更广。我们数据集中的每张图像都提供了相应的适当曝光的参考图像。最后,我们提出了一套广泛的评估和消融我们提出的方法与比较的艺术状态。我们证明,我们的方法达到了与以前的方法相当的结果,致力于曝光不足的图像和产生显着改善曝光过度的图像。此外,我们的模型可以很好地泛化到数据集之外的图像。

2. Related Work

我们的论文的重点是校正相机渲染的8位sRGB图像中的曝光误差。我们请读者参考[9,24,25,38],以获得渲染在低光或曝光误差下捕获的线性原始RGB图像的代表性示例。

曝光校正曝光校正和对比度增强的传统方法依赖于图像直方图来调整图像强度值[8,19,36,50,69]。或者,使用色调曲线调整来校正具有曝光误差的图像。该过程仅依赖于输入图像信息[63]或训练的深度学习模型[21,46,48,62]来执行。大多数先前的工作采用Retinex理论[34],假设曝光不当的图像可以用公式表示为目标图像的逐像素乘法,用正确的曝光设置捕获,通过照明图。因此,这些方法的目标是预测照明图以恢复曝光良好的目标图像。代表性的基于Retinex的方法包括[23,29,34,44,57,64,65]和最新的深度学习方法[56,58,66]。然而,这些方法中的大多数仅限于纠正欠显误差[23,56,58 - 60,65,66,68]。与之前的大多数工作相比,我们的工作是第一个使用单个模型明确纠正曝光过度和曝光不足照片的深度学习方法。

HDR 恢复和图像增强 HDR 恢复是从一幅或多幅低动态范围 (LDR) 输入图像重建场景辐射度 HDR 值的过程。 先前的工作要么需要访问多个 LDR 图像 [16, 30, 43],要么使用单个 LDR 输入图像,通过幻觉缺失信息将其转换为 HDR 图像 [15, 47]。 最终,这些重建的 HDR 图像被映射回 LDR 以进行感知可视化。 这种映射可以直接从输入多 LDR 图像 [7,13]、重建的 HDR 图像 [61] 执行,或者直接从单输入 LDR 图像执行,无需辐射 HDR 重建 [11, 18]。 还有一些专注于一般图像增强的方法,可用于增强曝光不良的图像。 特别是,[26, 27] 的工作主要是为了通过将捕获的图像映射为 DSLR 捕获的高质量图像来增强智能手机相机捕获的图像。 我们的工作并不寻求重建 HDR 图像或一般增强,而是经过训练以明确解决曝光错误。

配对数据集配对数据集对于图像增强任务的监督学习至关重要。 现有的曝光校正配对数据集仅关注低光曝光不足的图像。 代表性的例子包括 Wang 等人的数据集 [56] 和低光(LOL)配对数据集 [58]。 与现有的曝光校正数据集不同,我们引入了一个使用各种曝光错误渲染的大型图像数据集。 图 2 显示了我们的数据集和 LOL 数据集在图像数量和每个数据集中的曝光错误种类方面的比较。 与我们介绍的数据集相比,LOL 数据集涵盖了可能暴露水平的相对较小的一部分。 我们的数据集基于 MIT-Adobe FiveK 数据集 [6],并通过调整相机传感器原始 RGB 图像中提供的高色调值来准确渲染,以真实地模拟相机曝光错误。 另一种值得注意的方法是使用大型 HDR 数据集来生成训练数据,例如 Google HDR+ 数据集 [24]。 然而,一个缺点是该数据集是由不同数量的智能手机捕获的原始 RGB 图像组成的,这些图像首先与复合原始 RGB 图像对齐。 目标地面真实图像基于应用于该复合原始 RGB 图像的 HDR 到 LDR 算法 [18,24]。 我们选择使用 FiveK 数据集,因为它从单个高质量原始 RGB 图像开始,并且地面真实结果由专业摄影师生成。

3. Our Dataset

为了训练我们的模型,我们需要大量渲染有真实的过度曝光和曝光不足错误的训练图像以及相应的正确曝光的地面实况图像。 正如第 2 节中所讨论的。 2、目前此类数据集尚未公开以支持曝光校正研究。 因此,我们的首要任务是创建一个新的数据集。 我们的数据集是从 MIT-Adobe FiveK 数据集 [6] 渲染的,该数据集包含 5,000 个原始 RGB 图像以及由五位专业摄影师手动渲染的相应 sRGB 图像 [6]。 对于每个原始 RGB 图像,我们使用 Adob​​e Camera Raw SDK [1] 来模拟相机 [53] 应用的不同 EV。 Adobe Camera Raw 使用每个 DNG Raw 文件中嵌入的元数据准确模拟非线性相机渲染过程 [2, 53]。 我们使用不同的数字 EV 渲染每个原始 RGB 图像,以模拟真实的曝光错误。 具体来说,我们使用相对 EV -1.5、-1、+0、+1 和 +1.5 分别渲染具有曝光不足错误、原始 EV 零增益和过度曝光错误的图像。 零增益相对 EV 相当于拍摄期间相机上应用的原始曝光设置。

作为地面实况图像,我们使用由专家摄影师(在[6]中称为专家C)手动修饰的图像作为我们的目标正确曝光图像,而不是使用相对EV为+0的渲染图像。 这种选择背后的原因是,大量图像在原始曝光捕捉设置中包含背光或部分曝光错误。 专家调整的图像是在 ProPhoto RGB 色彩空间 [6](而不是原始 RGB)中执行的,我们将其转换为标准 8 位 sRGB 色彩空间编码。 我们的数据集总共包含 24,330 张具有不同数字曝光设置的 8 位 sRGB 图像。 我们丢弃了少量与其相应的地面真实图像不一致的图像。 这些错位是由于 Adob​​e Camera Raw SDK 和专家对 DNG 裁剪区域元数据的不同使用造成的。 我们的数据集分为三组:(i) 17,675 张图像的训练集,(ii) 750 张图像的验证集,以及 (iii) 5,905 张图像的测试集。 训练、验证和测试集不共享任何共同场景。 图 2 显示了我们生成的 8 位 sRGB 图像和相应的正确曝光的 8 位 sRGB 参考图像的示例。

4. Our Method

给定一个 8 位 sRGB 输入图像 I,使用不正确的曝光设置渲染,我们的方法旨在生成一个输出图像 Y,其曝光错误比 I 中的曝光错误更少。当我们同时针对曝光过度和曝光不足错误时,我们的方法的目标 输入图像 I 预计包含接近过饱和或欠饱和值的区域,且颜色和细节信息已损坏。 我们建议按顺序纠正 I 的颜色和细节错误。 具体来说,我们处理 I 的多分辨率表示,而不是直接处理 I 的原始形式。我们使用拉普拉斯金字塔 [4] 作为我们的多分辨率分解,它源自 I 的高斯金字塔 [5]。

4.1. Coarse-to-Fine Exposure Correction

令 X 表示 I 的 n 层拉普拉斯金字塔,使得 X(l) 是 X 的第 l 层。该金字塔的最后一层(即 X(n))捕获 I 的低频信息,而第一层捕获 I 的低频信息。 level(即 X(1))捕获高频信息。 这些频率级别可以分为:(i)存储在低频级别中的I的全局颜色信息和(ii)存储在中高频级别中的图像从粗到细的细节。 这些级别稍后可用于重建全色图像 I。

图3激发了我们从粗到精的曝光校正方法。图3-(A)和(B)分别显示了一个示例过曝图像及其相应的曝光良好的目标。可以看出,在拉普拉斯金字塔重建过程中,仅使用目标图像的低频层(即全局颜色信息)即可获得显著的曝光校正,如图图-(C)所示。然后,我们可以通过纠正拉普拉斯金字塔的每个层次,以顺序的方式增强细节,从而改善最终图像,如图图-(D)所示。实际上,在推理阶段,我们无法访问图-(B)中正确曝光的图像,因此我们的目标是预测拉普拉斯金字塔中每一层缺失的颜色/细节信息。

受这一观察结果和其他各种计算机视觉任务(例如[14,33,41,54])的粗精架构的成功启发,我们设计了一个DNN,该DNN使用拉普拉斯金字塔分解以顺序的方式校正I的全局颜色和细节信息。本节的其余部分解释了我们模型的技术细节(第4.2节),包括损失(第4.3节)、推理阶段(第4.4节)和训练(第4.5节)的细节。

4.2. Coarse-to-Fine Network

我们的图像曝光校正架构顺序地处理输入图像I的n级拉普拉斯金字塔X,以产生最终的校正图像Y。该模型由n个子网络组成。这些子网络中的每一个都是一个类似于U网的架构[52],具有不受约束的权重。我们基于每个子问题(即,全局颜色校正和细节增强)有助于我们的最终结果。图4提供了我们网络的概述。如图所示,我们的架构中最大的(就权重而言)子网络专用于处理I中的全局颜色信息(即,X(n))。该子网络(图4中黄色所示)处理低频电平X(n)并产生放大图像Y(n)。放大过程使用具有可训练权重的跨步转置卷积将我们的子网络的输出放大两倍。接下来,我们将第一个中频电平X(n−1)添加到Y(n),由模型中的第二个子网处理。这个子网络增强了当前层的相应细节,并产生一个残差层,然后将其添加到Y(n)+X(n-1)以重建图像Y(n-1),这相当于相应的高斯金字塔层n-1。该细化上采样过程继续进行,直到产生最终输出图像Y。我们的网络是完全可区分的,因此可以以端到端的方式进行训练。补充材料中提供了我们网络的其他详细信息。

4.3. Losses

我们对模型进行端到端训练,以最小化以下损失函数:

Pyramid Loss 为了引导每个子网络遵循拉普拉斯金字塔重建程序,我们在每个金字塔级别引入了专门的损失。令T(l)表示参考图像T的高斯金字塔的第l层,经过二倍的上采样。我们使用简单的插值过程进行上采样操作[43]。我们的金字塔损失计算如下:

其中hl和wl分别是训练图像的拉普拉斯金字塔中的第l级的高度和宽度的两倍,并且p分别是在第l级Y(l)处的我们的校正图像和在相同级T(l)处的适当曝光的参考图像中的每个像素的索引。金字塔损失不仅给出了每个子网络任务的原则性解释,而且与仅使用重建损失的训练相比,还导致更少的视觉伪影,如图5所示。请注意,如果没有中间金字塔损失,与使用每个尺度的金字塔损失相比,图5(顶部)所示的每个子网络的输出与中间高斯目标偏离很大,如图5(底部)所示。我们在补充材料中通过消融研究提供了该损失的支持性依据。

Adversarial Loss

为了在感知上增强校正图像输出的重建的真实性和吸引力,我们还考虑将对抗性损失作为正则化器。这个对抗性损失项可以用下面的等式[20]来描述:

其中 S 是 sigmoid 函数,D 是与我们的主网络一起训练的判别器 DNN。 我们在补充材料中提供了鉴别器网络的详细信息以及使用非对抗性和对抗性训练的结果之间的视觉比较。

4.4. Inference Stage

我们的网络是完全卷积的,可以处理不同分辨率的输入图像。 虽然我们的模型需要合理的内存大小(∼7M 参数),但处理高分辨率图像需要高计算能力,而这可能并不总是可用。 此外,处理比训练过程中使用的分辨率范围高得多的分辨率(例如 16 兆像素)的图像可能会影响我们的模型对大的均匀图像区域的鲁棒性。 出现这个问题的原因是我们的网络是在一定范围的有效感受野上进行训练的,与高分辨率图像所需的感受野相比,该范围非常低。 为此,我们使用双边引导上采样方法[10]来处理高分辨率图像。 首先,我们调整输入测试图像的大小,使其最大尺寸为 512 像素。 然后,我们使用我们的模型处理输入图像的下采样版本,然后应用快速上采样技术 [10] 和 22×22×8 单元的双边网格。 这个过程使我们能够在平均 4.5 秒内处理 16 兆像素的图像。 该时间包括在 NVIDIA GeForce GTX 1080TM GPU 上运行我们的网络所需的 0.5 秒,以及在 Intel Xeon E5-1607 @ 3.10 GHz 机器上运行网络的 4 秒,用于引导上采样过程。 请注意,使用 Halide 实现 [51] 可以显着改善引导上采样步骤的运行时间。

4.5. Training Details

在我们的实现中,我们使用具有四个级别(即 n = 4)的拉普拉斯金字塔,因此我们的模型中有四个子网络 - 一项消融研究,评估对拉普拉斯级别数量的影响,包括与普通模型的比较 U-Net 架构在补充材料中介绍。 我们在从不同维度的训练图像中随机提取的补丁上训练我们的模型。 我们首先在 128×128 像素大小的块上进行训练。 接下来,我们继续在 256×256 个 patch 上进行训练,然后在 512×512 个 patch 上进行训练。 我们使用 Adam 优化器 [32] 来最小化方程式中的损失函数。 1. 受之前工作 [40] 的启发,我们最初在没有对抗性损失项 Ladv 的情况下进行训练,以加速主网络的收敛。 收敛后,我们添加对抗性损失项 Ladv 并微调我们的网络以增强我们的初始结果。 补充材料中提供了其他培训详细信息。

5. Empirical Evaluation

6. Concluding Remarks

我们提出了一种从粗到精的深度学习模型,用于曝光过度和曝光不足的图像校正。 我们采用拉普拉斯金字塔分解来处理不同频段的输入图像。 我们的方法旨在以多尺度方式顺序校正每个拉普拉斯金字塔级别,从图像中的全局颜色开始并逐步解决图像细节。 我们的方法由包含超过 24,000 张图像的新数据集启用,这些图像使用迄今为止最广泛的曝光错误进行渲染。 我们引入的数据集中的每个图像都有一个由训练有素的摄影师通过良好的曝光补偿正确渲染的参考图像。 通过广泛的评估,我们表明,与校正曝光错误渲染的图像的可用解决方案相比,我们的方法产生了令人信服的结果,并且它具有良好的概括性。 我们相信我们的数据集将有助于未来改进照片曝光校正的工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2268874.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

宝塔-firefox(Docker应用)-构建自己的Web浏览器

安装基础软件 宝塔中安装firefox(Docker应用) 。宝塔中需要先安装docker及docker-composefirefox配置安装 点击firefox应用,选择【安装配置】点击右边绿色按钮,进行安装,这一步等待docker-compose根据你的配置初始化docker应用 等待安装 …

【深度学习】时间序列表示方法

自然界除了2D的图片数据之外,还有语音、文字,这些数据都有时间的先后顺序的。对于2D的图像的数据,可以用RGB值来表示像素的色彩度。语音可以用信号幅度值来表示,而Pytorch没有自带String支持,在表示文字之前需要进行Em…

使用 Navicat 官方免费版来实现从 DAT 文件填充 MySQL 8 表

在异构存储库之间迁移数据(即源数据库和目标数据库来自不同供应商的不同数据库管理系统)会遇到一些挑战。在某些情况下,可以同时连接两个数据库。但有时根本无法实现。面对这样的困境,数据库从业者别无选择,只能从转储…

【CSS in Depth 2 精译_093】16.2:CSS 变换在动效中的应用(上)—— 图标的放大和过渡效果的设置

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第五部分 添加动效 ✔️【第 16 章 变换】 ✔️ 16.1 旋转、平移、缩放与倾斜 16.1.1 变换原点的更改16.1.2 多重变换的设置16.1.3 单个变换属性的设置 16.2 变换在动效中的应用 ✔️ 16.2.1 放大图…

Linux 信号集与信号掩码

目录 一、引言 二、信号集是什么 三、信号集关键函数 1.信号集的创建与初始化 2.信号的添加与删除 3.信号集的阻塞与解除阻塞 四、信号集实际应用场景 五、信号掩码的作用 六、信号掩码相关函数 1.sigprocmask 函数 2.sigemptyset 和 sigfillset 函数 七、信号掩码注…

CPT203 Software Engineering 软件工程 Pt.5 软件测试(中英双语)

文章目录 8. 软件测试8.1 Testing(测试)8.1.1 A note of testing under the V & A framework8.1.2 The Basics8.1.3 The Goals8.1.4 The Stages 8.2 Developing testing(开发测试)8.2.1 Unit testing(单元测试&…

微信小程序中遇到过的问题

记录微信小程序中遇到的问题(持续更新ing) 问题描述:1. WXML中无法直接调用JavaScript方法。2. css中无法直接引用背景图片。3. 关于右上角胶囊按钮。4. 数据绑定问题。5. 事件处理问题。6. 关于movable-view组件的问题7. 关于设置宽度后设置…

【C++】B2084 质因数分解

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯 题目描述:质因数分解输入格式输出格式输入输出样例: 💯 问题解析1. 质数的定义2. 题目特点3. 约束范围4. 问题分解 💯 解题…

Unity中列表List使用出类似字典Dictionary的感觉

首先为什么会有这个标题? 因为字典很好用,只需要键就能拿到值,这种感觉是真的爽,新手最喜欢用了,遇事不决就字典,但是也有不好的地方,字典的内存开销比列表List要大,遍历也是List占…

分布式项目___某污水处理项目

一.分布式项目___污水处理项目 项目地址:https://gitee.com/yanyigege/collaborative-water-springboot.git ​ 1.项目背景 总公司在全国各地有处理污水的项目部,各项目部处理自己的污水,总部需要监控各地分项目部每天处理污水的原料用量,掌握各分部的污水处理情况 ​ 2.功…

WebRTC:实现浏览器与移动应用的实时通信

1.技术简介 (Web Real-Time)是一种开放式实时通信技术,旨在使浏览器和移动应用程序通过简单的API即可实现实时音频、视频和数据传输,而无需安装插件或额外软件。它支持网络应用中的点对点通信,例如视频聊天、语音通话…

小程序基础 —— 07 创建小程序项目

创建小程序项目 打开微信开发者工具,左侧选择小程序,点击 号即可新建项目: 在弹出的新页面,填写项目信息(后端服务选择不使用云服务,开发模式为小程序,模板选择为不使用模板)&…

数据结构之线性表之链表(附加一个考研题)

链表的定义 链表的结构: 单链表-初始化 代码实现: 单链表-头插法 代码实现: 这里我给大家分析一下 我们每创建一个新的节点都要插在头节点的后面,我们一定要注意顺序 一定要先让新节点指向头节点指向的下一个节点,…

RocketMQ(二)RocketMQ实战

文章目录 一、RocketMQ实战1.1 批量消息发送1.2 消息发送队列自选择1.3 事务消息1.4 SpringCloud集成RocketMQ 二、最佳实践2.1 生产者2.1.1 发送消息注意事项2.1.2 消息发送失败处理方式 2.2 消费者2.2.1 消费过程幂等2.2.2 消费打印日志 2.3 Broker 三、相关问题3.1 为什么要…

Vue router router-link router-view keep-alive

Vue router router-link router-view keep-alive keep-alive 1. /:id 2 ?id

掌握 PostgreSQL 的 psql 命令行工具

title: 掌握 PostgreSQL 的 psql 命令行工具 date: 2024/12/30 updated: 2024/12/30 author: cmdragon excerpt: psql 是 PostgreSQL 关系数据库管理系统的交互式命令行工具,是数据库管理员和开发人员进行数据库管理和操作的主要接口。熟练使用 psql 工具,不仅能够提高对 …

【C++】深入理解 break 和 continue 语句

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯break 和 continue 介绍**break** 的作用**continue** 的作用注意事项 💯break 示例代码示例**执行结果****解析过程** 💯continue 示例代码示例&am…

【C++】B2064 斐波那契数列

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯题目描述输入格式输出格式输入输出样例输入输出 💯思路分析**题目本质** 💯代码实现与对比**我的代码实现**代码展示思路解析优点不足 **老师的代码…

在 Ubuntu 24.04.1 LTS | Python 3.12 环境下部署 Crypto 库

测试一些密码学方案需要用到 Crypto 库,网上教程大多针对 Windows 和 Python 3.10 或以下的环境,所以写下了这篇博文。 部署与使用 首先执行 su 输入密码进入超级用户,部署完 Python 3.12 环境后,执行以下命令进行安装&#xff…

【ArcGIS Pro/GeoScene Pro】可视化时态数据

可视化过去二十年新西兰国际旅游业的发展变化 工程数据下载 ArcGIS Pro 快速入门指南—ArcGIS Pro | 文档 添加数据 数据为中国旅客数据 转置表字段 列数据转行数据