Deep Retinex Decomposition for Low-Light Enhancement

article/2025/11/11 11:04:36

参考   Deep Retinex Decomposition for Low-Light Enhancement - 云+社区 - 腾讯云

目录

摘要

1、简介

2、弱光增强的视黄素网

2.1、数据驱动的图像分解

2.2、支持结构平滑损失

2.3、多尺度照明调整

2.4、反射上的去噪

3、数据集

3.1、真实场景中捕获的数据集

3.2、从Raw图中合成图像

4、实验

4.1、实验设置

4.2、分解结果

4.3、评估

4.4、联合微光增强和去噪

5、结论


摘要

Retinex模型是微光图像增强的有效工具。假设观测图像可以分解为反射率和光照。大多数现有的基于Retinex的方法都为这种高度病态分解精心设计了手工制作的约束条件和参数,当应用于各种场景时,可能会受到模型容量的限制。在本文中,我们收集了一个包含低/正常光图像对的低光数据集(LOL),并提出了在该数据集上学习的深度Retinex-Net,包括用于分解的解分解网和用于光照调整的增强网。在解压网络的训练过程中,分解的反射率和光照没有ground truth。该网络仅在关键约束条件下学习,包括成对低/正常光图像共享的一致反射率和光照的平滑度。在分解的基础上,通过增强网络对光照进行亮度增强,联合去噪时对反射率进行去噪操作。Retinex-Net是端到端可训练的,因此学习的分解本质上有利于亮度调整。大量实验表明,该方法不仅在弱光增强方面具有良好的视觉效果,而且能很好地表征图像的分解。

1、简介

在图像捕获中,光照不足会显著降低图像的可见性。细节的丢失和低对比度不仅会造成不愉快的主观感受,而且会损害许多为正常光线图像设计的计算机视觉系统的性能。造成照明不足的原因有很多,如环境光线不足,摄影设备性能有限,设备配置不当等。为了使隐藏的细节显现出来,提高当前计算机视觉系统的主观体验和可用性,需要进行弱光图像增强。

在过去的几十年里,许多研究者致力于解决微光图像增强的问题。许多技术已经发展,以提高主观和客观质量的微光图像。直方图均衡化(HE)及其变异体约束输出图像的直方图满足一定的约束条件。基于去雾的方法利用了光照不足的图像和模糊环境下的图像之间的逆连接。

另一类微光增强方法是建立在Reinex理论基础上,假设观察到的彩色图像可以分解为反射率和光照。像早期的尝试一样,单尺度的Retinex (SSR)通过高斯滤波约束光照贴图平滑。多尺度的Retinex (MSRCR)扩展了SSR的多尺度高斯滤波器和颜色恢复。[23]提出了一种利用光阶误差测量保持照度自然度的方法。Fu等人提出融合初始光照图的多个派生。SRIE使用加权变分模型同时估计反射率和光照。操纵照明后,可以恢复目标结果。另一方面,LIME只在结构先验下估计光照,并使用反射作为最终的增强结果。也有基于Retinex的联合微光增强和噪声去除方法。

虽然这些方法在某些情况下可能产生有希望的结果,但它们仍然受到反射和光照分解模型容量的限制。很难设计出适用于各种场景的有效的图像分解约束条件。此外,照明贴图的操作也是手工制作的,这些方法的性能通常依赖于仔细的参数调整。

随着深度神经网络的快速发展,CNN被广泛应用于低层图像处理中,包括超分辨率,去雨等。Lore等人的使用堆叠稀疏去噪自动编码器来同时进行微光增强和降噪(LLNet),但是没有考虑到微光图像的性质。

为了克服这些困难,我们提出了一种数据驱动的Retinex分解方法。建立了一个融合图像分解和连续增强操作的深度网络。首先,利用子网络—解压网络将观测图像分割为不依赖光线的反射率和结构感知的平滑光照。解压网络是在两个约束条件下学习的。首先,低/正常光图像具有相同的反射率。其次,光照图要平滑,但保留主要结构,这是通过感知结构的总变化损失得到的。然后,另一个增强网络调整光照图以保持大区域的一致性,同时通过多尺度连接来裁剪局部分布。由于噪声在黑暗区域往往更大,甚至在增强过程中被放大,因此引入了反射率去噪。为了训练这样一个网络,我们从真实的照片和从原始数据集合成的图像中建立一个低/法线光图像对的数据集。大量实验表明,该方法不仅在弱光增强中获得了良好的视觉效果,而且能很好地表征图像的分解。现将我们的工作贡献总结如下:

  • 我们用在真实场景中捕获的成对的低/正常光图像来构建一个大型数据集。据我们所知,这是在弱光增强领域的首次尝试。
  • 我们构造了一种基于Retinex模型的深度学习图像分解算法。分解网络与连续的弱光增强网络进行端到端训练,因此该框架具有良好的光状态调节能力。
  • 我们提出了一种结构感知的全变差约束用于深度图像分解。在梯度很强的地方,通过减轻总变化的影响,约束成功地平滑了照明贴图并保留了主要结构。

2、弱光增强的Retinex

经典的Retinex理论模拟了人类的颜色感知。假设观测图像可以分解为反射率和光照两个分量。S表示源图像,则表示为:

                                              

式中R为反射率,I为光照,\circ为element-wise乘法。反射率描述捕获物体的内在属性,它被认为在任何亮度条件下都是一致的。光照表示物体上的不同亮度。在弱光图像上,它通常遭受黑暗和不平衡的照明分布。

在Retinex理论的基础上,设计了一种深度Retinex,共同进行反射率照度分解和微光增强。网络由分解、调整和重构三个步骤组成。在分解步骤中,Retinex-Net将输入图像通过分解网分解为RI。在训练阶段,它接受对低/正常光图像,而在测试阶段,它只接受低光图像作为输入。在低/正常光图像共享相同反射率和光照平滑的约束下,Decom-Net学会了以数据驱动的方式提取不同光照图像之间一致的R。在调整步骤,一个增强网被用来照亮照明贴图。增强网采用编解码器的整体框架。采用多尺度拼接的方法,在调整集中关注的局部分布的同时,保持光照与大区域上下文信息的全局一致性。此外,放大噪声,往往发生在低光条件下,消除了反射率,如果需要。然后,在重建阶段,我们将调整光照和反射率通过元素的乘法结合起来。

2.1、数据驱动的图像分解

分解观测图像的一种方法是直接在低光输入图像上估计反射率和照度,并精心制作了约束条件。由于Eq.(1)的病态性很强,很难设计出适合各种场景的约束函数。因此,我们试图以数据驱动的方式来解决这个问题。

在训练阶段,Decom-Net每次都对低/正态光图像进行配对,在低光图像和正态光图像具有相同反射率的指导下,学习对低光和对应的正态光图像的分解。注意,虽然分解是用配对数据训练的,但它可以在测试阶段单独分解低光输入。在训练过程中,不需要提供反射率和光照的ground truth。只有反射一致性和光照映射光滑性等必要知识作为损失函数嵌入到网络中。因此,我们的网络分解是从成对的低/正常光图像中自动学习到的,本质上适合描述不同光照条件下图像之间的光变化。

需要注意的一点是,尽管这个问题在形式上可能类似于固有图像分解,但它们在本质上是不同的。在我们的任务中,我们不需要精确地获取实际的本征图像,而是需要一个良好的表征来进行光调节。因此,我们让网络学会在弱光图像和相应增强结果之间寻找一致分量。

如图1所示,Decom-Net以慢的弱光图像S_{\text {low }}和正常光的一个S_{\text {normal }}图像为输入,然后分别估计慢的反射率R_{\text {low }}和照度I_{\text {low }},以及正态光的S_{\text {normal }}和非normal图像。首先使用3×3卷积层从输入图像中提取特征。然后,采用几个以直线矫正单元(ReLU)为激活函数的3×3卷积层,对RGB图像进行反射率和光照映射。一个3×3卷积层从特征空间投影RI,用sigmoid函数约束R和I在[0,1]的范围内。

损失L由重构损失\mathcal{L}_{\text {recon }}、不变反射率损失\mathcal{L}_{i r}和光照平滑损失\mathcal{L}_{\text {is }}组成:

                                      

                         

其中\lambda_{i r}\lambda_{i s}表示用于平衡反射率一致性和光照平滑度的系数。假设R_{\text {low }}R_{\text {high }}都可以用对应的光照图重构图像,则重构损失R_{\text {high }}公式为:

                      

引入不变反射率损失\mathcal{L}_{i r}来约束反射率的一致性:

                    

照明平滑度损失\mathcal{L}_{i s}将在下一节中详细描述。

2.2、支持结构平滑损失

光照映射的一个基本假设是局部一致性和结构感知,如[9]所述。换句话说,一个好的照明贴图的解决方案应该是在纹理细节平滑的同时仍然可以保持整体的结构边界。

全变差最小化(TV)是将整个图像的梯度最小化的算法,经常被用作各种图像恢复任务的平滑先验。然而,直接使用TV作为损失功能失败的区域,图像有强烈的结构或亮度变化剧烈。这是由于统一的减少梯度的照明图无论该区域是文本细节或强边界。换句话说,TV损失是结构盲性的。光照模糊,反射率上留下强黑边,如图2所示。

为了使损失能反映图像的结构,对原始的TV函数采用反射贴图梯度加权。最终\mathcal{L}_{i s}公式如下:

                        

其中,\nabla为包括\nabla_{h}(水平)和\nabla_{v}(垂直)的梯度,\lambda_{g}为平衡结构意识强度的系数。\mathcal{L}_{i s}通过权值\exp \left(-\lambda_{g} \nabla R_{i}\right)放松反射率梯度陡峭处的平滑约束,也就是图像结构所处的位置和光照应该不连续的位置。

虽然LIME也考虑了在有加权TV约束的照明映射中保持图像结构,但我们认为这两种方法是不同的。对于LIME,使用初始光照图对总变异约束进行加权,初始光照图是R、G和B通道中每个像素的最大亮度。我们的结构感知平滑损失是由反射率加权的。在LIME中使用的静态初始估计可能不能像反射率那样描述图像结构,因为反射率被假定为图像的物理属性。由于我们的解网是离线训练的大规模数据,在训练阶段可以同时更新光照和权重(反射率)。

2.3、多尺度照明调整

照明增强网络采用编码器-解码器结构的整体框架。为了从层次角度调整光照,我们引入了多尺度连接,如图1所示。

编码器-解码器体系结构获得大区域的上下文信息。将输入图像逐次降采样到小尺度,使网络能够了解大尺度光照分布情况。这就给网络带来了自适应调节的能力。利用大范围光照信息,上采样块重建局部光照分布。通过逐元素求和的方法,将跳越连接从一个下采样块引入到相应的镜像上采样块,从而强制网络学习剩余值。

为了分层调整光照,即在裁剪局部光照分布的同时保持全局光照的一致性,引入了多尺度拼接算法。如果有M个逐步向上采样的块,每个块提取一个C通道特征图,我们通过近邻插值将这些特征在不同尺度上调整到最终尺度,并将它们连接到一个C \times M通道特征图。然后通过1 \times 1卷积层,将连接的特征降为C通道。一个3 \times 3卷积层是\tilde{I}之后重建照明地图。

下采样块由步幅为2的卷积层和ReLU组成。在上行采样块中,使用了大小-卷积层。正如在[19]中演示的,它可以避免工件的棋盘式模式。size-convolutional layer由一个最近邻插值操作、一个带stride 1的convolutional layer和一个ReLU组成。

增强网的损失函数\mathcal{L}由重建损失\mathcal{L}_{\text {recon }}和光照平滑损失\mathcal{L}_{i s}组成。\mathcal{L}_{\text {recon }}意味着生产普通\hat{S}

                       

\hat{S}是式(5)一样,期望通过的梯度映射加权。

2.4、反射上的去噪

在分解步骤中,对网络进行了约束,其中之一是光照映射的结构感知平滑性。当估计的光照贴图是平滑的,所有的细节都保留在反射率上,包括增强的噪声。因此,我们可以先对反射率进行去噪,然后再用光照映射重建输出图像。由于暗区噪声在分解过程中会被亮度强度放大,因此应采用与光照相关的去噪方法。我们的实现在第4节中进行了描述。

                         

3、数据集

尽管弱光增强问题已经研究了几十年,就我们所知,目前公开的数据集没有提供在真实场景中捕获的低/正常光成对的图像。一些微光增强工作使用高动态范围(HDR)数据集作为替代,如MEF数据集。然而,这些数据集是在小尺度和包含有限的场景。因此,它们不能用来训练深度网络。为了便于从大规模数据集学习弱光增强网络,我们构建了一个新的网络,它包括两类:真实的摄影对和从原始图像合成对。第一个捕获了真实情况下的退化特性和属性。第二种是数据增强,场景和目标多样化。

