Automatic White Balance(AWB)/Color Constancy(CC)系列论文

ISP里面有个叫自动白平衡(AWB)的算法,学术界叫色彩恒常性(CC),其实解决的是同一个问题:使得相机获取的图像和人看到的颜色是一样的。
本文主要介绍用神经网络解决该问题的方法,要想深入理解,建议读一下原论文。

有一个网站专门总结了基于学习和非学习的方法,还有各种相关数据集:http://colorconstancy.com/
有个大神专门做这个方向的:https://github.com/mahmoudnafifi

一、CCC:Convolutional Color Constancy

论文:https://arxiv.org/pdf/1507.00410.pdf
代码:未找到

论文解析:

图像中像素的颜色可以描述为两个量的乘积:反射和光照。定义I通常为黑电平矫正后的图像,W是真“白平衡”后的图像,L为光照,I中的每个RGB像素值都是该像素的“真”白平衡RGB值W与所有像素共享的RGB照明L的乘积。
在这里插入图片描述
在这里插入图片描述

将RGB图像转为带有色度的UV图像,有以下关系:
在这里插入图片描述
在这里插入图片描述
由于经过log函数,将乘除转化为加减比较方便:
在这里插入图片描述
最终问题转换为求两个值Lu和lv,由于绝对比例不知道,RGB到UV的映射是不确定的,假设L为单位范数,可以从Lu和Lv恢复相应的Lr、Lg和Lb。
在这里插入图片描述
构造I的直方图M,M(u,v)是I中接近(u,v)的像素数,如下式,方括号是指示函数,ε是bin的宽度,默认为0.025,直方图有256个bins。
在这里插入图片描述
要生成最终的直方图特征N,取L1归一化直方图计数的平方根,通常可以提高直方图特征的有效性。
在这里插入图片描述
下面是一些图像及其对数色度直方图(为了便于查看而覆盖了轴,水平= u,垂直= v)。 除了“色彩”(红色和蓝色的缩放比例)外,图像均相同。 着色图像仅通过对数色度空间中的转换影响图像的直方图。 该观察结果使我们能够使用卷积方法进行颜色校正,在该方法中,我们的算法将学习在此2D空间中定位直方图。
在这里插入图片描述
算法的工作原理是考虑图像的所有可能色调,对每个着色图像进行评分,然后将评分最高的色调作为输入图像的估计光照返回。 这听起来计算量很大,因为它需要对所有可能的色彩进行暴力搜索,在每种色彩上都应用了一些评分功能。 但是,如果评分功能是直方图块的线性组合,则这种暴力搜索实际上只是N与某些过滤器F的卷积,并且有很多方法可以提高卷积的效率。
所以最终的方法是根据输入图像I构造一个直方图N,将该直方图与一些卷积核F进行卷积,然后使用得分最高的光照Lu、Lv生成白平衡后的图像。
在这里插入图片描述
在这里插入图片描述
优化问题如下,F为卷积核,λ为平衡系数,P为概率,C为目标与预测的损失。
在这里插入图片描述
在这里插入图片描述
推理流程如下:
输入图像I被转换成一组保持比例的增强图像{I’j},这些图像突出了图像的不同方面(边缘、面片等)。这组增强图像被转换成一组色度直方图{Nj},我们学习了一组金字塔滤波器{Fj}形式的权重。直方图与过滤器卷积,然后求和,给我们的色度直方图中所有bins的分数。假设最高得分是光源的颜色,并且通过将输入图像I除以该光源来产生输出图像。
在这里插入图片描述

二、FFCC:Fast Fourier Color Constancy

论文:https://arxiv.org/pdf/1611.07596.pdf
代码:https://github.com/google/ffcc

论文解析:

