Zero-Shot Restoration of Back-lit Images Using Deep Internal Learning

ABSTRACT

如何恢复背光图像仍然是一项具有挑战性的任务。该领域最先进的方法基于监督学习,因此通常仅限于特定的训练数据。在本文中,我们提出了一种用于背光图像恢复的“零样本”方案,该方案利用深度学习的力量,但不依赖于任何先前的图像示例或先前的训练。具体来说,我们在测试时训练一个小型图像特定 CNN,即 ExCNet(曝光校正网络的缩写),以估计最适合测试背光图像的“S 曲线”。一旦估计出S曲线,就可以直接恢复测试图像。 ExCNet 可以适应每个图像的不同设置。这使得我们的方法广泛适用于不同的拍摄场景和各种背光条件。对 1512 个真实背光图像进行的统计研究表明,我们的方法可以大幅优于竞争对手。据我们所知,我们的方案是第一个基于 CNN 的无监督背光图像恢复方法。为了使结果可重现,源代码可从 https://cslinzhang.github.io/ExCNet/ 获取。

1 INTRODUCTION

拍摄图像时,最令人讨厌的不良照明条件之一是背光。尽管大多数现代成像传感器可以根据拍摄目标的光照条件自动调整相关硬件参数(如光圈、快门速度和电子增益[24]),但在大多数逆光条件下仍然无法获得满意的结果案例。解决这个问题的一种可能方法是使用 HDR(高动态范围)成像技术 [5]。然而,HDR只能用于逆光下的图像采集,无法帮助恢复现有的劣质逆光图像。

在这项工作中,我们研究了背光图像恢复问题,并引入了一种“零样本”方案,即 ExCNet(曝光校正网络的缩写)。 “零样本”是指 ExCNet 不需要事先训练。 ExCNet 是一种专门设计的 CNN(卷积神经网络),可以直接估计给定背光图像的最佳拟合 S 曲线 [2, 28]。通过其S曲线,可以相应地恢复背光图像。在图 1 中,我们展示了 4 个典型的背光图像以及 ExCNet 的恢复结果。可以看出,所提出的方法对于恢复质量较差的背光图像具有很强的能力。

1.1 Related Work

实际上,可以探索传统的图像增强方法[8,13,19,21,30]来增强背光图像,但在大多数情况下其效果相当有限。还有一些专门为恢复背光图像而设计的启发式方法。在[22]中,Safonov 提出了一种基于对比度拉伸和初始图像亮度的 alpha 混合以及反射率估计的方法。在[25]中,Tsai和Yeh首先通过简单的亮度通道阈值检测背光区域,然后线性拉伸检测到的背光区域。李等人[15]通过引入四叉树生长和引导过滤来完善Tsai和Yeh的想法[11]。在[12]中,Im等人的方法首先使用暗通道先验[10]提取曝光不足的区域,然后执行空间自适应对比度增强。在[28]中,Yuan和Sun通过基于区域的区域级最佳曝光评估来估计图像特定的S曲线。他们将最佳区域估计表述为图标记问题,并通过强力搜索策略来解决它。后来,作者将他们的工作扩展到纠正曝光不良的视频序列 [6]。

背光图像恢复方法的另一个分支是基于机器学习理论。在[4]中,戴尔等人首先建立了一个包含100万张图像的数据库。给定要恢复的输入图像,他们的系统执行视觉搜索以查找数据库中最接近的图像;这些图像定义了输入的视觉上下文,可以进一步利用它来实例化恢复操作。在[14]中,Kang等人构建了一个数据库,其中存储描述训练图像的特征向量以及增强参数的向量。给定测试图像,然后在数据库中搜索最佳匹配图像,并使用相应的增强参数来执行增强。遵循 Kang 等人的想法 [14],Bychkovsky 等人[1] 构建了一个包含 5000 个示例输入输出图像对的数据集,可用于学习全局色调调整。在[16]中,Li和Wu提出了一种两阶段管道,它对背光和前光区域执行对象引导分割,然后进行空间自适应色调映射。

1.2 Our Motivations and Contributions