3.1、真实场景中捕获的数据集

我们的数据集,命名为低光配对数据集(LOL),包含500对低/正常光图像。据我们所知,LOL是第一个包含来自真实场景的用于弱光增强的图像对的数据集。

大多数弱光图像是通过改变曝光时间和ISO来收集的,而相机的其他配置是固定的。我们从各种各样的场景中捕捉图像,例如,房子,校园,俱乐部,街道。图3显示了场景的一个子集。

由于相机抖动、物体移动和亮度变化可能会导致图像对之间的不对准,受[1]启发,我们使用三步法来消除数据集中图像对之间的不对准。实现细节可以在补充文件中找到。这些原始图像被调整到400×600和转换为便携式网络图形格式。数据集将公开提供。

3.2、从Raw图中合成图像

为了使合成图像更符合真实的暗摄影特性,我们分析了微光图像的照度分布。收集公共MEF、NPE、LIME、DICM[、vv1、融合[3]数据集270张弱光图像,将图像转换为YCbCr通道,计算Y通道的直方图。从RAISE[4]中采集1000张raw图像作为normal-light图像,计算YCbCr中Y通道的直方图。结果如图4所示。

原始图像比转换后的结果包含更多的信息。在对原始图像进行操作时,用于生成像素值的所有计算都在基础数据上一次性执行,从而使结果更加准确。利用RAISE中的1000张原始图像合成低光图像。使用Adobe Lightroom提供的界面,我们尝试不同的参数使Y通道的直方图与弱光图像的结果吻合。最后的参数配置可以在补充材料中找到。如图4所示,合成图像的光照分布与弱光图像匹配。最后,我们将这些原始图像调整为400×600,并将其转换为可移植的网络图形格式。

4、实验

4.1、实验设置

我们在第3节中提到的拥有500对图像的LOL数据集,被分成485对用于训练,另外15对用于评估。因此,网络在485幅真实图像对和1000幅合成图像对上进行训练。整个网络是轻量级的,因为我们经验发现它已经足够我们的目的。反卷积网络需要5个卷积层,在没有ReLU的2个对流层之间有ReLU激活。增强网络由3个向下采样区和3个向上采样区组成。首先对分解网络和增强网络进行训练,然后利用带反向传播的随机梯度下降(SGD)端到端对网络进行微调。批size设置为16,patch size设置为96×96。\lambda_{i r}\lambda_{i s}\lambda_{g}分别设置为0.001、0.1和10。当i \neq j时,\lambda_{i j}设置为0.001,当i=j时,\lambda_{i j}设置为1。

4.2、分解结果

在图5中,我们展示了LOL数据集评估集中的低/法线光图像对,以及由Decom-Net和LIME分解的反射率和光照图。补充文件中提供了更多示例。结果表明,我们的解压网络能够从文本区域和平滑区域两组不同光照条件下的图像中提取出基本一致的反射率。弱光图像的反射率与正常光图像的反射率相似,只是在真实场景中出现了黑暗区域的放大噪声。另一方面,照明贴图描绘了图像上的亮度和阴影。与我们的结果相比,LIME在反射率上留下了很多光照信息(见架子上的阴影)。

                  

                  

                 

4.3、评估

我们对来自公开的LIME、MEF和DICM数据集的真实场景图像进行了评估。LIME包含10个测试图像。MEF包含17幅多重曝光级别的图像序列。DICM用商用数码相机收集了69幅图像。我们将我们的Retinex-Net与四种最先进的方法进行了比较,包括基于去雾的方法(DeHz)、自然度保留增强算法(NPE)、同时反射和光照估计算法(SRIE)和基于光照图估计的方法(LIME)。

图6显示了三幅自然图像的可视化对比。更多的结果可以在补充文件中找到。从每一个红色矩形中可以看出,我们的方法在不过度曝光的情况下,充分地提高了隐藏在暗亮度下的物体的亮度,这得益于基于学习的图像分解方法和多尺度定制光照贴图。与LIME相比,我们的结果没有部分过度暴露(看看静物中的叶子和室外的叶子)。与DeHz相比,这些物体没有暗边,DeHz受益于加权电视损失条款(见街道上房屋的边缘)。

4.4、联合微光增强和去噪

考虑到其综合性能,采用BM3D作为视神经网络去噪操作。由于噪声在反射率上被不均匀地放大,我们使用相对照明策略(见补充材料)。我们比较了我们的联合去Retinex-Net与两种方法,一种是石灰去噪后处理,另一种是JED,一种最近的联合微光增强去噪方法。如图7所示,使用Retinex-Net可以更好地保留细节,而LIME和JED则模糊了边缘。

5、结论

本文提出了一种深度视频流分解方法,该方法可以在不考虑反射率和光照分解的真实情况下,以数据驱动的方式学会将观测图像分解为反射率和光照。介绍了光照的后续光增强和反射率的去噪操作。对分解网络和微光增强网络进行端到端训练。实验结果表明,该方法具有良好的图像分解效果和良好的增强效果。


http://chatgpt.dhexx.cn/article/L2NLmqb2.shtml

相关文章

霓虹灯(light)

【题目描述】 小石家旁边有一个大型商场,晚上会有不停变换的霓虹灯,各种各样的颜色非 常漂亮,小石每天晚上都喜欢站在窗口看不停变换的霓虹灯。这个商场的霓虹灯 在每个时刻都是同一种颜色。小石每天晚上会在商场开始亮灯时就站在窗口观看。 …

ultralight搭建/运行/打包

0、ultralight的github更新 截至2023年3月17日,ultralight的github仓库最近的提交时间为2022年12月10日。 1、ultralight ultralight是使用C或C语言和HTML/JS构建界面,基于WebKit的HTML渲染器。 支持系统:Windows(7、x64)、macOS(Sierra或…

rpi4 实现 qiuqiu - Ultralight-SimplePose

qiuqiu Ultralight-SimplePose:https://github.com/dog-qiuqiu/Ultralight-SimplePose 💻​ OS Linux raspberrypi 5.10.60-v8 #1448 SMP PREEMPT Sat Aug 21 10:48:18 BST 2021 aarch64 GNU/Linux⚡️ 安装 protobuf sudo apt-get install autoconf au…

射频识别技术漫谈(16)——Mifare UltraLight

【转自】http://blog.sina.com.cn/s/blog_9ed067ad01010t8k.html Mifare UltraLight又称为MF0,从UltraLight(超轻的)这个名字就可以看出来,它是一个低成本、小容量的卡片。低成本,是指它是目前市场中价格最低的遵守ISO14443A协议的芯片之一&a…

low-light系列:Lightening Network for Low-light Image Enhancement

前言 文章下载链接在后面 这是一篇顶刊TIP2020的文章,重点在于: 文章将暗光增强任务视为一个求residual(残差)的任务LBP模块的提出,借用了SR(超分辨率)任务中的back-projection思想可调亮度的…

Low-light images enhancement系列:EnlightenGAN:Deep Light Enhancement without Paired Supervision

众所周知,在暗光增强任务中,要获取到适合的成对的暗光/正常曝光训练图像是非常困难的,甚至是不存在唯一的定义良好的正常曝光ground truth图片。如果用正常曝光的图像去合成带噪点的暗光图像作为训练集,很可能导致最终应用在真实世…

RC522读取NFC Forum Type2 Tag流程及代码解析——Mifare Ultralight卡片读取(采用PHY6212平台,可移植)

RC522作为一款NFC读写芯片,性价比还是很高的,因为在项目里需要采用NFC OOB配对,所以需要读取配对方模拟的NFC卡片信息 读取对象采用NRF52832,使用其NFC功能模拟type2 tag,但是读取方式和M1卡不一样,踩了不…

Lighting - 光的亮度衰减

一些零零碎碎的笔记归档; 光的亮度衰减: 在物理正确的情况下,光的衰减遵循反比例平方衰减;因为光在传播过程中如下图: 随着距离的增加,单位平面上所接受的光照强度与距离的计算关系; 公式可简单…

PFLD+GhostNet+MobileOne=PFLD_GhostOne,重参数化让PFLD重生,精度提升超过4%,速度提升超过55%,代码已开源

在两年前,我曾经分享过利用GhostNet对PFLD进行优化的文章——《人脸关键点检测算法PFLD的优化实战记录》,那里面介绍了经过各种奇技淫巧,GhostNet确实能够提升PFLD的速度和精度,暂且称呼这个方法为PFLD-GhostNet,而且分…

LightGBM -- Light Gradient Boosting Machine

LightGBM 是微软开源的一个基于决策树和XGBoost的机器学习算法。具有分布式和高效处理大量数据的特点。 更快的训练速度,比XGBoost的准确性更高更低的内存使用率,通过使用直方图算法将连续特征提取为离散特征,实现了惊人的快速训练速度和较低…

Mifare UltraLight

Mifare UltraLight又称为MF0,从UltraLight(超轻的)这个名字就可以看出来,它是一个低成本、小容量的卡片。低成本,是指它是目前市场中价格最低的遵守ISO14443A协议的芯片之一;小容量,是指其存储容量只有512bit(Mifare S…

Low-light images enhancement/暗光/低光/微光增强系列:Attention-guided Low-light Image Enhancement(详解)

以下文字为博主翻译并添加了自己的理解,斜体为博主自己的想法,若有出错请指出。 摘要 暗光图像增强需要同时有效地处理颜色、亮度、对比度、伪影和噪声等多种因素。本文提出了一种新颖的注意力引导增强方案,并在此基础上构建了 端到端多分支…

STM32+PN532写UltraLight标签

第一次写博客记录下日常开发,最近公司一个项目需要用到NFC模块,所以开始了解NFC相关的一些知识,并在此MARK一下。 1、项目背景: 需要一个NFC模块为一个Mifare UltraLight的NFC标签写入一个蓝牙MAC地址,让手持设备接触…

零基础CSS入门教程(30)–CSS布局实例

点此查看 所有教程、项目、源码导航 本文目录 1. 前言2. 本章任务3. 开发过程3.1 设定全局样式3.2 头部标题栏样式3.3 导航栏样式3.4 内容区域3.5 底部版权区域 4. 小结 1. 前言 本篇是JavaWeb学习之路,CSS部分的最后一章。 从第24章初识CSS,到第53章C…

HTML+CSS的小实例

通过一个月以来对HTML5CSS的学习。这篇随笔给大家来做一个简单的网页中常见的导航栏。 这些都称之为网页中的导航栏。 我简单的做了一个某宝和58同城的导航栏,供大家学习参考。 一、58同城导航栏: 解析:首先我们来看到这个导航栏,…

CSS简单网页示例

简单今日头条页面实现: <!DOCTYPE html> <html><head><meta charset"utf-8"><title>今日头条</title><style>/* 设置body */body{/* 取消doby的内边距 */margin: 0;}/* 设置最底层标签d1 */.d1{/* 设置底层标签的大小 */…

css背景 ( 6种实例)

css背景实例 图片网站背景1.设置页面的背景颜色2.设置图像作为页面背景2.1图片加入至背景的方式2.1.1通过链接 2.2背景样式 3.定位背景图像4.固定背景5. 多图片背景6.渐变背景 CSS背景属性 图片网站 阿里巴巴矢量图标库 pixabay 图片转链接网站 背景 1.设置页面的背景颜色 …

CSS---‘样式’基础用法 与 案例

1、外部样式表 方式1&#xff1a; <link rel"stylesheet" type"text/css" href"文件路径"></link>方式2&#xff1a;&#xff08;常用&#xff09; <style>import url(文件地址) </style> 2、伪类选择器 a:hover{属性…

HTML+CSS案例

综合案例 1、分析1.1 整体结构1.2 部分结构 2、代码部分2.1 初始化_CSS2.2 头部2.2.1 头部_HTML2.2.2 头部_CSS 2.3、中间轮播图2.3.1 中间轮播图_HTML2.3.2 中间轮播图_CSS 2.4 精品推荐2.4.1 精品推荐_HTML2.4.2 精品推荐_CSS 2.5 底部样式2.5.1 底部样式_HTML2.5.2 底部样式…

css 的常用案例

Css 的几个常用案例 1. css 编写三角形 <!-- 三角形 --><div classtriangle-page><div class"triangle-top"></div><div class"triangle-right"></div><div class"triangle-bottom"></div>&l…