1. 引言
在现实生活中,图像是传递信息的重要媒介之一。在光照不足、天气和摄影设备等因素的影响下,获取的图像在视觉上会给人不好的观感体验。比如,图像中可能伴随着细节丢失、颜色失真和有效信息模糊不清等缺陷。在弱光或者背光条件下,获取的图像可能存在曝光不足。尽管可以通过增加曝光时间来获得明亮的图像,但是该方式在动态的环境下很难进行。在计算机视觉的应用中,如目标检测、跟踪和工业图像 [1] 等领域中,低光照图像不仅严重影响视觉效果,而且还使得视觉系统无法捕捉到有效信息,甚至会导致错误信息的传达。
针对上述的这些问题,国内外研究人员提出了许多方法。早期,直方图均衡化及其改进方法是一种被广泛使用的传统图像增强方法。文献 [2] 提出了一种动态的直方图均衡化方法,克服了传统直方图均衡化的缺点,对图像的对比度进行了适当的增强。由于直方图均衡化存在过分增强的问题,近年来基于Retinex理论的传统方法受到人们的青睐。文献 [3] 通过求RGB三通道中每个像素的最大强度值来构造光照图,并利用光照结构对光照图进行细化。文献 [4] 提出了一种加权变换模型,用于同时估计反射图和光照图。基于Retinex理论的传统方法主要是将图像分解为反射图和光照图,然后分别对其做一些增强处理得到最后的结果 [5] [6] [7] [8]。
随着深度学习的出现和发展,基于深度学习的方法在各个领域中都取得了不错的成果。例如图像去噪 [9]、图像去雨 [10]、图像去雾 [11] 等等。文献 [12] 提出了一种基于深度自编码的方法来识别弱光图像中的信号特征,并在高动态范围内对图像中较亮部分进行自适应加亮处理。文献 [13] 通过估计图像到光照的映射来增强曝光不足的图像,并基于各种光照约束和先验知识设计了一种新的损失函数进行网络训练。文献 [14] 采用一种高效的无监督生成对抗网络进行训练,使用输入图像提取的信息来规范未配对的数据。文献 [15] 提出了一种零参考的深度曲线估计方法,通过深度网络将图像映射为像素参数,并输入到特定曲线中进行增强。文献 [16] 提出了一种基于最大熵的Retinex模型,在模型中引入约束条件以实现自监督的学习。文献 [17] 设计了一个深度递归网络,将配对监督学习获得的先验信息与感知的视觉质量信息相联系。文献 [18] 通过Retinex模型对图像进行分解得到反射图和光照图,对反射图进行去噪操作,对光照图的亮度进行调整,得到增强后的图像。
虽然上述的这些方法在一定程度上能较好地实现低光照图像增强,但是仍存在以下的一些问题。目前,主流的方法可以分为以下两类,基于监督学习的方法和无监督学习的方法。基于监督学习的方法存在一个缺陷,一般需要大量配对的数据集进行训练。数据集的制作和收集需要大量的时间成本和人力成本。而且,对于配对数据集,很难判断获得的正常光图像是否是最优解。在无监督学习方法中,不需要大量的数据集和配对数据集的收集。但是,由于缺乏图像的先验知识,实验结果往往不太理想。因此,低光照图像增强领域仍需要更进一步的研究与探索。
针对上述存在的问题,本文提出了一种由自监督学习和无监督学习方法结合的端到端的模型,即使不需要配对的数据集,也能获得理想的效果。在自监督学习模型中,利用低光图像的先验信息,对反射图进行约束,有效地解决了无监督学习方法缺少图像先验信息的问题。在无监督学习模型中,将光照图输入到自适应光增强函数中迭代,对亮度进行动态调整,有效地恢复了光照信息和亮度。该方法通过将自监督和无监督学习方法的优势相结合,取得了良好的效果,有效地克服了上述所说的不足。
本文的主要贡献如下:
1) 提出了一种由自监督学习和无监督学习方法组成的端到端的模型;
2) 提出了一个有效的损失函数对光照图进行约束;
3) 对光照图进行动态调整,融合有用的光照信息;
4) 提出的网络是轻量级的,训练时间仅需80 s。
2. 方法
根据Retinex理论,可以假设将图像分解为反射分量R和光照分量I。原图像S则可以被定义为:
(1)
其中,S代表输入图像,R代表反射率,I代表光照,
代表元素乘法。反射率描述的是物体的一种属性,无论在何种亮度条件下都是不会改变的。光照是描述物体上的各种亮度。在低光照图像上会存在光照分布不均衡的问题。
本文提出的基本网络框架见图1所示。其中,包括两个模型,分别为分解模型和光照调整模型。分解模型是一个基于最大熵的Retinex模型,可以不依赖正常光照图像对图像进行分解得到真实的反射图。由于反射率是图像的一种性质,不会随着光照的改变而发生改变。根据这一特性,本文通过一个约束条件,将其作为先验信息并进行恢复。详情见1.1。光照调整模型是由一个自动编码器网络和3个卷积层组成的。通过光照调整网络可以将光照图信息输入到特定曲线中,映射为像素参数,并通过曲线迭代对光照图亮度进行恢复。最后,将经过处理后的反射图和光照图进行融合,得到最终增强的图像。
![](//html.hanspub.org/file/14-1542501x9_hanspub.png?20220415093048198)
Figure 1. The neural network model framework of this article
图1. 本文神经网络模型框架
2.1. 分解模型
根据式(1),可以将图像分解为R和I,使用四个损失函数对其进行约束,分别为重建损失
,反射率损失
、光照平滑度损失
和光照重建损失
。
重建损失
:为了确保分解后的图像能够重建原始图像,本文使用
范数作为重建损失进行约束,其定义如下所示:
(2)
反射率损失:本文使用了文献 [16] 提出的反射率损失,对于R有很好的约束效果,其定义如下所示:
(3)
其中,
表示直方图均衡化操作,c代表RGB三通道,
,
都是权重参数,
的取值可以控制噪声。从损失函数可以看出,要求R中三通道的最大通道应该与低光图像的最大通道相符合,且具有最大熵。因为对于低光照图像来说,最大通道对视觉的影响起着重要的作用 [16]。
照平滑度损失
:使用文献 [19] 提出的光照平滑度损失函数,其定义如下所示:
(4)
其中,
表示梯度,包括水平方向和垂直方向,
是一个权重参数。
光照重建损失
:根据低光照图像的特点,本文提出了光照重建损失对I进行约束,其定义如下所示:
(5)
其中,
表示对I进行了连接操作。根据LOL数据集 [19] 中低光图的特点,要求光照图与输入图像中三通道中像素最小值接近,可求出接近真实的光照图像。在第2节实验中做了消融实验证明了该损失函数的有效性。
由上述的四个损失函数,可以得到Retinex分解模型的总损失函数
,表示如下:
(6)
其中,
、
、
、
和
分别取值0.1、0.01、10、0.04和0.1。
的取值参考文献 [16]。
2.2. 光照调整网络
由于在自监督模块中,缺少有效的机制对光照图进行亮度调整。因此需要一种有效的方式来提升光照图的亮度。目前,有三种有效的方法可以增强光照,分别是融合,光级指定和伽马校正。基于融合的方法缺乏光照调节的功能。基于光级指定的方法,要求训练集必须包含目标图像,限制了它的灵活性和高效性。尽管伽马矫正可以通过设置不同的伽马值达到目的,但是可能无法反映不同光照级别之间的关系。受文献 [15] 启发,本文在其基础上进行了参数修改,提出一种自动将光照图像映射到增强图像的曲线。通过曲线迭代,可以动态调整光照图亮度,并采用两个无参考损失函数来训练网络。
曲线被如下定义:
(7)
其中,x表示像素坐标,
表示增强后的
,
是一个像素参数,可以调节曝光的级别。本文仅仅将曲线应用于光照图上,因为对于光照图而言,提高曝光度和保留光照的纹理特征是主要任务。根据低光图中光照图的特点和
可以调节曝光度级别的优势,本文增加了一个控制曝光度的系数k,仍然能满足文献 [15] 中的要求。其中,令
。
为了动态调整每条曲线的像素参数的范围,通过式(7)的迭代应用,可以如下表达:
(8)
其中,
是具有与输入图像相同大小的参数,n表示曲线迭代的次数。在实验过程中,设置
时,可以获得令人满意的结果。
本文使用深度网络学习输入图像与曲线参数之间的映射关系,具体网络结构见图2所示。网络的输入是光照图像,输出则是一组对应曲线的参数图。网络使用了一个简单的自动编码器和三个卷积层+ReLU,最后通过Tanh激活学习得到8个像素参数。通过连续的下采样可以使网络透视大尺度的光照分布,然后上采用对局部光照信息进行重构。在网络中引入了跳跃连接,强制网络进行残差学习。并且在上采样过程中,使用邻插值操作,可以避免棋盘模式 [20]。
![](//html.hanspub.org/file/14-1542501x46_hanspub.png?20220415093048198)
Figure 2. Illumination adjustment network model structure
图2. 光照调整网络模型结构
本文使用两个无参考损失函数对其曝光度和纹理特征进行恢复,分别是曝光控制损失和光照平滑度损失。
曝光控制损失
:为了提高图像的曝光水平,引用了文献 [15] 的曝光控制损失,其定义如下所示:
(9)
其中,M表示大小为16 × 16的非重叠局部区域的数量,Y为增强图像中局部区域的平均强度值,E表示良好的曝光水平。在 [15] 中,将E设置为良好颜色曝光水平。在实验中,令
.
光照平滑度损失
:为了保持相邻像素间的单调关系和对比度,在每个曲线的像素参数
中添加了光照平滑度损失,其定义如下所示:
(10)
其中N代表迭代次数,
和
分别代表水平和垂直方向的梯度操作。
总的损失为:
(11)
3. 实验
3.1. 实验细节
本文使用LOL数据集 [19] 作为训练集,其中包括500个低/正常光图。在训练过程中,只使用485张低光图进行训练,15张用于测试验证,并未用到正常光图和合成的图像。在训练过程中,将batch size设置为16,patch size设置为48 × 48,学习率设置为0.001。使用Adam随机优化来训练网络,训练次数设置为100。本文使用的是Tensorflow框架,并且整个实验过程是在NvidiaGTX1660TiGPU and Intel Core i7-9700 3.20 GHz CPU上完成的.
3.2. 评估指标
本文使用四个常用的评估指标,分别为PSNR (Peak Signal to Noise Ratio),SSIM (Structural Similarity) [21],NIQE (Natural Image Quality Evaluator) [22],LOE (Lightness Order Error) [8]。这四个评估指标可以分别在图像相似度、图像质量和图像亮度恢复上对实验结果做出评价。PSNR和SSIM评估值越大表明图像恢复的效果越好,NIQE和LOE则相反。其中,LOE指标是使用与正常光图像作为参考进行计算的。
3.3. 实验结果与比较
在实验结果中,将本文提出的方法和最近比较具有代表性的方法进行比较。见图3所示。从图中可以看出,Enlighten GAN、Zero-DCE、SRIE、NPE和DRBN在亮度上的恢复效果并不理想。Retinex-Net明显表现出颜色失真,而且和LIME、SRIE、NPE、Enlighten GAN方法一样缺少有效的去噪处理机制。KinD、Self和本文提出的方法,都具有有效的去噪处理机制,并且效果也比较理想。但相对来说,本文提出的方法在色彩上给人的视觉效果更为满意。见表1所示,计算出了各个方法在LOL数据集上的定量结果。可以看出,该方法在所有指标中都有不错的表现。其中,SSIM指标比使用监督学习方法的KinD略低,NIQE指标比使用自监督学习方法的Self略低,其他指标都优于所有的方从表1也可以看出,本文在分解模型中提出的损失函数
的有效性,对PSNR和SSIM两个指标有明显的提升效果。
![](Images/Table_Tmp.jpg)
Table 1. Quantitative results tested on the LOL test set
表1. 在LOL测试集上测试的定量结果
![](//html.hanspub.org/file/14-1542501x57_hanspub.png?20220415093048198)
Figure 3. Visual comparison of the test results of various methods on the LOL test set
图3. 各种方法在LOL测试集的测试结果在视觉上的比较
4. 结束语
在本文中,针对低光照图像存在的问题和现有方法的一些不足,提出了一种基于Retinex模型的低光照图像增强算法。通过结合自监督学习和无监督学习方法的优势,在一定程度上,提高了算法的精度和性能。实验结果表明,该算法在性能上和效果上都有一定程度上的提升。但是,该算法仍会出现噪声的情况。由于该算法的网络模型是轻量型的,算法精度还能有更进一步的提高空间。因此,下一步的研究方向是将考虑如何消除图像分解过程中产生的噪声情况和提高算法精度。