我们发现使用机器学习工具来解决背光图像恢复问题是最近的趋势,也是一个有前途的方向。然而,应该注意的是,该领域现有的解决方案[1,3,4,14,16,27]都是基于监督学习框架,因此它们的性能高度依赖于训练数据集。事实上,对于背光图像恢复问题,如何收集足够有效的训练数据本身就是一项具有挑战性的任务。因此,这些基于监督学习的方案通常在满足训练条件的测试图像上表现良好;相反,一旦这些条件不满足,它们的性能就会显着恶化。这促使我们思考:是否可以从逆光图像中学习曝光校正模型来恢复自身?如果“是”,学习的模型将是特定于图像的,并且该方法本身可以适应未见过图像的不同设置。实际上,仅从测试图像本身学习恢复模型的想法在图像超分辨率领域已被证明是可行的[23]。在[23]中,Shocher 等人提出了一种超分辨率模型,这是一种特定于图像的 CNN,仅在从低分辨率测试图像中提取的内部示例上进行训练。在处理现实世界的低分辨率图像时,Shocher 等人的方法大大优于其竞争对手。

因此,在本文中,受 Shocher 等人在超分辨率领域工作成功的启发,提出了一种用于背光图像恢复的“零样本”方案。 “零样本”一词是从识别领域借用的,这里用来强调我们的方法不需要事先的图像示例或事先的训练。我们的主要贡献总结如下。

(1)我们方法的核心是一个专门设计的CNN,即ExCNet(曝光校正网络)。给定测试背光图像 I,ExCNet 可以在有限的迭代时间内估计最适合 I 的参数“S 曲线”。凭借它的S曲线,I可以直接恢复。据我们所知,我们的工作是第一个自动校正图像曝光的无监督学习框架。它可以轻松应用于不同曝光级别下各种内容的图像。

(2)在设计ExCNet时,一个关键问题是如何设计一个可以评估图像曝光不良程度的损失函数。为此,在MRF(马尔可夫随机场)[17]公式的推动下,我们设计了一种基于块的损失函数,该函数倾向于最大化所有块的可见性,同时保持相邻块之间的相对差异。实验表明,设计的损失函数可以指导ExCNet获得高视觉质量的恢复结果。当多种竞争方法的结果呈现在他们面前时,人们更倾向于选择我们方法的输出。

(3)由于ExCNet的CNN结构,我们的方法可以学习图像与其最佳“S曲线”参数之间的映射关系。因此,随着处理图像的增加,ExCNet在面对未见过的图像时需要更少的迭代次数来收敛到优化曲线。此外,在处理视频流时,后续帧的校正可以由先前帧的参数来指导,这不会导致像[28]那样的明显的闪烁伪影,并且计算成本相对较低。

2 S-CURVE

大多数摄影师经常使用S形非线性曲线,即S曲线,通过照片编辑软件手动调整照片中阴影/中调/高光区域的曝光度[2]。 S 曲线可以将输入电平映射到所需的输出电平。典型的S曲线图如图2所示。图的横轴代表原始图像值,纵轴代表新的调整值。调整图像时,图表的右上区域代表高光,左下区域代表阴影。

正如[28]中所建议的,S曲线可以简单地用两个参数来参数化,即阴影量 \phi _{s}和高光量 \phi _{h} ,因此它可以表示为:

3 EXCNET: AN UNSUPERVISED CNN-BASED APPROACH TO ESTIMATE THE S-CURVE

这里详细介绍了我们提出的背光图像恢复方法 ExCNet。 ExCNet实际上是一个CNN,旨在从输入图像I的亮度通道I_{l}估计最佳S曲线。利用估计的S曲线,可以相应地恢复I。 ExCNet的结构如图3所示。为了更好地理解它,ExCNet的每次训练迭代在概念上可以被认为有两个阶段,使用中间S曲线调整I_{l}并导出损失。这两个阶段的详细内容将在 3.1 和3.2节给出。实施细节将在3.3给出。

3.1 Adjusting I_{l} Using the Intermediate S-curve

3.2 Deriving the Loss

