作为一个文章小白,此时怀着忐忑及惴惴不安的心情写下了第一篇文章(怕文笔不好,让技术大佬们看笑话)。但是不摔跤哪能学会走路呐( 理不直气也壮 )。今天要和盆友们分享学习的是超全的低照度图像增强算法,这时候你可能就说了——低光照的图片用python亮度增强几行代码就搞定了啊,还用学什么算法,我这都有:

def brightnessEnhancement(root_path,img_name):#亮度增强
    image = Image.open(os.path.join(root_path, img_name))
    enh_bri = ImageEnhance.Brightness(image)
    brightness = 1.5
    image_brightened = enh_bri.enhance(brightness)
    return image_brightened
唉唉唉,此言差矣,这种opencv实现的几行亮度增强代码与咱们用数据集训练出来的增强算法还是不一样滴,先不说增强效果,起码咱们技术型人才用起来不至于那么low叭(狗头保命)。话不多说,如果你也有低照度图像增强方面的学习需求,咱们开始一起欢乐的学习吧!

1. 低照度图像增强简介

低照度图像增强是指将光线较暗、噪点多、细节不清晰的低照度图像转换为更明亮、更清晰的图像的过程(如下所示)。低照度图像增强技术可以帮助提高图像的品质,使其更加适合应用于计算机视觉、机器学习和人工智能等领域。常见的低照度图像增强方法包括直方图均衡化、基于深度学习的方法、基于图像复原的方法等。本文主要研究介绍基于深度学习的增强算法。

2. 十四种低照度增强原理

