基于深度学习的低光照图像增强方法总结(2020.09.15更新)

之前在做光照对于高层视觉任务的影响的相关工作,看了不少基于深度学习的低光照增强(low-light enhancement)的文章,于是决定简单梳理一下。

光照估计(illumination estimation)和低光照增强(low-light enhancement)的区别:光照估计是一个专门的底层视觉任务(例如[1,2,6]),它的输出结果可以被用到其它任务中,例如图像增强、图像恢复(处理色差,白平衡)。而低光照增强是针对照明不足的图像存在的低亮度低对比度噪声、伪影等问题进行处理,提升视觉质量。值得一提的是,低光照增强方法有两种常见的模式,一种是直接end-to-end训练,另一种则包含了光照估计。

 

LLNet: A deep autoencoder approach to natural low-light image enhancement

2017 Pattern Recognition

这篇文章应该是比较早的用深度学习方法完成低光照增强任务的文章,它证明了基于合成数据训练的堆叠稀疏去噪自编码器能够对的低光照有噪声图像进行增强和去噪。模型训练基于图像块(patch),采用sparsity regularized reconstruction loss作为损失函数。

主要贡献如下:

(1)我们提出了一种训练数据生成方法(即伽马校正和添加高斯噪声)来模拟低光环境。

(2)探索了两种类型的网络结构:(a) LLNet,同时学习对比度增强和去噪;(b) S-LLNet,使用两个模块分阶段执行对比度增强和去噪。

(3)在真实拍摄到的低光照图像上进行了实验,证明了用合成数据训练的模型的有效性。

(4)可视化了网络权值,提供了关于学习到的特征的insights。

 

MSR-net:Low-light Image Enhancement Using Deep Convolutional Network

2017 arXiv

这篇文章引入了CNN,它提了一个有趣的观点,传统的multi-scale Retinex(MSR)方法可以看作是有着不同高斯卷积核的前馈卷积神经网络,并进行了详细论证。

接着,仿照MSR的流程,他们提出了MSR-net,直接学习暗图像到亮图像的端到端映射。MSR-net包括三个模块:多尺度对数变换->卷积差分->颜色恢复,上面的结构图画得非常清楚了。

训练数据采用的是用PS调整过的高质量图像和对应的合成低光照图像(随机减少亮度、对比度,伽马校正)。损失函数为带正则项的误差矩阵的F-范数平方,即误差平方和。

 

Learning a Deep Single Image Contrast Enhancer from Multi-Exposure Images

2018 TIP

这篇文章其实主要关注单图像对比度增强(SICE),针对的是欠曝光和过曝光情形下的低对比度问题。其主要贡献如下:

(1)构建了一个多曝光图像数据集,包括了不同曝光度的低对比度图像以及对应的高质量参考图像。

(2)提出了一个两阶段的增强模型,如上图所示。第一阶段先用加权最小二乘(WLE)滤波方法将原图像分解为低频成分和高频成分,然后对两种成分分别进行增强;第二阶段对增强后的低频和高频成分融合,然后再次增强,输出结果。

对于为什么要设计两阶段结构,文章中是这样解释的:单阶段CNN的增强结果并不令人满意,且存在色偏现象,这可能是因为单阶段CNN难以平衡图像的平滑成分与纹理成分的增强效果。

值得一提的是,模型第一阶段的Decomposition步骤采用的是传统方法,而后面介绍的Retinex-Net使用CNN实现了。

 

Deep Retinex Decomposition for Low-Light Enhancement

2018 BMVC

这篇文章是我前后读过许多遍,比较值得介绍。受Retinex理论的启发,它采用了两阶段式的先分解后增强的步骤,完全采用CNN实现。对于Decom-Net的训练,引入了反射图一致性约束(consistency of reflectance)和光照图平滑性约束(smoothness of illumination),非常容易复现,实验效果也不错。

主要贡献如下:

(1)构建了paired的低光照/正常光照数据集LOL dataset,应该也是第一个在真实场景下采集的paired dataset.该数据集分为两部分:真实场景的图像数据是通过改变相机感光度和曝光时间得到的;合成的图像数据是用Adobe Lightroom接口调节得到的,并且调节后图像的Y通道直方图必须尽可能地接近真实低光照场景。

(2)提出了Retinex-Net,它分为两个子网络:Decom-Net能够对图像进行解耦,得到光照图和反射图;Enhance-Net对前面得到的光照图进行增强,增强后的光照图和原来的反射图相乘就得到了增强结果。另外,考虑到噪声问题,采用一种联合去噪和增强的策略,去噪方法采用BM3D。

(3)提出一个structure-aware total variation constraint,就是用反射图梯度作为权值对TV loss进行加权,从而在保证平滑约束的同时不破坏纹理细节和边界信息。

 

