本文将介绍Mahmoud Afifi在2019-2020年期间对图像错误白平衡问题的研究,这里的图像是指已经完成冲印 (photo-finishing) 的彩色图像。
01
背景介绍
白平衡 (White Balance):用于确保在不同光源条件下拍摄时,被摄对象呈现的色彩是一致的。在相机的ISP (Image Signal Processor) 处理流程中,通常是对传感器得到的Raw图图像色彩信息的第一步线性操作。
本文要介绍的文章处理的问题来源是:已经完成冲印的图像经过了相机ISP处理中的非线性色彩操作,使得图像中色彩值与场景光源辐照度不再呈线性响应,进而使得后期对图像色彩的白平衡处理很困难。
该问题的示例见下图1,(A)是一张白平衡错误的图像,图像色卡中的灰色系色块和场景中的桥正确情况下应呈现"白色"(对应的RGB值应该满足R≈B≈G),(B)和(C)分别是选择不同的目标作为参考白色,使用传统的白平衡算法如灰度世界法,对图像进行白平衡校正,可以看到无法让图像中所有"白色"对象满足白平衡的要求。
图1 对RGB图像进行白平衡校正
02
Mahmoud Afifi围绕该问题展开的一系列研究
论文 1
When Color Constancy Goes Wrong Correcting Improperly WhiteBalanced Images
在2019年的这篇文章,作者表示这是首次提出的这个白平衡错误图像的后期处理问题。文章1除了提供了一个处理该问题的模型,还提供了一个白平衡图像数据集,后续的实验是基于该数据集进行的。
① 关于数据集的制作
共~65K张。使用工具将来自NUS和Gehler数据集的干净Raw图渲染不同WB设置的RGB图像,产生GT图像时选择图像中色卡的中等灰度块为GT白色。最终同一张Raw图,会有多张不同WB设置的RGB图像和一张GTRGB图像,相对应地还分为了Set1和Set2。Set2图像关联的相机型号没有在Set1中出现过。
图2 对Raw图数据通过不同白平衡 (WB) 设置渲染出新的RGB图像
② 白平衡矫正模型
本文给出的处理模型图示如下图3,需要的训练集是相同场景内容下的n张错误WB设置的图像和与之关联一张GT图像,此外还需要它们之间色彩校正矩阵以及每张图像的特征表示。模型计算流程如下:
1) 提取输入图像在对数色度空间下的基于色彩分布的直方图特征RGB-uv histogram;
2) 通过PCA(主成分分析)得到紧凑的特征表示,该特征被用于寻找与输入图像色彩分布最相似的k张图像
3) 根据检索到的相似图像所关联的色彩校正矩阵,加权计算输入图像的颜色校正矩阵
上述流程的计算细节,请阅读原文。
图3 文章1的模型结构
③ 实验结果
文章1中还给出了在他们实验环境下的计算开销和存储开销。
1) Matlab的实现:测试环境Intel Xeon E5-1607 @ 3.10 GHz 和 12 兆像素图像,计算直方图特征用时0.54s,校正过程用时0.73s;
2) GPU的实现:测试环境GTX 1080和12 兆像素的图像,平均在 0.12 秒内运行
3) 存储需求:需要23.3Mb存储空间,存储的内容包括使用单精度浮点数存储62535个特征向量(对应训练数据集的62535张图像),映射矩阵,包含55个主成分特征的(60*60*3)*55的PCA系数的矩阵,60*60*3的直方图均值b。
实验的对比结果如下图4和图5,文章给出的处理结果,除了客观指标上显著优于所对比的方法,在可视化的图像展示中,可以看到,确实有效地处理了错误白平衡引起的图像色偏问题。看起来效果还是挺好的。在我的理解下,因为每个人有不同的审美,对白平衡这类图像色彩校正的问题,对其效果的评价是件很主观的事。
图4 文章1量化实验对比结果
图5 文章1可视化对比结
论文 2
Deep White-Balance Editing
本文是2020CVPR的oral文章。提出了一个DNN模型用来处理白平衡错误的RGB图像,并且还能让使用者自由编辑RGB图像白平衡设置。文章一直在强调的点是希望在Raw域里去进行白平衡重新渲染。这个想法是很自然的,因为文章处理的问题的关键就是图像获取不到原始的Raw图,所以难以进行正确的白平衡。
① 模型介绍
本文DNN的数学模型可以抽象为下式,F是一个未知的重建函数,目标是将输入的RGB图像逆变换到对应Raw图,G是未知的渲染函数,将Raw图渲染到不同白平衡设置的RGB图像。F和G函数要彼此独立。
实际的模型如下图6,基本结构参考U-Net,但本文模型是由一个编码器和三个解码器一起构成的,三个解码器分别用于(1)白平衡校正;(2)indoor(室内)的白平衡;(3)outdoor(室外)的白平衡。混合(2)(3)indoor和outdoor输出,使用户能够产生不同的白平衡效果图像。
图6 文章2的模型结构
② 模型细节
A. 在每轮训练中,随机从每张训练图像和每个解码器对应的GT图像中选择四个128*128图像块(RGB图像),因为模型需要的是色彩分布信息,最终目的是需要从DNN模型的输入和输出图像计算色彩转换矩阵,因此输入和输出图像并非全图。
B. 损失函数选择L1损失,作者说采用L2损失效果差不多。公式如下
P和C分别对应训练图像块和GT图像块,i∈{A,T,S}对应不同解码器输出结果。通过该式可以看到,损失函数使用到了每个解码器的结果,梯度反向传播时通过了skip-layer层,聚合回模型的编码器。
C. 训练集随机选择文章1提供的数据中Set 1中前两个分区的12,000张图片作为训练集,剩下的为测试集Set 1-Test,Set 2只用于测试。
D. 测试时,将所有输入图像的最大尺寸调整为656像素的倍数,因此有四层2*2的max-pooling),通过模型得到对应白平衡的输出图像。计算输入和输出图像的色彩转换矩阵M(同文章1),作用于原始分辨率的输入图像上,得到最终的重现WB 的输出结果。
E. 用户编辑白平衡校正结果的实现,对indoor和outdoor解码器最终获得的图像,通过简单的线性插值就可以得到在indoor和outdoor色温范围内的图像。插值系数公式如下, t是用户指定的色温,t(S)代表模型outdoor输出对应的色温,t(T)代表indoor输出对应的色温,
该过程示意图如下图 7。
图7 文章2模型提供的白平衡编辑功能的示意图
③ 实验结果
如下表所示,蓝色栏为测试数据集的选择,其中第二栏和第三栏的数据集所关联的相机型号(图像来源)是与训练集完全不同的,可以看到,与文章1的”KNN-WB“相比,本文方法的泛化性更好!
此外,文章对比了模型架构设计的影响,得出的结论是将本文模型完成的三个白平衡校正任务分别用独立的U-Net完成,效果会变差。
图8 文章2的定量分析
图9 文章2的可视化对比结果
03
总 结
从Mahmoud Afifi在2019-2020年期间工作中,留下深刻印象的有以下几点内容:
1) 白平衡是ISP流程在Raw图空间对色彩的第一步校正,且是线性操作。而后续冲印完成的RGB图像对场景辐照度呈非线性关系。
2) 辐射校正 (Radiometric Calibration) 任务处理的问题是线性化冲印完成的RGB图像,这可以辅助一些需要图像对场景辐照度是线性响应的CV任务(例如,光度立体、图像去模糊、HDR成像)
3) 对图像的色彩转换,可以考虑先使用核函数映射到高维空间,常用多项式核函数
4) U-Net模型多次作为图像处理任务基本框架
5) 模型在训练和测试的时候,会遮盖图像中的色卡。
参考文献:
1. Mahmoud Afifi, Brian Price, Scott Cohen, and Michael S Brown. When color constancy goes wrong: Correcting improperly white-balanced images. In CVPR, 2019.
2. Mahmoud Afifi and Michael S Brown. Deep white-balance editing. In CVPR, 2020.
关 注 我 们 
实验室网站:http://viplab.fudan.edu.cn/
OpenASIC官方网站:www.openasic.org
知乎专栏:http://zhuanlan.zhihu.com/viplab
微信公众号:OpenASIC
继续阅读
阅读原文