现代以学习为基础的白平衡方法虽然精度高,但作为实际的白平衡算法除了精度,还要考虑算法速度,输入分辨率和输入bit数,还需要产生一些置信度给下游任务使用,此外算法还需要随着时间平滑。
Convolutional Color Constancy(CCC)是在本文工作前表现最好的benchmark,CCC的工作原理是观察到,对线性RGB图像应用每通道增益相当于诱导该图像的对数色度直方图的2D平移,这允许将颜色恒定性降低到在对数色度直方图空间中定位的任务,这是CCC成功的核心,也是FFCC技术的核心,主要区别在于FFCC不是在大对数色度平面上执行定位操作,而是在小对数色度环面上执行定位操作。
在这里插入图片描述
通过以下形象的例子来降低计算量,但是会出现一些问题:1) 像素值被重叠的形状破坏,这使得检测变得困难,2)检测必须“环绕”这个环形图像的边缘,3)而不是绝对的、全局的位置,我们只能恢复一个混叠的、不完整的位置。FFCC的工作原理是将CCC的大卷积问题(即A上的人脸检测)和该问题的混叠缩小到一个可以有效解决的小尺寸(即B上的人脸检测)。实验表明,我们可以学习一个有效的颜色恒常性模型面对困难和模糊性,该卷积分类器将使用FFTs实现和学习,因为FFT卷积的自然周期性解决了检测“环绕”环形图像边缘的问题,并产生显著的加速比。
Pipeline如下:
在这里插入图片描述
解混淆流程:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

BVM流程:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
优化目标:
在这里插入图片描述
拓展模块,提高精度:
在这里插入图片描述
在这里插入图片描述
傅里叶正则化:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
时间平滑;
在这里插入图片描述

三、C5:Cross-Camera Convolutional Color Constancy

论文:https://arxiv.org/pdf/2011.11890.pdf
代码:https://github.com/mahmoudnafifi/C5

论文解析:

提出了一种基于学习的交叉摄像机卷积颜色恒常性(C5)方法,该方法对多个摄像机的图像进行训练,从训练过程中新摄像机捕捉到的原始图像中精确估计场景的光源颜色。与先前的交叉摄像机颜色恒常性模型不同,该模型解决对来自未观察过的摄像机的测试集图像的光谱特性不可知性,C5通过传导推断的镜头来处理该问题:在测试时,提供额外的未标记图像作为模型的输入,它允许模型在推断过程中根据测试集相机的光谱特性进行自我校准。C5在多个数据集上实现了最先进的交叉相机颜色恒定性精度,评估速度快(GPU或CPU上的每幅图像分别为∼7和∼90 ms),并且需要很少的内存(∼2 MB),因此是解决移动摄影无校准自动白平衡问题的实用解决方案。
由于不同相机的光谱灵敏度不同基于学习的颜色恒定性模型在摄像头之间的通用性较差。C5通过使用两个概念来解决高精度交叉相机颜色恒定性的问题。首先,我们的系统被构造成不仅以单个测试集的图像作为输入,而且以来自测试集的一小部分附加图像作为输入,这些图像是任意选择的、未标记的、非白平衡的,这允许模型在推断过程中根据测试时相机的光谱特性进行校准,在实践中,这些图像可以只是从摄影师的“相机卷”中随机选择的图像,或者它们可以是相机制造商拍摄的一次自然场景的特定图像的固定集合,因为这些图像不需要标注,它们是大量可用的;其次,C5将目标图像和附加图像作为深度神经网络的输入,深度神经网络的输出是较小颜色恒常性模型的权重,然后使用这些生成的权重来估计目标图像的光源颜色。我们的系统是使用来自多个摄像头的标记(和未标记)图像进行训练的,但是在测试时,我们的模型能够查看来自新摄像头的一组(未标记)测试集图像。我们的超网络能够推断出产生测试集图像的新相机可能的光谱特性,并生成一个小模型,该模型已动态调整,以在应用于目标图像时生成准确的光源估计。
C5是基于CCC和FFCC算法,与CCC/FFCC模型相同,是通过学习在对数色度直方图空间中的位置来实现的,通过利用FFCC已经使用的快速卷积方法,C5能够保持FFCC的计算效率和较低的内存占用。
构造了两个直方图:一个是像素强度N0,另一个是梯度强度N1(与N0结构类似)。
在这里插入图片描述
卷积结构与FFCC相似,但与FFCC不同,C5不包括“增益G”乘法,因为它不会导致性能的一致改进:
在这里插入图片描述
正如在FFCC中所做的那样,这种卷积是通过使用FFTs来加速的,不过,与FFCC不同的是,C5使用了non-wrapped装直方图,因此,使用了non-wrapped过滤器和偏差。这牺牲了简单性和准确性的速度,并且避免了FFCC使用的复杂“去混叠”方案的需要,该方案与后面的卷积神经网络结构不兼容。
P的输出是一个heatmap,下式相当于估计uv空间中拟合高斯的平均值,用P加权。
在这里插入图片描述
在这里插入图片描述
C5网络不只是将被颜色校正的图像的对数色度直方图作为输入(其我们将称之为“查询”图像),但也会记录来自测试集的其他几个随机选择的输入图像(但没有背景照明体标签)的色度直方图。通过使用从查询图像的相机获取的附加图像生成的过滤器和偏差(而不是像以前的工作那样使用固定的过滤器和偏差),模型能够根据查询图像的特定传感器特性自动“校准”其CCC模型。这可以被认为是一个超网络,其中一个深层神经网络发出CCC模型的“权重”,CCC模型本身是一个浅层神经网络。这种方法也与Transformer方法有一些相似之处,因为CCC模型可以被认为是“关注”对数色度直方图的某些部分,因此该神经网络可以被视为一种self-attention机制。
在这里插入图片描述
该模型的核心是深度神经网络,它以一组对数色度直方图作为输入,并产生一个CCC滤波器F和偏差B作为输出。为此,我们使用了一种多编码器多解码器的U-Net结构。第一个编码器专用于“查询”输入图像的直方图,而其余的编码器将与附加输入图像相对应的直方图作为输入。
在这里插入图片描述
为了使网络能够以对其顺序不敏感的方式对附加输入图像集进行推理,我们采用了Aittala等人的置换不变池方法:我们在编码器每个分支的激活集上使用maxpooling。这种“交叉池”为我们提供了一组单独的激活,这些激活反映了一组额外的输入图像,但不知道这些输入图像的特定顺序。在推理时,这些额外的图像需要允许网络推理如何在具有挑战性的情况下使用它们。由于“交叉池”,额外图像的编码器激活取决于查询图像,因此无法为给定传感器预先计算。所有编码器的最后一层的交叉汇集特征然后被馈送到两个解码器块中。每个解码器产生CCC模型的一个组件:一个偏置映射B和两个滤波器{F0,F1}(分别对应于像素和边缘直方图{N0,N1})。根据传统的U-Net结构,我们在解码器的每一级与编码器的对应级之间使用了空间分辨率相同的跳转连接,但只针对查询输入图像直方图对应的编码器分支。我们的编码器的每个块由一组3×3 conv层、LeakyReLU、batch normalization和2×2 maxpooling组成,而我们的解码器的每个块由2×双线性上采样、3×3 conv层、LeakyReLU和instance normalization组成。当我们将双通道(像素和梯度)对数色度直方图传递给我们的网络时,我们用两个额外的“通道”来增强每个直方图,只包含每个直方图的u和v坐标,如CoordConv[50]。这种增强使得对数色度直方图之上的卷积结构能够解释与每个uv坐标相关的绝对“空间”信息,从而允许模型知道每个直方图bin的绝对颜色。
损失函数如下,其中S是一个正则化函数,它鼓励网络生成平滑的滤波器F和偏差B,从而减少过拟合并改进泛化,∇u和∇v分别是3×3水平和垂直Sobel滤波器,λF和λB分别是控制滤波器平滑度和偏移强度的乘数。
在这里插入图片描述
在这里插入图片描述