MBLLEN: Low-light Image/Video Enhancement Using CNNs

2018 BMVC

这篇文章的核心思想是,网络中不同层次的特征的提取和融合。此外,该文的另一个亮点是针对视频的低光照增强网络,和一帧一帧处理的直接做法不同,它们使用3D卷积对网络进行了改进,有效提升了性能。

补充说明一下,视频的低光照增强会存在的一种负面情况,闪烁(flickering),即帧与帧之间可能存在不符合预期的亮度跳变。这一问题可以用AB(avr)指标(即平均亮度方差)来度量。

网络结构:包括特征提取模块FEM、增强模块EM和融合模块FM。FEM是有10层卷积的单流向网络,每层的输出都会被输入到各个EM子模块中分别提取层次特征。最终这些层次特征被拼接到一起并通过1x1卷积融合得到最终结果。为了用于视频增强,还需要对网络进行修改,具体可参考原文。

损失函数:本文不采用常规的MSE或者MAE损失,而是提了一个新的损失函数,包括三个部分,即结构损失、内容损失和区域损失。结构损失采用SSIM和MS-SSIM度量相结合的形式;内容损失,就是VGG提取的特征应该尽可能相似;区域损失令网络更关注于图像中低光照的区域。

 

Learning to See in the Dark

2018 CVPR

传统成像系统的pipeline
提出的新成像系统

这篇文章主要关注于极端低光条件和短时间曝光条件下的图像成像系统,它用卷积神经网络去完成Raw图像到RGB图像的处理,实验效果非常惊艳。

网络结构基于全卷积网络FCN,直接通过端到端训练,损失函数采用L1 loss。此外,文章提出了See-in-the-Dark数据集,由短曝光图像及对应的长曝光参考图像组成。

 

Kindling the Darkness: A Practical Low-light Image Enhancer

2019 ACM MM

这篇文章在今年5月份挂到了arXiv上,之后发表在ACM Multimedia 2019,干货挺多,据称是state-of-the-art。它提出了低光照增强任务存在的三个难点:

(1) 如何有效的从单张图像中估计出光照图成分,并且可以灵活调整光照level?

(2) 在提升图像亮度后,如何移除诸如噪声和颜色失真之类的退化?

(3) 在没有ground-truth的情况下,样本数目有限的情况下,如何训练模型?

这篇文章的增强思路还是沿用了Retinex-Net的decomposition->enhance的两阶段方式,网络总共分为三个模块:Decomposition-Net、Restoration-Net和Adjustment-Net,分别执行图像分解、反射图恢复、光照图调整。一些创新点如下:

(a)对于Decomposition-Net,其损失函数除了沿用Retinex-Net的重构损失和反射图一致损失外,针对光照图的区域平滑性和相互一致性,还增加了两个新的损失函数。

(b)对于Restoration-Net,考虑到了低光照情况下反射图往往存在着退化效应,因此使用了良好光照情况下的反射图作为参考。反射图中的退化效应的分布很复杂,高度依赖于光照分布,因此引入光照图信息。

(c)对于Adjustment-Net,实现了一个能够连续调节光照强度的机制(将增强比率作为特征图和光照图合并后作为输入)。通过和伽马校正进行对比,证明它们的调节方法更符合实际情况。

Underexposed Photo Enhancement using Deep Illumination Estimation

2019 CVPR

 

这篇文章发表于CVPR2019,提出了一种欠曝光图像增强网络,通过估计原图到光照图的映射,来实现对原图的增强。用到的损失函数包括:L2 Reconstruction Loss,Color Loss和Smoothness Loss。

值得一提的是,该文章还收集了一个包含3000张摄像照片的数据集(一部分来自相机拍摄,另一部分来自Flickr),这些图片都是在欠曝光、光照不足条件下拍摄的,并且聘请了三位experts对照片进行调整校正,得到对应的groundtruth.

 

EnlightenGAN: Deep Light Enhancement without Paired Supervision

2019 arXiv

 

为了解决现有低光照增强方法过度依赖于paired data的问题,本文提出一种基于GAN的方法EnlightenGAN,能够构建一个低光照图像和正常光照图像之间的unpaired mapping,无需配对的训练数据。这里所说的paired data指的是像素层面配准的低光照/正常光照图像对,在先前的工作中,这类数据通常用合成方法或者相机曝光调节的方法得到。

文章阐述的贡献总结如下:

(1)本文是第一篇将unpaired training应用到低光照图像增强的工作,避免了对paired data的依赖。

(2)创新点:i.双判别器结构,分别处理全局信息(image)和局部信息(patch),能够处理随着空间尺度变化而变化的光照条件。ii. self-regularization,包括:self feature preserving loss和self-regularized attention mechanism。

