论文阅读:Auto White-Balance Correction for Mixed-Illuminant Scenes
今天介绍一篇混合光照下的自动白平衡的文章
自动白平衡(AWB)是相机 ISP 通路中比较重要的一个模块,主要用于校正环境光照引起的色偏问题,不过常见的 AWB 算法都是基于单光照的假设去做的,然而,实际场景中都是多光源环境,这篇文章提出了一种高效的方法去处理实际场景中的多光源问题,与传统 AWB 方法的一个显著不同点在于,这篇文章不需要对光照进行估计,而是通过对一组预设的白平衡参数,将预设的白平衡参数的权重进行调节,然后加权得到混合光照下的白平衡效果,实验结果说明这种方法相比之前的单光照或者混合光照下的白平衡算法都更有效。
自动白平衡是相机 ISP 通路中的一个重要模块,ISP 通过一系列的处理模块,比如去马赛克,降噪,白平衡,tone mapping 等,将 sensor RAW 图处理得到最终的 RGB 图,白平衡处理是 ISP 通路中比较靠前的一个模块,这个模块的作用主要是为了校正环境光照引起的色偏,以模拟人眼的色彩常恒性的特点。
AWB 通常包括两个步骤,第一步是估计环境中的光源;第二步是基于环境中的光源估计,用相应的 AWB 参数进行白平衡处理。第一步是关键,准确的光源估计是白平衡是否校正成功的重要前提,因为第二步基本就是基于光源估计给出 RGB 三个通道的系数,让三个通道分别乘以这三个系数,就完成了白平衡的校正。
之前的很多 AWB 的工作都是基于单光源估计的 AWB 校正方法,这种单光源的假设对于实际场景来说,过于简单。如图一所示,图一展示了一个典型的混合光源场景,一部分是窗外的天空,一部分是室内的场景,如果用单一光源做白平衡校正,总会出现另外一部分场景出现色彩偏差的问题。
这篇文章的算法流程如图-2 所示,给定一张去马赛克之后的图,先用一组给定光照下的 AWB 参数进行处理,然后最终 AWB 的图,可以基于这组图的一个线性组合:
I c o r r ↓ = ∑ i W i ⊙ I c i ↓ (1) I_{corr \downarrow} = \sum_{i} W_i \odot I_{c_i \downarrow} \tag{1} Icorr↓=i∑Wi⊙Ici↓(1)
I c o r r ↓ I_{corr \downarrow} Icorr↓ 是最终校正后的图, W i W_i Wi 是最终融合的权重。
为了构造这样的数据对,文章作者先将一张去马赛克之后的图进行一个固定 AWB(比如日光下) 的处理得到 I i n i t I_{init} Iinit,然后构造一个映射关系,将固定 AWB 下的图映射到对应光照下的图:
I ^ c i = M c i ϕ ( I i n i t ) (2) \hat{I}_{c_i} = M_{c_i} \phi (I_{init}) \tag{2} I^ci=Mciϕ(Iinit)(2)
I ^ c i \hat{I}_{c_i} I^ci 是目标 AWB 下的图, ϕ \phi ϕ 表示一个多项式的核函数, M c i M_{c_i} Mci 表示一个映射矩阵,通过类似一个最小二乘的方法,可以得到 M c i M_{c_i} Mci 映射矩阵。
然后,基于这些 I ^ c i \hat{I}_{c_i} I^ci,我们需要进一步去学习融合权重,文章中利用了一个 DNN 模型去学习这个映射权重,为了训练这个映射网络,文章利用了一个公开的数据集,里面包含了大约 65k 的图像样本,每个样本都有一个正确的 AWB 的校正图,这个作为 GT,从这个数据里面,文章作者挑选了大概 9200 张图,然后通过前面介绍的 AWB 处理方法,得到了不同关照下的 AWB 校正图,这些光照包括 2850 Kelvin (K), 3800 K, 5500 K, 6500 K, and 7500 K,分别对应一些典型的色温场景,然后构造了如下的 loss 函数进行训练:
L r = ∥ P c o r r − ∑ i W ^ i ⊙ P c i ∥ F 2 (3) \mathcal{L}_r = \left \| P_{corr} - \sum_{i} \hat{W}_i \odot P_{c_i} \right \|_{F}^{2} \tag{3} Lr= Pcorr−i∑W^i⊙Pci F2(3)
其中, P c o r r P_{corr} Pcorr, P c i P_{c_i} Pci 分别表示 GT 图像和输入图像中抽取的图像块,$\hat{W}_i $ 表示最终需要训练学习得到的权重图,为了在最终重建的输出图中,出现色彩空间之外的颜色,文章作者对输出做了一个 cross-channel softmax 的操作。为了保证权重图的平滑性,文章作者还加了一个 TV 平滑项:
L s = ∥ W ^ i ∗ ▽ x ∥ F 2 + ∥ W ^ i ∗ ▽ y ∥ F 2 (4) \mathcal{L}_s = \left \|\hat{W}_i \ast \bigtriangledown_{x} \right \|_{F}^{2} + \left \|\hat{W}_i \ast \bigtriangledown_{y} \right \|_{F}^{2} \tag{4} Ls= W^i∗▽x F2+ W^i∗▽y F2(4)
最终的损失函数如下所示:
L = L r + L s \mathcal{L} = \mathcal{L}_r + \mathcal{L}_s L=Lr+Ls
推理的时候,文章中先用固定的 AWB 参数生成不同的 AWB 图,然后连接到一起送入网络,为了提升最终的 AWB 校正效果,文章中还试过聚合的策略,将输入的图用了三个不同的尺度,1.0,0.5, 0.25,将这三个不同尺度的输出都上采样到原始大图的大小,然后再取平均,文章还提到用导向滤波的方式进行后处理,可以得到更边缘平滑的权重图,最后的 AWB 校正图如下式所示:
I c o r r = ∑ i W i ↑ ⊙ I c i (1) I_{corr} = \sum_{i} W_{i \uparrow} \odot I_{c_i} \tag{1} Icorr=i∑Wi↑⊙Ici(1)