四、FC4: Fully Convolutional Color Constancy with Confidence-weighted Pooling(sRGB域)

论文:
https://openaccess.thecvf.com/content_cvpr_2017/papers/Hu_FC4_Fully_Convolutional_CVPR_2017_paper.pdf
代码:https://github.com/yuanming-hu/fc4

论文解析:
卷积神经网络(CNNs)的使用提高了颜色的稳定性。然而,patch-based cnn面临估计模糊的问题,其中面片可能包含不足以建立唯一的,甚至有限的可能的照明颜色范围的信息。具有估计模糊度的图像块不仅在照片中出现频率很高,而且严重影响了网络训练和推理的质量。为了克服这个问题,提出了一个完全卷积的网络结构,在该结构中,整个图像中的patch可以根据它们提供的颜色恒常性估计值携带不同的置信权重。这些置信权重被学习并应用在一个新的池层中,其中局部估计被合并到一个全局解中。有了这个公式,网络能够从颜色恒定性数据集自动确定“要学什么”和“如何汇集”,而无需额外的监督。
在这里插入图片描述

为了解决这个问题,提出了一个完全卷积网络,称为FC4,其中输入图像中的面片对颜色恒常性估计的影响是不同的。该影响被表示为反映用于推断照明颜色的面片值的置信权重。置信权重被集成到一个新的池层中,在这里它们被应用于局部patch估计,以确定全局颜色恒定性结果。针对这一问题,现有的基于补丁的CNNs是顺序地、单独地处理patch,而FC4同时考虑了所有的图像patch,这使得在训练过程中可以比较和学习补丁的有用性。通过这种方式,网络可以从颜色恒常性数据集中了解图像中哪些局部区域对于颜色恒常性是有用的,以及如何组合它们的信息以产生最终的估计结果。
优化公式如下,Pg为总输出,c为当前Ri的权重,g为当前Ri的输出:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、C4:Cascading Convolutional Color Constancy