3.3 Implementation Details

ExCNet 可以被认为是一种无监督学习方法。也就是说,在处理一些图像后,ExCNet可以逐步学习捕获图像色调信息的能力。当处理即将到来的图像时,这种预先训练的 ExCNet 的收敛速度比随机初始化的对应图像快得多。因此,在我们的实现中,我们准备了 50 张背光图像并使用 ExCNet 来估计它们的最佳 S 曲线。最终权重被保存并用于随后处理新图像时初始化 ExCNet。

4 BACK-LIT IMAGE RESTORATION USING EXCNET

值得一提的是,我们在实现中还考虑了细节保留。我们首先使用引导滤波器[11]将每个输入图像分离为基础层和细节层,然后使用估计的S曲线来调整基础层。最后,我们采用韦伯对比度[26]来融合细节层和调整后的基础层。

我们的硬件平台是一个配备 3.0GHZ Intel Core i7-5960X CPU 和 Nvidia Titan X GPU 卡的工作站。该方法使用Python和TensorFlow实现。我们的方法处理一张 4032 × 3024 图像大约需要 1.0 秒。

5 EXPERIMENTAL RESULTS

6 CONCLUSION

背光图像修复具有重要的实际意义,但尚未得到很好的解决。本文提出了一种“零样本”背光图像恢复方案,该方案利用深度学习的力量,无需依赖任何外部示例或事先训练。这是通过一个小型的特定于图像的 CNN(即 ExCNet)实现的,它通过最小化在中间恢复结果上定义的基于块的损失函数来指导恢复进度。所提出的方案简洁而强大。它非常稳健,因此可以在不同类型的照明条件下产生令人满意的结果。综合进行了主观和客观评估,以证实所提出的方法相对于其他主流竞争对手的优越性。据我们所知,这是第一个基于 CNN 的无监督背光图像恢复方法。

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

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

相关文章

孟德尔随机化 MR入门基础-简明教程-工具变量-暴露

孟德尔随机化(MR)入门介绍和分章分享(暂时不解读) 大家好,孟德尔随机化大火,但是什么是孟德尔随机化,具体怎么实操呢 这没有其他教程的繁冗,我这篇讲最基础的孟德尔随机化的核心步…

Selenium浏览器自动化测试框架

介绍 Selenium [1] 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome&#xff…

STM32_3(GPIO)

GPIO简介 GPIO(General Purpose Input Output)通用输入输出口8种输入输出模式输出模式可控制端口输出高电平,驱动LED、蜂鸣器、模拟通信协议输出时许等输入模式可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输…

【VRTK】【VR开发】【Unity】8-可交互对象

【概述】 之前我们只是用了一个简单方块作为可交互对象。其实可交互对象可以有许多细节设置,包括具体抓握物体的哪个点,指定抓握的方向,指定Secondary Action允许两手互换抓握,双手抓握,用两手改变物体大小等。 【拾取物体】 要让一个物体能够被拾取,必须设置它为可互…

十多位老铁在公司搭建好了测试平台

保守估计,目前有十多位小伙伴在公司搭建好了。 现在稍微详细的讲一下其中测试计划的使用说明: (图片有点小,可以点击扩大查看) 1、进入测试计划模块,点击“添加”,如下图5.1: ▲图 5…

NX二次开发UF_CAM_set_cam_preferences 函数介绍

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan UF_CAM_set_cam_preferences Defined in: uf_cam.h int UF_CAM_set_cam_preferences(UF_CAM_preferences_p_t prefs ) overview 概述 This function sets the current settings of…

【鸿蒙应用ArkTS开发系列】- 云开发入门实战二 实现城市多级联动Demo(上)

目录 概述 云数据库开发 一、创建云数据库的对象类型。 二、预置数据(为对象类型添加数据条目)。 三、部署云数据库 云函数实现业务逻辑 一、创建云函数 二、云函数目录讲解 三、创建resources目录 四、获取云端凭据 五、导出之前创建的元数据…

鸿蒙原生应用/元服务开发-AGC分发如何配置版本信息(下)