(3)和state-of-the-art方法进行对比,验证了EnligtenGAN的有效性。

 

Zero-Reference Deep Curve Estimation for Low-Light Image Enhancement

 

2020 CVPR

这篇文章发表在CVPR 2020,非常具有创新性。和上面介绍的低光照增强方法不同,本文提出的Zero-DCE是一种无参考的增强方法,也就是说,完全不需要paired / unpaired data作为训练数据。具体实现:给定一张低光照图像,我们可以迭代地利用像素值映射曲线来对图像进行变换,得到最终的增强图像。每组映射曲线的参数都是pixel-wise的并且可微分,因此可以通过一个轻量级网络DCE-Net预测得到。网络训练用到的损失函数设计十分巧妙,值得学习。

文章的贡献总结如下:

(1)首次提出一种不依赖于配对或者非配对训练数据的低光照增强网络,因此避免了过拟合的风险。提出的方法对于不同光照条件都有着良好的泛化性。

(2)我们设计了一个图像特定的曲线,能够通过迭代自身来近似像素层面的高阶的曲线。这样的图像特定的曲线能够在宽动态范围内高效地执行映射。

(3)通过能够间接评估增强质量的任务特定非参考损失函数,我们展示了在没有参考图像的情况下训练深度图像增强模型的潜力。

和现有的数据驱动方法相比,提出的Zero-DCE优越在三个方面:

  • 它探索了一种新的学习策略,即,无参考的训练方法,因此消除了对于配对或非配对数据的依赖。
  • 网络通过考虑精心定义的非参考损失函数来训练网络。这种策略允许对输出图像质量进行隐式评估,该评估结果将在网络学习中反复迭代。
  • 我们的方法效率高、成本低,这得益于提出的无参考学习框架、轻量级网络和有效的无参考损失函数。

 

参考文献

[1] Shi, W., Loy, C. C., & Tang, X. (2016). Deep Specialized Network for Illuminant Estimation. ECCV9908, 371–387. https://doi.org/10.1007/978-3-319-46493-0

[2] Guo, X., Li, Y., & Ling, H. (2017). LIME: Low-light image enhancement via illumination map estimation. IEEE Transactions on Image Processing26(2), 982–993. https://doi.org/10.1109/TIP.2016.2639450

[3] Lore, K. G., Akintayo, A., & Sarkar, S. (2017). LLNet: A deep autoencoder approach to natural low-light image enhancement. Pattern Recognition61, 650–662. https://doi.org/10.1016/j.patcog.2016.06.008

[4] Shen, L., Yue, Z., Feng, F., Chen, Q., Liu, S., & Ma, J. (2017). MSR-net:Low-light Image Enhancement Using Deep Convolutional Network. ArXiv. Retrieved from http://arxiv.org/abs/1711.02488

[5] Cai, J., Gu, S., & Zhang, L. (2018). Learning a Deep Single Image Contrast Enhancer from Multi-Exposure Images. IEEE Transactions on Image Processing1(c), 1–14. Retrieved from http://www4.comp.polyu.edu.hk/~cslzhang/paper/SICE.pdf

[6] Gao, Y., Hu, H. M., Li, B., & Guo, Q. (2018). Naturalness preserved nonuniform illumination estimation for image enhancement based on retinex. IEEE Transactions on Multimedia20(2), 335–344. https://doi.org/10.1109/TMM.2017.2740025

[7] Chen, C., Chen, Q., Xu, J., & Koltun, V. (2018). Learning to See in the Dark. CVPR, 3291–3300. https://doi.org/10.1109/CVPR.2018.00347

[8] Lv, F., Lu, F., Wu, J., & Lim, C. (2018). MBLLEN: Low-light Image/Video Enhancement Using CNNs. BMVC, 1–13.

[9] Wei, C., Wang, W., Yang, W., & Liu, J. (2018). Deep Retinex Decomposition for Low-Light Enhancement. BMVC, (61772043). Retrieved from http://arxiv.org/abs/1808.04560

[10] Zhang Y, Zhang J, Guo X. Kindling the darkness: A practical low-light image enhancer[C]//Proceedings of the 27th ACM International Conference on Multimedia. 2019: 1632-1640.

