An Experiment-Based Review of Low-Light Image Enhancement Methods
其他相关文章:Lighting the Darkness in the Deep Learning Era
低光照存在的挑战
背光,光照不均匀,弱光照,极低光照,彩色光,噪声等
传统方法
基于直方图的方法:原理就是将低光照图像的直方图 尽可能调整为 均匀分布,通过原始分布 到 理想均匀分布的约束,来推导像素的变换函数,完成增强。其中用到了累计直方图作为中间桥梁。但是直方图的先验假设也是很强的,在处理彩色图像的时很容易出现颜色失真,噪声等问题。
基于灰度变换的方法
- 线性变换
- 非线性变换:常用的非线性函数有 LOG 和 GAMMA 函数。仅仅使用固定的参数来增强,没有考虑到图像的全局信息,因此常常借助以下辅助手段,例如使用图像的累积概率直方图分布来自适应估计获得矫正参数等。
基于 Retinex 模型:这个模型是根据人眼颜色感知恒常特性建立,物体的颜色是由物体对不同波长的光的反射能力决定,而不是由反射光强度的绝对值决定,物体的颜色不受光照非均匀性的影响。
- 单尺度 SSR 多尺度 MSR;MSRCR 外加了颜色矫正,因为前两者都是三通道分离操作,所以颜色失真很严重,而后者效果好很多。
- 这种方法可以较好的提高对比度和亮度,且在彩色图像处理方面也有更好的优势。但早期的方法基本都是使用高斯核分别对RGB三通道做平滑以近似光照,对边缘保持能力较差,会由holo效应,或者会导致过曝(因为光照图一定是小于1的无论如何都会拉量图像)
基于频率域的方法:需要计算量大,并且变换参数,频率选择都存在很强的假设,如果设置不好效果就差
同态滤波:认为输入图像由 低频光照分量 和 高频的反射率分量,也即Retinex那一套。只不过 频域滤波也只能消除加性的 信号。因此首先在 log 域将 光照和反射率分离,然后在频率域通过高频滤波器滤波,最后还原
- 小波变换
基于融合的方法:泊松融合。在梯度域中将梯度融合
- 单帧图像融合:可以使用 CRF 相机响应模型来生成多曝光图然后融合
- 多帧图像融合:效果好但是需要同一场景的图像 不好获取
基于去雾模型的方法
深度学习
基于监督学习的方法
基于监督学习的方法大概可以分为 单阶段的 和 多阶段的网络。早期(2018年及以前)的都是单阶段的网络,一个输入,一个输出,损失函数作用于一个位置。
- 例如18年BMVC上的MBLLEN,通过精心设计的多分支特征提取融合的结构增强
这种方法完全依赖网络的拟合能力和训练数据。但是自从2019年及以后,几乎都会采用多阶段的网络,他们会利用一定的传统先验,来使网络更容易学习到低光照到参考图之间的函数映射,降低对网络参数量和规模的依赖。
- 典型的是 RetinexNet,KinD等网络。 结合 Retinex 模型的方法,增加一个光照估计阶段,然后使用一个UNET对分解的反射率图进行重建,这样的方式会比直接用UNET对低光照图矫正效果好很多。
- 基于频率分解的方法,可以使用边缘提取方法预先对图像做边缘提取,分为边缘和细节分别处理。也可以在网络结构上增加学习频率提取的结构(并列空洞卷积做差),这是20年CVPR上的文章DRBN
- 多曝光融合:AAAI20上的方法,按照单帧HDR的思路,首先对低光图乘系数,然后每个分支分别处理一个输入,并融合
- 金字塔:也有用拉普拉斯金字塔的,使用拉普拉斯金子塔来对不同频带的图像分别增强,然后恢复。
存在的问题:
成对的训练数据缺乏,使用合成数据训练又难以获得较好的泛化性
强化学习
无监督学习
使用 GAN 来消除网络对成对训练图像的依赖。由于缺乏强监督,使用单一的GAN增强,局部会有不一致的增强效果,EnlightenGAN的做法是通过一个全局和一个局部判别器结合以及感知损失结合的方式,来提高生成图像质量的稳定性。但是它在一些场景中依然存在问题。另一个增加强约束的方式是采用 cycleGAN 结构,cycleGAN的缺点是结构复杂,训练过程更不稳定。
虽然GAN的方法效果不稳定,但是不失为一种值得探索的方向
半监督
这种方法就是一部分使用 成对的图像监督 来提高网络对细节的恢复能力。另一方面使用对抗损失提高网络的泛化性
零样本学习
20年开始有文章尝试零样本的方法构建低光照增强网络,以彻底摆脱对训练数据的依赖。这种方法依赖人工设计的图像鲜艳损失指导网络训练,这就依赖于损失函数的好坏,增强效果不自然。
损失函数
- SSIM L1 L2 损失 L2平方损失有模糊效应,用L1损失细节恢复更好,SSIM 也能很好的保留结构和纹理特征
- 感知损失,即 VGG 提取特征后 衡量特征之间的相似性
- 平滑损失 : 变分损失,对梯度约束 达到一定的去噪效果
- 对抗损失
- 曝光损失:局部均值和期望曝光值之间的误差
数据集
- 合成数据集:使用gamma矫正 合成低光照数据 或者使用Retinex先分离光照然后把光照调低再还原。现在几乎不用 合成数据的方法了
- LOL
- SCIE
- MIT-Adobe FiveK:主要是用于 色调调整或者增强,但是也有被用于低光照增强的
- SID:Raw格式的数据
- SMOID
评价指标
- PSNR
- MAE
- MSE
- SSIM
- LOE
- NIQE