一、白平衡的概念
AWB – Auto White Balance
白平衡就是:不管在任何光源下,都能将拍摄的白色物体的图像还原为白色
人眼在早晨、中午、晚上 不同色温下都能准确看到白色。 CMOS 要获得这种能力,必须对每种光源做相应的色彩校准,才能完成人眼一样的功能。这个功能叫做白平衡。
二、白平衡的原理
若何让camera sensor拍摄的图片和人眼看到的一致呢?
我们把sensor的R、G、B 分量各自乘上一个系数,使RGB 三个能量保持相同即可。
白平衡的算法就是计算R、G、B的gain 值。一般在实验室中用18%灰卡或者取第22 个灰色色块,用软件计算出R、G、B 的均值,由于G 最大,所以以G 作为目标进行补偿。
比如: 原始R =15,G=40,B=30,采用如下的方法计算白平衡的gain 值。
R_gain = 40/15
B_gain = 40/30
G_gain = 1
可以查看eeprom
Light Type: D65
rOverG = 0.465298
bOverG = 0.716520
grOverGB = 0.994135
三、白平衡的算法:
1.灰度世界法(Grey World Algorithm):
这是一种基于统计的方法,假设整个图像的平均颜色是灰色。用于校正图像中的颜色偏差,使白色区域呈现中性色调。该算法基于一个假设:在自然场景中,各种颜色的像素的平均值应该接近于灰色。
1.灰度世界算法(Gray World)是以灰度世界假设为基础的,该假设认为对于一幅有着大量色彩变化的图像, R、 G、 B 三个分量的平均值趋于同一个灰度K。一般有两种方法来确定该灰度。
(1)直接给定为固定值, 取其各通道最大值的一半,即取为127或128;
(2)令 K = (Raver+Gaver+Baver)/3,其中Raver,Gaver,Baver分别表示红、 绿、 蓝三个通道的平均值。
2.算法的第二步是分别计算各通道的增益:
Kr=K/Raver;
Kg=K/Gaver;
Kb=K/Baver;
3.算法第三步为根据Von Kries 对角模型,对于图像中的每个像素R、G、B,计算其结果值:
Rnew = R * Kr;
Gnew = G * Kg;
Bnew = B * Kb;
对于上式,计算中可能会存在溢出(>255,不会出现小于0的)现象,处理方式有两种。
a、 直接将像素设置为255,这可能会造成图像整体偏白。
b、 计算所有Rnew、Gnew、Bnew的最大值,然后利用该最大值将将计算后数据重新线性映射到[0,255]内。实践证明这种方式将会使图像整体偏暗,建议采用第一种方案。
需要注意的是,灰度世界法在某些情况下可能会产生不准确的结果,特别是在图像中存在大片单色区域或特殊光源下。在这些情况下,其他白平衡算法可能更为适用。然而,由于其简单性和有效性,灰度世界法仍然是许多图像处理应用中常用的一种自动白平衡方法。
2.白点算法(White Point Algorithm):
根据图像中的最亮像素(白点)来调整颜色,使白色区域呈现中性色调。该算法基于一个假设:图像中的最亮像素应该是白色,其互补色应该被用来平衡图像中的颜色。
1.白点检测:首先,算法会识别图像中最亮的像素,通常是具有最高亮度值的像素。这被假设为图像中的白点。
2.白点的互补色:根据色轮上的互补颜色关系,找到白点的互补色。例如,如果白点是最亮的红色,那么它的互补色将是青色。
3.调整颜色通道:使用白点的互补色来调整图像中的各个颜色通道,以达到白平衡。具体来说,将图像中每个像素的颜色通道值减去相应通道的互补色值,从而降低颜色的色调偏移。
4.限制范围:为了避免颜色通道的值超出合理范围(通常为 0 到 255),可以对调整后的像素值进行截断。
5.重建图像:根据调整后的颜色通道值,重建图像,使其呈现更准确的白平衡效果。
3.色温比例法(Color Temperature Algorithm):
根据光源的色温,调整图像中的颜色。这种方法通常使用预设的颜色温度和校正矩阵来实现。
色温比例法(Color Temperature Algorithm)是一种用于图像白平衡校正的方法,它基于光源的色温来调整图像中的颜色,以使图像呈现中性白色。色温是以开尔文(Kelvin,K)为单位来衡量光源的颜色的相对热度或冷度。色温比例法通过调整图像中的红色、绿色和蓝色通道,以便校正图像的颜色偏移。
1.确定光源的色温:首先,需要确定拍摄时的光源的色温。不同光源,如日光、白炽灯、荧光灯等,具有不同的色温。色温一般以开尔文为单位,例如,蓝天的色温约为 5500K,白炽灯的色温约为 2700K。
2.色温校正矩阵:根据已知的色温,使用预先计算的色温校正矩阵来调整图像中的颜色通道。这个矩阵会根据不同的光源和色温来进行调整,以使图像中的白色区域呈现中性。
3.颜色通道调整:将图像中的红色、绿色和蓝色通道按照色温校正矩阵进行比例调整。具体来说,增加或减少各个通道的亮度,以使图像的颜色偏移得到校正。
4.限制范围:同样地,为了避免颜色通道的值超出合理范围,可以对调整后的像素值进行截断。
5.重建图像:根据调整后的颜色通道值,重建图像,使其呈现更准确的白平衡效果。
4.最大似然估计法(Maximum Likelihood Estimation):
使用统计学方法来估计正确的白平衡值,以最大程度地减少色温偏差。
1.建立数据模型:首先,需要建立图像中像素的颜色分布模型,通常使用概率分布函数来表示。对于白平衡,可以使用多元正态分布或其他适当的分布模型。
2.定义似然函数:根据建立的数据模型,定义一个表示观测数据在不同参数下出现的概率的似然函数。这个似然函数描述了给定参数下观测数据的可能性有多大。
3.最大化似然函数:通过调整参数的值,找到使似然函数达到最大的参数值。这意味着选择使观测数据在给定参数下出现的概率最大的参数值,从而最可能地解释数据。
4.参数估计:找到最大化似然函数的参数值,这些参数即为最大似然估计的结果。这些参数将用于调整图像中的颜色通道,以实现白平衡校正。
5.光源标定法(Light Source Calibration):
它通过测量图像中已知白色物体的颜色来确定光源的色温,并进行相应的校准。这种方法适用于具有已知白色参考的场景,例如摄影棚中的标准白色板。
1.获取白色参考:在拍摄场景中放置一个已知的白色参考物体,通常是一个标准的白色板或卡片。这个白色参考应该有已知的色温,例如5000K。
2.拍摄图像:使用相机拍摄包含白色参考物体的图像,确保光照条件与实际拍摄环境一致。
3.提取参考颜色:从拍摄的图像中提取白色参考物体的颜色值,通常是在图像中选择一个代表性的白色区域,然后获取该区域的颜色通道值。
4.计算光源参数:使用已知的白色参考色温和提取的参考颜色,计算光源的颜色校正参数,如增益或偏移。
5.图像校正:将计算得到的光源参数应用于整个图像,对颜色通道进行校正,以实现白平衡效果。
6.重建图像:根据校正后的颜色通道值,重建图像,使其呈现更准确的白平衡效果。
6.基于图像分割的方法:
它将图像分割为不同的区域,然后对每个区域进行单独的白平衡调整。这种方法旨在应对图像中存在多种光源或复杂光照条件的情况,以实现更准确的白平衡效果。
1.图像分割:首先,使用图像分割算法将图像分割为不同的区域,每个区域代表了不同的颜色或光照条件。图像分割可以基于颜色、纹理、边缘等特征进行,以将图像分成相对均匀的区域。
2.区域白平衡:对每个分割后的区域进行单独的白平衡调整。对于每个区域,可以使用先前提到的其他白平衡算法(如灰度世界法、白点算法、色温比例法等)来调整颜色通道,以使每个区域的颜色达到中性。
3.区域合并:在完成单独的区域白平衡调整后,将调整过的区域重新合并成整个图像。这可以通过简单地将每个区域的调整颜色通道值组合起来,或者应用某种过渡策略来平滑区域之间的过渡。
4.重建图像:根据合并后的颜色通道值,重建图像,使其呈现更准确的白平衡效果。
四、高通实现白平衡算法的基本思路
4.1 定参考点
首先在灯箱里面不同光源环境下拍摄18%灰卡的图片,七种光源。然后计算每张图片的颜色的比值R/G 和 B/G,然后把这些点放在坐标轴上,作为参考点。
AWB参考点: 指的是不同传感器在不同光源下测得的灰色R/G 和B/G 比率。
AWB参考点的作用:计算给定场景中不同Bayer 网格统计数据和估计光源相关色温(CCT)的锚点。
4.1.2 验证参考点
logWarningMask=0x4000002
logInfoMask=0x4000002
logVerboseMask=0x4000002
enable3ADebugData=TRUE
enableTuningMetadata=TRUE
- 在100% 视野(FOV)灰卡情况下捕捉一个日志,并读取灰度世界值(RG 和 BG), 检验chromatix 工具生成的值是否与此一致.
此值作为参考
09-04 10:35:22.903 838 1139 V CamX : [ VERB][STATS_AWB] camxcsaagwv1.cpp:415: Analyze Analyze: Simple Gray
World Target Point ( 0.574335, 0.659707 )
09-04 10:35:22.953 838 1141 V CamX : [ VERB][STATS_AWB] camxcsaagwv1.cpp:415: Analyze Analyze: Simple Gray
World Target Point ( 0.575797, 0.661352 )
09-04 10:35:23.007 838 1141 V CamX : [ VERB][STATS_AWB] camxcsaagwv1.cpp:415: Analyze Analyze: Simple Gray
World Target Point ( 0.577295, 0.661002 )
- 在不同光源下(D75,D65,D50,CW,TL84,A,H)下拍摄包含MCC图的正常场景图像
检查第21 色块的R/G 和B/G 比率. R/G 和 B/G 应介于0.9 和 1.1 之间.
4.2 光源权重
在不同光源条件下,部分统计数据极有可能是灰色统计数据,而其他统计数据不太可能是灰色统计数据。例如在日光条件下,如果统计数据在日光参考点(D75、 D65 和 D50)附近,则很可能是真正的灰色统计数据。而如果统计数据在室内参考点(A 和 H)附近,则很可能是非灰色统计数据。
比较常见的如黄色皮肤容易被误判为低色温下的白点;淡蓝色的窗帘,容易被误判为高色温下的白点。而且当一张图中既有白色,也有黄色,也有蓝色的时候,是不是感觉情况就有点复杂了。这时我们需要一定的策略来正确的判断出到哪个才是真的白。
可以查看光源权重和距离权重
室外场景,在高CCT 区域的统计数据分配更高的权重.
室内场景,在高CCT 区域的统计数据分配更低的权重,低CCT区域分配更高的权重
4.3 距离权重
AWB 基于距离分配权重,并通过距离权重本身定义灰色区,从而建立了一种灵活的灰色区。
权重为零 (0) 的距离代表灰色区的边界。使用距离权重分配可以将灰色区向外延伸,形成具有极低距离权重 ( ≤0.01) 的缓冲区。当统计数据在逐帧模式下越过灰色区边界时,缓冲灰色区会使连续帧的 AWB 决策尽量保持一致。
缓冲区由距离权重统计数据过滤器定义
参考
80-nk8722-14
https://blog.csdn.net/weixin_42854120/article/details/119390029