2.1 Zero-DCE

  • 论文:arxiv.org/pdf/2103.00…
  • 代码:github.com/wangyin0810…
  • Zero-DCE(Zero-Reference Deep Curve Estimation)中文叫作零参考深度曲线估计,旨在提高低光照条件下的图像质量。与传统的基于参考图像的方法不同,Zero-DCE无需参考图像,而是通过深度学习模型直接学习曲线来进行图像增强。Zero-DCE的框架如下: Zero-DCE使用了两个关键组件:对比损失函数和特征重建网络DCE-Net。对比损失函数是一种用于评估图像增强效果的损失函数,通过比较原始图像和增强图像之间的特征差异来计算损失。特征重建网络是一个深度卷积神经网络,它将原始图像作为输入,输出一条曲线,该曲线用于增强图像。

    具体来说,Zero-DCE算法首先将输入的低光照图像转换为灰度图像,并对其进行标准化处理。然后该算法使用特征重建网络生成一条曲线,该曲线通过最小化对比损失函数来确保与原始图像的特征相匹配。最后,增强图像通过将原始图像的像素值通过曲线进行调整而生成。

  • 零参考:不需要任何参考图像或先验知识,能够直接对单张低光照图像进行增强,与其他基于参考图像的方法相比具有更大的灵活性和实用价值
  • 细节保留:通过学习全局曲线和局部曲线,在增强图像的同时可以保留细节信息,避免图像过度增强导致失真等问题
  • 可扩展性:可以通过增加训练数据集等方式来提高其性能和适用范围
  • 训练成本高:需要使用大量的低光照图像作为训练数据集,在训练过程中需要消耗大量的计算资源和时间
  • 对输入图像质量要求高:如果输入图像噪声较多或者分辨率较低,算法性能可能会受到影响
  • 处理速度慢:需要运行深度学习网络和曲线调整等操作,处理速度相比于传统的图像增强算法较慢
  • 2.2 Zero-DCE++

  • 论文:li-chongyi.github.io/Proj_Zero-D…
  • 代码:github.com/Li-Chongyi/…
  • Zero-DCE++ 是基于 Zero-Reference Deep Curve Enhancement (Zero-DCE) 算法的改进版本,主要改进了局部曲线的学习方式,使得其更加适合处理低光照图像中的细节。

    Zero-DCE++ 算法的主要思想是通过深度学习技术学习到一个映射函数,将输入的低光照图像映射到高光照度空间。这个映射函数由两部分构成:一部分是全局曲线,用于控制整个图像的明暗度;另一部分是局部曲线,用于处理图像中的细节。具体来说,Zero-DCE++ 算法的步骤如下:

  • 输入低光照图像,并将其缩放到固定大小
  • 提取亮度信息,得到亮度通道图像
  • 通过深度学习网络学习得到全局曲线和局部曲线
  • 使用学习得到的曲线对亮度通道图像进行调整,得到增强后的亮度通道图像
  • 将增强后的亮度通道图像与原始图像的色彩信息合并,得到最终的增强结果
  • 可以自适应地调整图像对比度,使得最终增强后的图像更加清晰、明亮,视觉效果更好
  • 不需要手动调整参数,运行速度较快,具有很好的实时性能
  • 可以应用于多种类型的图像增强任务,例如低光照度图像增强、雾霾图像去除等
  • 在处理极暗或极亮的图像时可能会失效,因为这些情况下图像中的细节信息被完全丢失
  • 增强后的图像可能出现过度增强或失真等问题,影响视觉效果
  • 对计算资源的要求较高,需要使用GPU进行计算,因此无法在一些设备上运行
  • 2.3 LightenNet

  • 论文及代码:li-chongyi.github.io/proj_lowlig…
  • LightenNet是一种用于弱光照图像增强的可训练卷积神经网络(CNN),它以弱光照图像为输入,输出其光照映射,然后根据Retinex模型获得增强图像。LightenNet增强算法的主要思想是通过对图像进行预处理和后处理,使得图像质量得到提升。具体来说,该算法采用了以下三个步骤:

  • 预处理:通过对原始图像进行调整,包括色彩平衡、直方图均衡化、高斯模糊等方法,减少噪声和提高对比度
  • 神经网络模型:LightenNet增强算法利用了一个轻量级的神经网络模型,该模型由多个卷积层、池化层和全连接层组成。在训练过程中,该模型学习如何将预处理后的图像进一步增强。例如,模型可以学习如何增强边缘、提高细节和加强图像对比度等
  • 后处理:最终输出的图像会进行一系列的后处理,包括锐化、去模糊、颜色增强等操作,以进一步提高图像质量
  • 其中,LightenNet的架构如下所示:

    从上图中可以看到,LightenNet包含四个具有特定任务的卷积层,分别是补丁提取和表示、特征增强、非线性映射和重建。这四个部分的参数设置如下,一目了然嗷:

  • 快速:LightenNet可以在几毫秒内对图像进行增强处理,非常适合实时应用
  • 自适应:可以自动调整参数,以适应不同类型的图像和光照条件
  • 高效:使用了轻量级卷积神经网络(CNN)架构,具有较低的计算成本和内存占用
  • 该算法只能针对亮度进行增强处理,无法处理其他图像特征,如色彩饱和度、清晰度等
  • 由于其采用了轻量级CNN结构,因此在某些情况下,增强效果可能不如其他更复杂的算法
  • LightenNet基于有监督学习模型,需要大量标记数据进行训练,因此在缺乏足够数据的情况下,算法的性能可能会受到影响
  • 2.4 EnlightenGAN

  • 论文:arxiv.org/abs/1906.06…
  • 代码:github.com/VITA-Group/…
  • 基于深度学习的方法在图像恢复和增强方面取得了显著的成功,但是在缺乏配对训练数据的情况下它们仍然具有竞争力吗?为了解决这一问题,使用从输入本身提取的信息来规范非配对训练,而不是使用ground truth数据监督学习,提出了一个高效的无监督生成对抗网络,称为 EnlightenGAN,可以在没有低光/正常光图像对的情况下进行训练,可用于增强来自不同领域的真实世界低光图像。

    EnlightenGAN是一种通过生成对抗网络(GAN)进行图像增强的算法,主要分为两个部分:生成器和判别器。生成器使用U-Net架构,将输入的低质量图片映射到高质量图片空间中。判别器则用于区分生成器输出的图像是否真实,并提供反馈信号来改进生成器的性能。在训练过程中,生成器会不断尝试生成与真实图像相似的图像,而判别器则会努力将真实图像与生成的图像区分开来。通过交替训练这两种模型,最终使得生成器可以生成更加逼真的高质量图像。EnlightenGAN的结构如下: 从图中可以看到,EnlightenGAN:

  • 采用自调整注意力引导的 U-Net 作为生成器
  • 使用双判别器来引导全局和局部信息
  • 使用自特征保留损失来指导训练过程并保持纹理和结构
  • 利用低光输入的照度信息作为深度特征每一层的自规则化注意图来规范无监督学习
  • 生成器可以处理多种类型的图像,包括人物、风景等
  • 生成的图像具有高度逼真性,甚至可以欺骗人眼
  • 算法可以调整图像的光照、色彩等属性,使图像看起来更加生动
  • 训练时间较长,需要大量的计算资源和时间
  • 算法还存在一定的不稳定性,有时会生成模糊或失真的图像
  • 需要大量的标记数据来进行训练,如果缺乏足够的数据,算法的性能可能会受到影响
  • 2.5 MBLLEN

  • 论文:www.bmva.org/bmvc/2018/c…
  • 代码:github.com/Lvfeifan/MB…
  • MBLLEN——多分支弱光增强网络,通过CNN卷积层将图像丰富的特征提取到不同的层次,使用多个子网进行同时增强,最后将多分支输出结果融合成最终增强图像,达到从多方面提高图像质量的效果,另外所提模型可以扩展到弱光视频增强。具体结构如下: MBLLEN由三种类型的模块组成:特征提取模块(FEM)、增强模块(EM)和融合模块(FM):

  • FEM:它是一个有10个卷积层的单流网络,每个层使用的内核大小为3×3,步幅为1和ReLU非线性,没有池化操作。对第一层的输入是低光彩色图像。每一层的输出既是下一层的输入,也是EM相应子网的输入
  • EM:它包含多个子网,其数等于FEM中的层数。子网的输入是FEM中某一层的输出,输出是与原始弱光图像大小相同的彩色图像。每个子网都有一个对称的结构,首先应用卷积,然后进行反卷积。第一个卷积层使用8个大小为3×3、步幅1和ReLU非线性的内核。然后,有3个卷积层和3个反卷积层,使用核大小为5×5、步幅1和ReLU非线性,核数分别为16、16、16、16、8和3。请注意,所有子网都是同时训练的,但单独训练,不共享任何学习的参数
  • FM:它接受所有EM的输出,以产生最终增强的图像。我们将来自EM的所有输出连接到颜色通道维度中,并使用一个1×1的卷积核来合并它们。这等于具有可学习权重的加权和
  • 高效性:MBLLEN使用基于深度学习的方法进行图像增强,具有非常高的计算效率和处理速度
  • 多样性:该模型具有多分支结构,每个分支对应不同的特征提取器和注意力机制,可以捕获不同尺寸和语境的信息,从而适应不同场景的图像增强需求
  • 自适应性:使用自适应模块调整每个分支的权重,以最大程度地提高预测结果准确性和稳定性
  • 数据依赖性:需要大量的训练数据才能发挥最佳性能,在缺少足够训练数据时,可能会出现过拟合或欠拟合等问题
  • 通用性:虽然MBLLEN具有多分支结构,但它仍然是一种基于特定任务的神经网络模型,并且对于其他类型的图像增强问题可能无法有效适用
  • 2.6 KinD

  • 论文:dl.acm.org/doi/10.1145…
  • 代码:[https://github.com/zhangyhuaee/KinD]
  • 在低光增强中还存在一些挑战,例如,如何从单个图像中有效地估计出光照分量,并灵活地调整光照呢?如何增强低照度亮度的同时消除噪声和色彩失真呢?如何训练一个模型,在没有明确的地面真相光条件,只看两个/几个不同的例子情况下增强低光图像呢?(毕竟谁也说不出什么光照条件是最好的,或者说 ground-truth 的确定因人而异)为了解决这些问题,KinD应运而生。

    受retinex理论的启发,KinD深度网络将图像分解为反射率层和光照层。分解结果是将原始空间解耦为两个更小的子空间。由于地面实况反射率和照度信息都很少,因此可以使用在不同光/曝光条件下捕获的成对图像对网络进行交替训练。为了消除之前隐藏在黑暗中的退化,kind建立了一个修复模块;kind还学习了映射功能,比传统的伽玛校正更符合实际情况,并能灵活调整光级,满足不同用户的光照需求。

    KinD的网络架构如下,主要分为三个模块,包括层分解反射率恢复光照调整

    2.7 DRBN

  • 论文:ieeexplore.ieee.org/document/91…
  • 代码:github.com/flyywh/CVPR…
  • DRBN(Deep Recursive Band Network)是一种用于图像增强的深度学习算法。与传统的单个神经网络不同,DRBN使用多个递归神经网络来逐步增强图像。该算法的主要思路是通过级联多个递归神经网络来逐步提高图像的质量。每个递归神经网络都会对输入图像进行处理,并将其输出传递给下一个网络。这样,每个网络的输出都包含前一个网络无法解决的细节信息。最终的输出则是所有网络输出的加权平均值。

    除了递归神经网络外,DRBN还使用了Boosting算法来进一步提高图像的质量。Boosting算法是一种集成学习算法,它能够将多个弱分类器结合起来形成一个更强的分类器。在DRBN中,Boosting算法被用来调整各个递归神经网络的输出权重,以进一步提高图像的质量。

    深度递归频带网络 (DRBN) 的框架如下,包括两个阶段: 递归频带学习和频带重构。在DRBN中,首先执行频带表示学习。在成对数据集的指导下,对每个频带信号进行学习恢复,该阶段确保信号保真度和细节恢复。然后,在非配对数据集的感知指导下,执行频带重组以增强图像的视觉质量,其中高质量图像充当人类视觉感知的先验。

    第一阶段:递归频带学习 Recursive Band Learning.

    目的:确保信号保真度和细节恢复

  • 在每次递归中,学习一系列从粗到细(s1到s3)的频带表示,在递归过程中共同推断不同的频带信号,再将其合并到增强结果中
  • 在特征域和图像域都采用了残差学习
  • 递归学习增强了建模能力。前一次递归的增强结果用作下一次递归的引导,也就是说,后面的递归仅在先前的递归估计指导下恢复残差信号。因此,后面的递归更能够建模结构细节和抑制噪声
  • 从上一次递归推断出的高阶Xs3带将影响本次递归中低阶Xs1频带的推断。即前一次递归的输出,被用作下一次递归的引导输入,其在联合估计中将所有频带估计连接在一起。因此,低阶和高阶带之间的连接是双向的,高阶带也为恢复低阶带提供了有用的指导
  • 递归估计使不同的频带能够学习基于所有频带的先前估计来校正它们的估计
  • 第二阶段:频带重组 Band  Recomposition

    目的:通过感知质量引导的对抗学习,重组频带表示,以提高增强的弱光图像的感知质量

    2.8 Retinex-Net

  • 论文:arxiv.org/abs/1808.04…
  • 代码:github.com/weichen582/…
  • 该算法基于Retinex理论,该理论认为人眼所看到的物体颜色不仅仅取决于物体本身的反射率,还受到光照和周围环境的影响。Retinex-Net使用卷积神经网络来模拟人类大脑中的信号处理过程,从而在保留图像细节的同时,增强图像的对比度和色彩饱和度。与传统的基于Retinex理论的方法相比,Retinex-Net能够自适应调整参数,适用于不同的场景和图像。其核心是一个由多个残差块组成的深度卷积神经网络,每个残差块包含多个卷积层和批量归一化层。

    Retinex-Net的整体结构如下,主要包含两个网络: 分解网络DecomNet和增强网络RelightNet。分解网络是一个五层的卷积神经网络,代码中是利用relu函数进行激活,没有什么特别的处理,可以看到将图像中的低照度图像和正常图像作为输入数据送入卷积神经网络进行分解,最后得到光照图像和反射图像,根据Retinex理论反射图像基本接近,但是两者光照图像相差很大,这样把每一张训练图像进行分解,然后再送入后面的增强网络进行训练。增强网络是一个九层的卷积神经网络,利用relu进行激活,中间还进行最邻近差值的resize操作,对刚才分解的反射图像进行去噪音操作,中间用了平滑。

  • 能够适应各种不同的图像场景和环境,包括低光、低对比度、雾霾等情况
  • 通过模拟人脑处理视觉信号的过程,能够保留图像细节的同时,提高对比度和饱和度,使图像更加清晰、明亮、真实
  • 使用卷积神经网络来进行图像增强,能够自动学习特征并进行参数调整,具有较高的灵活性和准确性
  • 需要大量的数据进行监督学习,以便优化网络权重和参数。这要求具备大规模数据集和高质量标注的条件
  • 对于某些极端情况,例如极低光照和强烈的雾霾,Retinex-Net可能无法达到理想的效果
  • 对计算资源的要求较高,需要较长的训练时间和较大的计算量,因此需要使用高性能计算平台
  • 2.9 RRDNet

  • 论文:[https://ieeexplore.ieee.org/document/9102962/]
  • 代码:github.com/aaaaangel/R…
  • 大多数低曝光图像恢复方法忽略噪音,并在拉伸对比度时将其放大,由此提出了一种基于RRDNet(Robust Retinex Decomposition Network)的零样本低曝光图像恢复方法。传统的低曝光图像恢复算法通常需要一个训练好的模型来处理低曝光图像,但这些模型可能无法处理新的、不同于训练集中的场景。因此,这个问题被称为“零样本”问题。而RRDNet则通过鲁棒的Retinex分解来解决这个问题,使得网络可以自适应地处理新场景下的低曝光图像。具体而言,该方法使用RRDNet将输入的低曝光图像分解成两个部分:一个是来自全局光照的残差图像,另一个是来自局部反射的显著图像。然后,对显著图像进行修复,再与残差图像合并即可得到恢复后的图像。这里的关键是利用RRDNet的鲁棒性来自适应地分解出残差图像和显著图像。

    该方法的工作流程如下,包括分解Decomposition和恢复Restoration两个阶段。在分解阶段,RRDNet是一个三分支全卷积神经网络,这三个分支分别用于估计反射率Reflectance、光照Illumination和噪声Noise。估计反射率和光照的网络最后一层激活函数为sigmoid函数,以保证强度在[0,1]内下降。与之不同的是,为了更好地拟合加性噪声,在噪声估计网络的最后一层使用了tanh激活函数,使噪声值降至[−1,1]。图中所示的噪声图被归一化以便于可视化。经过迭代最小化损失函数,更新RRDNet的权值,就可以生成最终的输入图像分解。

  • RRDNet能够通过零样本学习来处理各种不同类型和大小的低曝光图像,并且不需要针对不同场景进行特定的训练
  • 与其他算法相比,RRDNet在保持图像细节和颜色饱和度方面具有很好的表现
  • RRDNet具有较快的处理速度,适合实时应用
  • 在某些情况下,RRDNet可能无法完全还原低曝光图像,因为它依赖准确的反射和照明分解
  • 由于RRDNet需要高质量的输入图像,因此它可能无法很好地处理极端低曝光图像
  • 2.10 TBEFN

  • 论文:ieeexplore.ieee.org/abstract/do…
  • 代码:github.com/lukun199/TB…
  • TBEFN是一种基于深度学习的低光图像增强方法,其全称为“一个双分支曝光融合网络用于低光图像增强(Two-Branch Exposure-Fusion Network for Low-Light Image Enhancement)”。该方法由两个分支组成,一个用于将多个曝光不足的图像融合,另一个用于对融合后的图像进行增强。这样可以在保留细节的同时提高图像的亮度和对比度,从而让用户能够更清晰地看到低光照下的场景。具体架构如下所示。

    首先,我们来看一下TBEFN的第一个分支。这个分支主要用于将同一场景的多个曝光不足的图像进行合并,得到一张具有更好曝光和动态范围的图像。具体来说,TBEFN采用了加权曝光融合技术,即对每个输入图像根据其不同的曝光值进行加权平均,最终得到融合后的图像。这个过程能够有效地降低图像中的噪声和伪影,并且提升图像的动态范围。

    接下来是TBEFN的第二个分支,它主要用于对融合后的图像进行增强。这个分支采用了一系列卷积和残差块的结构,能够在保留图像细节的同时提高其亮度、对比度和色彩饱和度。此外,TBEFN还引入了自适应残差块(Adaptive Residual Block)和注意力模块(Attention Module),能够进一步优化增强效果,并且使得网络更加稳健。

  • 能够处理复杂照明条件和高噪声水平的场景,具有较强的鲁棒性
  • 采用了双分支结构,能够同时处理曝光融合和图像增强两个关键问题
  • 引入了自适应残差块和注意力模块等创新性结构,能够进一步提升增强效果
  • 在多个基准数据集上取得了最先进的结果,证明了其有效性和实用性
  • TBEFN需要多张同一场景的曝光图像,这在某些情况下可能不可用或不切实际
  • TBEFN的训练过程需要大量的标记数据,这可能会耗费时间和金钱
  • 尽管TBEFN可以提高整体图像质量,但在输入图像具有极端光照条件时,它可能无法产生逼真的结果
  • 2.11 LLNet

  • 论文:www.sciencedirect.com/science/art…
  • 代码:github.com/kglore/llne…
  • LLNet是一种基于深度自编码器的方法,用于自然低光图像增强。LLNet的作者使用了一个包含两个部分的网络架构:一个编码器和一个解码器。 编码器的作用是将输入的图片压缩成一个更小的向量,而解码器则将这个向量还原为原始图像。在LLNet中,编码器和解码器都是由卷积神经网络(CNN)构建而成的。

    LLNet的训练过程分为两个阶段。在第一个阶段中,作者使用了一个已知的数据集进行有监督的训练。他们使用了一组重复的低光图像和对应的高光图像来训练模型。在这个阶段,作者利用重建误差和感知误差两种损失函数来优化网络参数。在第二个阶段中,作者使用自我重建策略进行无监督的训练。在这个阶段,他们将同一张低光图像输入到编码器和解码器中,并比较输出的图像和原始图像之间的差异。通过最小化这个差异,网络能够逐渐学习如何重建低光图像。

    LLNet的结构如下图所示: LLNet方法的优点在于它不需要任何手动调整参数,即使在极端情况下也能够产生比较好的结果。此外,由于LLNet是基于深度学习的方法,因此它可以自适应地学习如何处理各种类型的低光图像。

    2.12 ExCNet

  • 论文:dl.acm.org/doi/abs/10.…
  • 代码:cslinzhang.github.io/ExCNet/
  • ExCNet是一种使用深度内部学习的零样本背光图像恢复方法。它可以通过学习场景中不同区域之间的关系,自动恢复被背光照射的图像的细节和颜色。

    当我们拍摄一个背光照明的场景时,通常会发现照片中暴露在背光下的物体的细节被完全丢失或过度曝光。这是因为传统的相机感知技术无法正确地处理暴露在背光下的物体。而ExCNet则通过排除掉背光影响,并自动调整图像的亮度和对比度,使得图像的质量得到了有效提升。

    ExCNet的核心思想是使用深度内部学习来进行无监督训练。具体来说,该算法通过将图像分成若干个小块,然后将这些小块重新组合起来,从而构建出一个新的图像。这个新的图像被称为重建图像,在这个过程中,算法会不断地更新其内部参数,直到最终得到一个最优解。ExCNet算法中最重要的组成部分是编码器和解码器。编码器将输入图像转换为特征向量,解码器则将特征向量转换回输出图像。这两个部分一起工作,通过学习来自不同场景的图像之间的相关性,从而实现对背光图像的恢复。

    ExCNet实际上是一个CNN,结构如下图所示。它的每个训练迭代在概念上可以被视为有两个阶段:1.使用中间S曲线调整亮度通道;2.计算损失。

  • 可以自动恢复被背光照射的图像的细节和颜色,实现对背光图像的高效处理
  • 该算法可以进行无监督训练,因此在使用时不需要大量标注数据
  • ExCNet可以自动调整图像的亮度和对比度,使得被背光照射的物体细节得到了恢复
  • 可能受到场景限制,对于一些非常特殊或极为复杂的场景,其处理效果可能会受到影响
  • 由于ExCNet采用了深度网络模型,其训练时间可能会很长,导致处理速度慢
  • 虽然ExCNet可以有效地恢复被背光照射的图像的细节和颜色,但是在某些情况下,其无法完全恢复图像的原始质量
  • 使用了深度网络模型,因此对计算机硬件的要求较高,在一些低端设备上可能无法运行
  • 2.13 DSLR

  • 论文:ieeexplore.ieee.org/abstract/do…
  • 代码:github.com/SeokjaeLIM/…
  • DSLR是一种用于低光照条件下图像增强的方法,它能够改善噪点、模糊和失真等问题,使得图像更加清晰和细节更加丰富。该方法基于深度学习和图像处理技术,通过对原始图像进行多次小幅度的偏移和叠加来消除噪声和增加亮度。接下来我们将详细介绍DSLR的原理和实现方法。

    首先,DSLR方法使用了深度神经网络(DNN)模型,该模型包括一个编码器和一个解码器。编码器将原始输入图像转换为特征向量,解码器则将这些特征向量转换回输出图像。这个过程可以被看作是一种自编码器(autoencoder)模型,其中输入和输出之间存在着一种非线性映射关系。通过训练这个DNN模型,我们可以获得一种适合于特定任务的映射函数。

    其次,DSLR方法使用了图像退化模型,该模型可以描述在低光照条件下图像会受到哪些影响,例如噪点、模糊、失真等。在DSLR方法中,我们假设原始图像可以表示为退化图像与残差图像的和,其中退化图像表示低光照条件下的图像,残差图像则表示原始图像与退化图像之间的差异。因此,我们的目标就是通过训练DNN模型来学习如何恢复残差图像,从而获得更加清晰和丰富的图像。

    最后,DSLR方法使用了拉普拉斯金字塔(Laplacian pyramid)技术,该技术可以将原始图像分解成多个尺度的子图像。通过对每个子图像进行处理,例如去噪、增亮等操作,我们可以在不影响整体图像质量的情况下对其进行增强。在DSLR方法中,我们将每个子图像看作是一个小块,通过对这些小块进行多次叠加,我们可以逐渐恢复出原始图像并消除噪声和失真。

    DSLR的网络结构如下:

    输入图像首先通过一个残差块(ResBlock),然后将其馈送到一个拉普拉斯金字塔分解模块,该模块对图像进行多层次的下采样和高斯滤波,得到不同尺度的拉普拉斯金字塔。接着,每个拉普拉斯金字塔都会经过一个深度残差块(Deep Residual Block),以在每个尺度上进行特征提取和修复。最后,各个尺度的修复结果将被级联起来,并通过一个反卷积模块进行上采样和合并,得到最终的增强图像。其中,拉普拉斯金字塔分解模块和重建模块可以使用标准的图像处理技术进行实现,例如OpenCV库中的pyrDown和pyrUp函数

    2.14 KinD++

  • 论文:link.springer.com/article/10.…
  • 代码:github.com/zhangyhuaee…
  • 与传统的增强图像亮度的方法不同,KinD++方法通过纹理恢复和色彩均衡来提高图像质量。KinD++方法首先利用低光照图像中的局部突出特征,通过对这些特征进行加权平均来生成基准图像。然后,在基准图像上进行局部纹理恢复,以补充因低光照而丢失的细节信息。最后,通过色彩均衡来调整图像的颜色平衡,使其更加真实自然。

    具体地说,KinD++方法包括以下三个步骤:

  • 基准图像生成:首先,从低光照图像中提取出局部突出特征,比如高斯滤波器输出的响应值较大的区域。然后,根据这些特征在图像中的分布情况,将它们进行加权平均,得到一个基准图像。这个基准图像能够保留原始图像中的主要物体和背景结构信息,但会去除一些噪点和阴影。
  • 局部纹理恢复:在基准图像上,使用局部纹理恢复算法来补充因低光照而丢失的细节信息。这个算法可以通过对每个像素周围的邻域进行纹理分析和纹理合成来实现。具体地说,可以利用非局部均值(NLM)滤波器来估计出每个像素的纹理信息,然后将这些纹理信息合成到原始图像中。
  • 色彩均衡:最后,使用色彩均衡算法来调整图像的颜色平衡。这个算法可以将图像的亮度、饱和度和色相分别进行调整,以使图像的颜色更加真实自然。具体地说,可以使用直方图均衡化来增强图像的亮度和对比度,然后使用色相变换来调整图像的色彩平衡。
  • KinD++方法的网络结构如下: KinD++和KinD的主要贡献都是一样的,但不同的地方表现在反射率恢复网络,如下图中的(a)和(b)是KinD++和KinD的对比,在 KinD++ 中,反射率恢复网络没有采用 U-Net,整个网络过程图像的空间分辨率保持不变,并引入了多尺度亮度注意力(MSIA)模块,如图(c)所示。

    3. 十四种增强对比图

    学完这十几种算法的主要原理、思想之后,相信盆友们最关心的就是增强效果了,这里为了比较说明呢,用同一张低照度图片来看看在咱们这14种算法下的呈现效果,结果如下图所示:

    这里具体哪种方法的增强效果更好呢?我觉得不太好说(废话博主)。毕竟每个人对于图片的评判标准不同、对最好光照的理解不同、对数据集的任务需求也不同。要特别说明的是,以上的算法只要根据代码说明,大部分是可以成功跑出来的滴,如果你有低照度数据增强的需求,请根据你的数据集耐心搞一搞叭~~~

    ending

    行文至此,终于松了一口气,很开心能把学到的知识以文章的形式分享给大家。如果你也觉得我的分享对你有所帮助,please一键三连嗷!!!下期见

    迷之自信.jpeg

    分类:
    人工智能
    标签: