Sigmstar Comake D1 SSD2355 ISP API Tuning SOP之AWB INTRODUCTION
摘要:本文详细介绍了自动白平衡(AWB)的技术原理与参数调整方法。AWB通过补偿R、B增益使灰阶区域的RGB值接近,消除不同光源下的色偏。系统将画面分割为64×90区域进行统计,通过AWBAnalyzer插件可实时查看统计数据。调整界面包含多种参数设置:色温框选择、收敛阈值、算法模式(如GrayWorld、Normal等)、混光校正、特殊场景处理等。还介绍了WB增益限制、亮度权重、区域权重等进阶功
AWB INTRODUCTION¶
由于sensor上R、G、B pixel的感光特性不同,因此在不同光源下看到的灰阶会有色偏,AWB主要的目的就是希望自动找出一组Rgain、Bgain来做补偿,让画面中灰阶的地方R、G、B值尽量接近。(返回IQ Tuning Flow Chart)
AWB调整¶
AWB的统计值是将整张画面切成128×90个等分,每个等分都具有代表的R、G、B值,预设横轴有做取样来减少运算量,因此实际只有64×90个统计值。如果想查看某个场景的统计信息,可以开启AWB Analyzer插件,点击Update可更新为当时的统计信息,图表横周轴代表(R/G)×100,纵轴代表(B/G)×100,因此每个区块都能以本身的R、G、B值算出一组坐标,并将落点以绿点秀在窗口上,如下图所示。

调整界面¶
于左侧选单点选AWB即会出现AWB调整界面。










参数说明¶
-
<WBAttr>
建议整参数
AwbState : AWB状态控制选项,选择Normal时,AWB会正常运作,选择Pause时,AWB则会暂停在当时的状态,直到再次切回Normal才会继续运作。
AwbMode : WB状态控制选项,选择Auto为AWB,选择Manual为MWB。
sManual.R/GR/GB/Bgain : 当AwbMode选择Manual时,会直接套用这四个gain值,值域0 ~ 8191(1024为1倍)。
Speed : AWB收敛速度控制,值域1 ~ 100,值越大越快收敛,预设为20。
ConvInThd : 收敛区间大小控制,值域0 ~ 255,值越大越容易收敛,但容易与目标差距较大,设太小容易让AWB不稳定,预设建议值为32。
ConvOutThd : 从收敛状态跳出重算白平衡的阀值控制,值域0 ~ 255,不建议设太大,否则当灯源有些变化时白平衡无法重新计算会导致色偏,预设建议值为64。
eAlgType : 白平衡算法模式选择,共有以下四种模式:
-
GrayWorld:以所有统计值来计算WB gain。
-
Normal:以落点数最高的2 ~ 3个色温框内的统计值来计算WB gain。
-
Balance:以所有落入有效色温框的统计值来计算WB gain。
-
Focus WB gain计算会偏向单一色温为主。
eAdvType : WBAttrEx功能开关,选择Advance时WBAttrEx才有作用,预设为Default不使用WBAttrEx。
RG/BG Strength : R与B的一个global gain,会在最后算出来的R、B gain再乘上一个gain,值域0 ~ 255,128为1倍。
MaxRgain/MaxBgain : 高色温R、B gain限制,值域0 ~ 8191。
MinRgain/MinBgain : 低色温R、B gain限制,值域0 ~ 8191。
LvWeight : 各环境亮度下色温权重设定,权重越大,计算R、B gain时该色温所占的比例越高,值域1~255。
PreferR/Bratio : 各环境亮度下R、B ratio设定,此ratio会乘在目标R、B gain里,值域1 ~ 255。
u2WpWeight : 判断成为参考白点的权重,权重越高越容易被选为参考白点,值域1400,预设为100。横轴110代表AWB index0~9的色温框。

WeightWin : 将画面区分为9x9个区域,可以分别给定每个区域的权重,权重越大白平衡越会偏向将该区域做灰。值域0 ~ 16。权重大小是相对的不是绝对的,也就是全部设1与全部设16基本上是相同的。当镜头是固定的,而且很明确知道画面中哪个区域是你希望拿来做白平衡或不希望做白平衡的,就可以利用此功能做调整。
-
-
<WBAttrEx>
WBAttrEx系列参数需要在eAlgType设为Advance时才有作用,主要是让使用者可另外自定义几个特殊框,并选择是要加入还是排除落入这个特殊框的统计值,共有4组设定可供使用。
ExtraLtEnable : 特殊色温框功能开关,需设为Enable特殊色温框才有作用。
sLtInfo.WR/Bgain : 特殊色温框中心坐标所代表的R、B gain,值域0 ~ 8191,换算方式是开启AWB Analyzer分析统计值落点,将指针移到欲选择区域的中心查看坐标,假设Rx = 40、By = 60,先将坐标除以100(0.4, 0.6),再取倒数(1/0.4, 1/0.6),最后再乘上gain base 1024(WRgain = 2560、WBgain = 1706)即完成特殊框中心位置转换。
sLtInfo.AreaSize : 特殊框的宽高,值域1 ~ 32,当设32时代表从中心往上下左右延伸16的范围。
sLtInfo.bExclude : 特殊框模式选择,选择Include代表落入特殊框的统计值也会被拿来参考,选择Exclude代表落入特殊框的统计值将会被忽略。
-
<WBMultiLSAttr>
此功能需要eAlgType选择Focus时才有作用。此时AWB的R、B gain会尽量以参考白点为主,此时若遇到混光场景,离参考白点远的一方色偏会相当明显,若希望色偏减弱一些则可开启此功能,但副作用是会让其他颜色色相有些改变。下面是开启此功能前后差异比较图。


Enable : 混光色偏校正功能开关。开启时色偏区域可获得改善,但AWB做灰区域颜色会有些色偏。
Sensitive : 混光判断敏感度调整,值域1 ~ 10,值越大容易将场景判断为混光场景。
CaliStrength : 混光色偏补正强度控制,值域0 ~ 100,100是1倍,也就是CaliCcm原始强度。
CaliCcm_LowCT : 混光时,当AWB选择将高色温做灰,则会选择此CCM来减少低色温区偏色严重的问题。目前只开放第一和第三横列可调整。第二横列调整了不会有作用。此CCM强度主要套用在两混光光源分别是StartInd和EndInd时,实际套用的强度会根据两光源距离与StartInd和EndInd距离的比例来决定。
CaliCcm_HighCT : 混光时,当AWB选择将低色温做灰,则会选择此CCM来减少高色温区偏色严重的问题。目前只开放第一和第三横列可调整。第二横列调整了不会有作用。第二横列调整了不会有作用。此CCM强度主要套用在两混光光源分别是StartInd和EndInd时,实际套用的强度会根据两光源距离与StartInd和EndInd距离的比例来决定。

调整CaliCcm建议,以CaliCcm_LowCT为例:
-
将灯箱开至D65(若有更接近StartIdx的灯源也可以用该灯源),让AWB将其作灰。
-
将AWB切至PAUSE。
-
将灯箱切至F(若有更接近EndIdx的灯源也可以用该灯源),调整CaliCcm_LowCT,调整时还要时常切回之前做灰的灯源看看正常颜色有没有偏的太离谱,调整到两边都可接受即完成。
-
-
<CTMWB>
当WBAttr中的AwbMode选择CT Manual时才有效,使用者可以透过选择色温来套用对应的WB gain。
ColorTemperature : 设定指定色温。值域1000 ~ 20000。
-
<AWBStabilizer>
当环境稳定下,却发现AWB一直不断被trigger,导致画面颜色不断来回变化时,建议可以开启此功能来让AWB变化更稳定。
Enable :AWB Stabilizer的开关。
GlbGainThd :整体WB gain变化的阀值控制。当AWB在收敛状态要重新被trigger,除了满足原有的条件之外(ConvOutThd),还需要整体WB gain变化超出此阀值才会被重新trigger。值域0 ~ 512,建议此值设的与ConvOutThd相同或更小一些即可,默认值是64。
CountThd :连续判定要重新trigger AWB的次数阀值。当此值为2则须连续三次满足重新trigger的条件才会重新触发AWB,否则AWB仍会维持在稳定状态。值域0 ~ 100。建议此值不需要设太高,因为会延迟AWB被触发的反应时间。默认值为2。
ForceTriGainThd :为了避免环境光源色温瞬间大幅度变化时AWB反应时间因CountThd变慢,我们又定义了一个强制Trigger的gain阀值,只要当Gain变化满足重新trigger AWB的条件,且变化量大于此阀值,则会忽略CountThd直接trigger AWB。值域0 ~ 8191。默认值150。
-
<AWBSpecialCase>
此功能提供用者使用三个条件(分别是Group1/Group2/BvLLut)定义case,并可决定case达成时AWB对应要的行为,用来提升特定场景AWB的准确性。总共可定义四种case,每种case的效果会迭加。
CaseNum :欲定义的case数量,一组case设定就是针对一个特定场景。值域0 ~ 4,设0形同此API无效。
Group1系列参数用来定义第一种条件。使用者可定义多个zone,算法会统计落入所有zone的AWB统计值数量占全统计值数量的百分比,查表得到Group1的达标率。
Group1.ZoneNum :欲定义的zone数量,算法会分析落入所有zone的AWB统计值数量占全统计值数量的百分比。值域0 ~ 8,设0代表此条件无条件达成。
Group1.CenterX :决定每个zone的中心点在R/G-B/G plane上的x坐标。值域0 ~ 1023。
Group1.CenterY :决定每个zone的中心点在R/G-B/G plane上的y坐标。值域0 ~ 1023。
Group1.Radius :决定每个zone的半径大小。值域0 ~ 20。
Group1.CntLut.NodeNum :决定CntLut欲使用的节点数量。值域0 ~ 4。
Group1.CntLut.X :决定CntLut节点x值,代表落入所有zone的统计值总数占统计值总数的百分比。算法会分析出Group1的统计值百分比来查此表,得到Group1条件达标率Group1.CntRatio。值域0 ~ 100。
Group1.CntLut.Y :决定CntLut节点y值,代表ratio值。算法会分析出Group1的统计值百分比来查此表,得到Group1条件达标率Group1.CntRatio。值域0 ~ 100。
Group2与Group1用法相同,相关说明可参考Group1,算法会根据Group2系列设定得到Group2的条件达标率Group2.CntRatio。
BvLut让使用者多一个环境亮度的维度来定义特定场景,例如可用此条件区分户外白天和室内场景。算法会根据Bv值查表得到最终的亮度条件达标率BvRatio。
BvLut.NodeNum :BvLut节点数量。值域0 ~ 4,设0代表此条件无条件达成。
BvLut.X :决定BvLut节点x值,代表Bv。值域-81920 ~ 245760。
BvLut.Y :决定BvLut节点y值,代表达标率。值域0 ~ 1024。
每个case三种条件的达标率最终会整合成一个值,代表此case的达标率CaseRatio。