论文:https://arxiv.org/pdf/1912.11180.pdf
代码:https://github.com/yhlscut/C4

论文解析:

在实践中很少有人关注易出错假设带来的挑战,即每张图像的整个场景中都存在一个独特的光谱光照。在颜色恒定数据集的标签获取过程中,通常在图像中放置一个Macbeth ColorChecker图表,其颜色被记录为地面真实照明,从而破坏了保证:所记录的地面真实代表了真实的全局照明。因此,在空间区域上,标签和真实场景照明之间的差距使得学习回归变得更有挑战性。文针对光照估计提出了一种通用的级联结构:1)集合多重相关照度假设;2)通过新颖的乘积损失实现粗到细的细化,可以容易地将其插入其他基于学习的光照估计方法中 。
类似于DS-Net方法,DS-Net有两个专家分支,首先生成两个假设,然后自动选择一个更好的假设。 C4动机是利用场景照明的多种假设来获得稳定的色彩稳定性,与DS-Net有两个主要区别。 首先,DS-Net进行判别式选择,而不是像C4模型那样共同学习发现多个照明假设之间的潜在依赖性。其次,DS-Net并行生成多个独立的照明假设,而所提出的级联网络结构中的C4方法会串行生成相关的假设,以明确地执行从粗到精的细化。
在这里插入图片描述
在这里插入图片描述

六、Deep White-Balance Editing(sRGB域)

论文:
https://openaccess.thecvf.com/content_CVPR_2020/papers/Afifi_Deep_White-Balance_Editing_CVPR_2020_paper.pdf
代码:https://github.com/mahmoudnafifi/Deep_White_Balance

论文解析:

引入了一种深度学习方法来真实地编辑sRGB图像的白平衡。摄像头捕捉传感器图像,这些图像由其集成信号处理器(ISP)渲染为标准RGB(sRGB)颜色空间编码。
大多数数码相机都提供了在图像捕获过程中调整白平衡设置的选项。 但是,一旦选择了白平衡设置并且ISP将图像完全处理为最终的sRGB编码,就很难在不访问原始未处理的原始RGB图像的情况下执行白平衡编辑。 如果WB设置错误,此问题将变得更加困难,从而导致最终sRGB图像出现强烈的偏色。编辑sRGB图像的WB的功能不仅从摄影角度来看是有用的,而且对计算机视觉应用,例如对象识别,场景理解和色彩增强。
原理如下式,f为Iwb(in)转换为Z的中间表示,gt为由Z转换为最终输出的过程。我们的目标是使函数f和gt相互独立。
在这里插入图片描述
Loss如下,P为生成的patch,hw为每个patch 的宽高,p为像素,i为Auto、Incandescent(2850K)、Shade(7500K)三种色温,C为每个P的标签:
在这里插入图片描述
网络整体架构如下图所示:
在这里插入图片描述
推理:
在这里插入图片描述
插值手动白平衡推理:
在这里插入图片描述

七、A Multi-Hypothesis Approach to Color Constancy

论文:https://arxiv.org/pdf/2002.12896.pdf
代码:https://github.com/huawei-noah/multi_hyp_cc

论文解析:

目前处理颜色恒定性问题的方法主要是学习相机特定的光源映射。虽然对相机特定的数据可以实现高精度,但这些模型依赖于相机的光谱灵敏度,并且通常对新设备的通用性较差。此外,由于问题的不适定性质,回归方法产生的点估计不能明确解释合理光源解决方案之间的潜在模糊性。论文提出了一个贝叶斯框架,通过多假设策略自然地处理颜色恒常性歧义。
首先,以数据驱动的方式选择一组候选场景光源,并将其应用于目标图像,生成一组校正后的图像;其次,使用CNN学习估计由候选者校正的图像被消色差照明的可能性;最后,该方法显式地从产生的后验概率分布学习最终的光照估计。这种似然估计学习回答一个相机不可知的问题,从而使有效的多相机训练分离光源估计从监督学习任务。
论文贡献如下:1.将AWB问题分解为一个新颖的多假设三阶段pipeline。 2.引入了多摄像机学习策略,该策略允许利用多设备数据集并通过单摄像机训练来提高准确性。 3.为新相机提供了无需训练的模型调整策略。
在这里插入图片描述
贝叶斯法则,Y为输入图像,l为估计光源:
在这里插入图片描述
建模一个观察到的图像Y的可能性模型,其中R是表面反射率,diag(l)-1Y是用光源l
校正后的图像,P(R=diag(l)-1Y)表示可能性评估校正后的图像是否真实:
在这里插入图片描述
在端到端方法中将每个候选光源的先验概率P(l)独立地建模为可学习的参数; 这有效地充当了正规化,而更倾向于现实世界中的光源。在实践中,先验函数建模还取决于环境(室内/室外)、时间、ISO等因素。然而,当前可用数据集的大小使我们无法建模更复杂的代理。为了估计光源l*,我们优化二次成本(最小均方误差贝叶斯估计),通过后验分布的平均值最小化:
在这里插入图片描述
候选选择的目标是离散特定相机的光源空间,以获得一组代表性光源(跨越光源空间)。给定从包含校准对象的图像(即标记的训练集)测量的ground-turth光源集合,我们使用线性RGB空间上的K-Means聚类计算候选光源集。使用给定相机捕获的图像Y生成一组图像,使用相机的候选光源集进行校正,输出各个光源集对应的softmax分类,最后通过加权求和得到最终光源。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
损失为arccos损失,gt光源和预测光源求损失反向传播:
在这里插入图片描述

  • 15
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Camera2 API提供了自动白平衡(AWB)功能,可以根据场景中的光线条件自动调整图像的颜色平衡。在Camera2 API中,AWB由CaptureRequest.CONTROL_AWB_MODE参数控制。常见的AWB模式有以下几种: - CONTROL_AWB_MODE_OFF:关闭AWB功能。 - CONTROL_AWB_MODE_AUTO:启用AWB功能,相机设备会自动调整图像的颜色平衡。 - CONTROL_AWB_MODE_INCANDESCENT:启用AWB功能,相机设备会自动调整图像的颜色平衡以适应白炽灯光源。 - CONTROL_AWB_MODE_FLUORESCENT:启用AWB功能,相机设备会自动调整图像的颜色平衡以适应荧光灯光源。 - CONTROL_AWB_MODE_DAYLIGHT:启用AWB功能,相机设备会自动调整图像的颜色平衡以适应日光灯光源。 - CONTROL_AWB_MODE_CLOUDY_DAYLIGHT:启用AWB功能,相机设备会自动调整图像的颜色平衡以适应多云天气下的光线条件。 以下是一个使用AWB自动白平衡的例子: ```java // 设置AWB模式为自动 mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AWB_MODE, CaptureRequest.CONTROL_AWB_MODE_AUTO); // 发送请求 mCaptureSession.setRepeatingRequest(mPreviewRequestBuilder.build(), mCaptureCallback, mBackgroundHandler); ``` 手动白平衡(Manual White Balance)是指用户可以手动调整图像的颜色平衡,以适应特定的光线条件。在Camera2 API中,手动白平衡由CaptureRequest.CONTROL_AWB_MODE参数和CaptureRequest.COLOR_CORRECTION_GAINS参数控制。手动白平衡需要先关闭AWB功能,然后设置COLOR_CORRECTION_GAINS参数为手动调整的值。以下是一个使用手动白平衡的例子: ```java // 关闭AWB功能 mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AWB_MODE, CaptureRequest.CONTROL_AWB_MODE_OFF); // 设置手动调整的颜色平衡值 Rational red = new Rational(3, 2); Rational blue = new Rational(5, 4); mPreviewRequestBuilder.set(CaptureRequest.COLOR_CORRECTION_GAINS, new RggbChannelVector(red, blue, red, blue)); // 发送请求 mCaptureSession.setRepeatingRequest(mPreviewRequestBuilder.build(), mCaptureCallback, mBackgroundHandler); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值