12.根据《工业和信息化部关于开展移动互联网应用程序备案工作的通知》,自2023年9月初起,在中国大陆地区提供互联网信息服务的APP开发者,需要依法履行APP备案手续,并通过APP分发平台的备案信息核验。 对于2023年9月7日后在AGC新上…

【C++入门到精通】 Lambda表达式 C++11 [ C++入门 ]

阅读导航 引言一、C98中的一个例子二、Lambda表达式1. Lambda表达式语法(1)Lambda表达式各部分说明(2)捕获列表说明 三、Lambda表达式的底层原理温馨提示 引言 当今软件开发行业的快速发展和日益复杂的需求,要求程序员…

C运算符与表达式

跟着肯哥(不是我)学运算符与表达式 运算符 在C语言中,运算符是一种用来执行特定操作的符号或关键字。它们用于对变量、常量和表达进行计算、逻辑判断和位操作等。 定义一般都当耳旁风了 运算符分类 算术运算符 -*/%加减乘除取模,…

everything排除目录

everything默认搜索所有文件,自己把没啥必要的目录都屏蔽掉,记录如下

ChatGPT/GPT4丨编程助手;AI画图;数据分析;科研/项目实现;提示词工程技巧;论文写作等

ChatGPT 在论文写作与编程方面也具备强大的能力。无论是进行代码生成、错误调试还是解决编程难题,ChatGPT都能为您提供实用且高质量的建议和指导,提高编程效率和准确性。此外,ChatGPT是一位出色的合作伙伴,可以为您提供论文写作的…

[数据结构]-AVL树

前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、AVL树基…

IBM ELM—系统工程全生命周期管理平台

产品概述 Engineering Lifecycle Management是IBM提供的工程全生命周期管理组合工具,帮助企业降低开发成本,应对开发挑战并更快地发展其流程和实践。 随着产品变得更加复杂且数字化,传统的工程开发不再能及时且有效地满足系统工程的复杂度&a…

【Django-DRF】多年md笔记第5篇:Django-DRF的Request、Response和视图详解

本文从分析现在流行的前后端分离Web应用模式说起,然后介绍如何设计REST API,通过使用Django来实现一个REST API为例,明确后端开发REST API要做的最核心工作,然后介绍Django REST framework能帮助我们简化开发REST API的工作。 Dj…

[点云分割] 基于最小切割的分割

效果&#xff1a; 代码&#xff1a; #include <iostream> #include <vector>#include <pcl/point_types.h> #include <pcl/io/pcd_io.h> #include <pcl/visualization/cloud_viewer.h> #include <pcl/filters/filter_indices.h> #include…

Can‘t open the append-only file: Permission denied

redis rdb aof-CSDN博客 Cant open the append-only file: Permission denied E:\Document_Redis_Windows\redis-2.4.5-win32-win64\64bit E:\Document_Redis_Windows\redis-2.4.5-win32-win64\64bit\redis.conf 还是不行&#xff0c;就要修改权限了&#xff0c;windows【完全控…

matlab 最小二乘拟合平面并与XOY平面对齐

目录 一、算法原理二、代码实现1、绕原点对齐2、绕质心对齐三、结果展示1、绕原点对齐2、绕质心对齐四、测试数据本文由CSDN点云侠原创,原文链接。爬虫网站自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理 首先,使用最小二乘拟合平面…

priority_queue简单实现(优先级队列)(c++)

priority_queue priority_queue介绍逻辑实现框架调整算法adjust_up()adjust_down() 仿函数/比较函数仿函数特性 构造函数迭代器区间构造 完整优先级队列代码 priority_queue介绍 pri_que是一个容器适配器&#xff0c;它的底层是其他容器&#xff0c;并由这些容器再封装而来。类…

C语言指针相关练习题

​ C语言指针相关练习题 文章目录 C语言指针相关练习题题目一题目二题目三题目四题目五题目六题目七 题目一 #include <stdio.h> int main() {int a[5] { 1, 2, 3, 4, 5 };int *ptr (int *)(&a 1);printf( "%d,%d", *(a 1), *(ptr - 1));return 0; }…