此API提供了三种mode,使用者可选择当case达成时欲执行的动作,强度则会根据CaseRatio决定。
Mode :case达成时的行为模式选择,值域0 ~ 2。
0:WeightCtrl mode
1:PreferCT mode
2:PreferGain mode
Weight :当Mode为0时有效,色温框会根据CaseRatio套用此weight设定。值域0 ~ 1024。

PreferCT :当Mode为1时有效,原来的Target WB gain会根据CaseRatio与PreferCT对应的WB gain做混和成为新的Target WB gain。值域0 ~ 20000。
PreferR/Bgain :当Mode为2时有效,原来的Target WB gain会根据CaseRatio与PreferR/Bgain做混和成为新的Target WB gain。值域0 ~ 8191。
-
<AWBStatisFilter>
此功能可根据BV设定统计值有效亮度区间来排除过暗或过亮的统计值,避免AWB受到noise或过曝区域影响。
NodeNum :设定lookup table节点数量。值域0 ~ 4,设0会使用预设有效亮度区间4 ~ 224。
LutX_BV :设定lookup table的节点x坐标,也就是BV。值域-81920 ~ 245760。
LutY_HighThd :设定lookup table的节点Y坐标,也就是最高亮度限制。统计值的RGB中只要任一值超过此限制,则该统计值即被忽略。值域0 ~ 255。
LutY_LowThd :设定另一个lookup table的节点Y坐标,也就是最低亮度限制。统计值的RGB中只要任一值低于此限制,则该统计值即被忽略。值域0 ~ 255。注意LowThd要小于HighThd。
-
<DebugLev>
AWB Debug Level : 设定AWBDebug log的输出设定。
1:show simple algo paramaters
2:always show detail algo parameters
3:show detail algo parameters
7:User Paramters
AWBInfo¶
-
<AWBInfo>
此界面可显示当下AWB相关信息,点选ReadPage可实时更新。


IsStable : 当下AWB是否在稳定状态。
WB_Rgain : 当下WB所使用的R gain。
WB_Grgain : 当下WB所使用的GR gain。
WB_Gbgain : 当下WB所使用的GB gain。
WB_Bgain : 当下WB所使用的B gain。
WB_CT : 当下判断出的环境色温。
此功能需要eAlgType选择Focus时,以下项目显示的值才有意义。
WPInd : 当下的参考白点Index。
MultiLS_Detected : 显示是否侦测出混光场景。
MultiLS_FirstLSInd : 显示第一大混光光源index×2,要除以2才是实际的光源index,例如当index是8则实际是4,当index是9实际是4.5,若有.5表示此光源判断是落在4和5色温框之间。
MultiLS_SecondLSInd : 显示第二大混光光源index×2,要除以2才是实际的光源index,例如当index是8则实际是4,当index是9实际是4.5,若有.5表示此光源判断是落在4和5色温框之间。

-
<AWBSpecialCaseInfo>
此API可以让使用者了解SpecialCase API目前各项统计信息。
Group1.Cnt : 显示各个case的Group1统计值落点总数。
Group1.CntRatio : 显示各个case的Group1统计值落点总数查Group1.CntLut后得到的Ratio。值域0~100。
Group2.Cnt : 显示各个case的Group2统计值落点总数。
Group2.CntRatio : 显示各个case的Group2统计值落点总数查Group2.CntLut后得到的Ratio。值域0~100。
BvRatio : 显示各个case 根据Bv查BvLut后得到的Ratio。值域0 ~ 1024。
CaseRatio : 显示各个case将Group1.CntRatio、Group1.CntRatio及BvRatio整合后的Ratio。值域0 ~ 100。
CaseWeight : 显示各个case透过CaseRatio得到的CaseWeight。若Mode选择不为0的case其CaseWeight会全是100,代表没有作用。
SpecialWeight : 将四组CaseWeight整合起来最终成为一组SpecialWeight。
SpecialR/Bgain : 显示各个case要与Target WB gain做混和的RB gain。
立即开始
加入Comake开发者社区
主页地址: CoMake开发者社区
SDK下载: CoMake开发者社区
文档中心: CoMake开发者社区
马上购买 : 首页-Comake开发者社区商店
更多推荐
所有评论(0)