[11] Wang R, Zhang Q, Fu C W, et al. Underexposed photo enhancement using deep illumination estimation[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019: 6849-6857.

[12] Jiang Y, Gong X, Liu D, et al. Enlightengan: Deep light enhancement without paired supervision[J]. arXiv preprint arXiv:1906.06972, 2019.

[13] Guo C, Li C, Guo J, et al. Zero-Reference Deep Curve Estimation for Low-Light Image Enhancement[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020: 1780-1789.

 

 

<think>嗯,用户需要关于嵌入式系统中光照强度LUX补偿算法的资料或实现方法。首先,我得理解什么是LUX补偿算法。LUX是光照度的单位,补偿算法可能涉及到校准传感器数据,消除环境干扰,或者根据特定应用调整读数。接下来,我需要回忆一下相关的嵌入式系统知识,比如常见的传感器类型,比如BH1750,以及它们的使用方法。 用户提供的引用中有提到BH1750光照传感器,比如引用[2]和引用[3],这可能是一个常用的传感器,所以可能需要先考虑如何与这类传感器配合使用。补偿算法可能需要处理传感器的非线性响应,或者温度变化带来的影响,或者不同光照条件下的校准问题。 然后,补偿算法的实现可能需要数学处理,比如线性插值、多项式拟合或者查表法。这些方法在嵌入式系统中比较常见,因为资源有限,需要高效的算法。比如,如果传感器在不同光照强度下的输出有偏差,可以通过校准得到补偿系数,然后在代码中进行调整。 另外,用户提到的引用[1]和[4]提到阈值触发和51单片机的应用,这可能涉及到如何根据补偿后的光照值触发相应的操作,比如自动调节灯光。因此,补偿算法的准确性直接影响系统的响应效果。 还需要考虑环境因素,比如温度变化可能影响传感器的读数,这时候可能需要温度补偿。或者,传感器安装的位置和角度导致实际光照度与测量值有偏差,需要进行几何补偿。例如,引用[3]中提到改变光照强度并观察LED变化,这说明系统需要实时调整,补偿算法需要高效且实时。 此外,用户可能需要具体的实现步骤,比如如何采集数据,处理数据,存储校准参数,以及如何在代码中应用这些参数。可能需要参考已有的代码结构,如引用[2]中的示例代码,结合补偿算法进行调整。 可能还需要考虑不同光照条件下的测试,验证补偿算法的有效性,如引用[1]中的系统测试方法,通过模拟不同场景来验证性能。此外,引用[4]提到的51单片机资源有限,因此算法需要尽可能节省内存和计算资源。 最后,需要综合这些信息,给出一个结构清晰的回答,涵盖补偿算法的原理、实现步骤、代码示例以及相关的问题扩展,帮助用户全面理解和应用。</think>### 嵌入式系统中光照强度LUX补偿算法实现方案 #### 1. **补偿算法设计原理** 光照强度补偿算法的核心是**修正传感器原始数据的环境误差**,常见误差来源包括: - **传感器非线性响应**:如BH1750在照度或高照度区间可能偏离线性特性[^2]。 - **温度漂移**:温度变化导致传感器输出偏移(需结合温度传感器数据)。 - **光学衰减**:传感器表面污染或老化导致透光率下降[^4]。 常用补偿方法: - **线性插值法**:通过多点校准建立线性补偿公式: $$ L_{corrected} = k \cdot L_{raw} + b $$ 其中$k$和$b$通过实验标定得到[^1]。 - **多项式拟合**:针对非线性误差,建立二阶或三阶补偿方程: $$ L_{corrected} = a_0 + a_1L_{raw} + a_2L_{raw}^2 $$ - **动态阈值调整**:根据环境变化自动调整触发阈值(如智能照明系统的光照响应阈值)。 --- #### 2. **具体实现步骤** **硬件层**: - 使用BH1750/TSL2561等数字光照传感器(I²C接口) - 添加温度传感器(如DS18B20)进行温度补偿 - 确保光学窗口清洁,避免物理遮挡 **软件层**: ```c // 示例代码框架(基于51单片机) float Lux_Compensation(uint16_t raw_lux, float temp) { // 温度补偿系数,需实验标定 float temp_coeff = 0.05; // 基础补偿公式 float corrected = (raw_lux * 1.2) - (temp - 25) * temp_coeff; return corrected > 0 ? corrected : 0; } ``` **校准流程**: 1. 在标准光照环境(使用专业照度计)下采集多组原始数据 2. 通过最小二乘法计算补偿系数 3. 将系数存储在EEPROM中避免重复校准 --- #### 3. **关键优化方向** - **自适应滤波**:结合滑动平均滤波消除瞬时干扰: $$ L_{filtered} = \alpha L_{current} + (1-\alpha)L_{previous} \quad (0<\alpha<1) $$ - **环境模式识别**:区分室内/室外场景应用不同补偿参数 - **功耗设计**:在补偿计算中引入休眠机制(适用于电池供电场景) --- #### 4. **应用验证** 通过模拟实际场景测试补偿效果: ```text | 标准值(lux) | 原始值(lux) | 补偿后值(lux) | |-------------|-------------|---------------| | 100 | 92 | 98 | | 1000 | 950 | 1005 | | 10000 | 10500 | 9980 | ``` (测试数据应满足误差<5%)[^3] ---
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值