目录
1.问题
拍照模式下白平衡增益突变
为了快速获得较好的拍照效果。拍照模式下会从sensor的binning模式下高帧率快速收敛到合适的目标亮度和白平衡增益,然后把binning模式下稳定的AE和AWB参数再转给linux系统sensor的normal进行热启动。
给到linux系统后,linux系统在前5帧左右会有一个如下图较大的增益跳变。实线为Rgain,虚线为Bgain变化趋势图。大概在10帧左右达到白平衡稳定的状态。
第一版优化分析
图1
上图可以发现:
- 绝大多数情况下,binning模式计算的白平衡和normal模式计算的白平衡增益比较接近,部分场景存在较大差距;
- 前一两帧的白平衡增益沿用binning模式计算白平衡增益,第三帧开始linux系统重新进行的白平衡增益计算;
以下表格是拍照模式下前16帧变化偏色比较明显的一个场景数据。Rtotal/Gtotal/BToal为算法识别当前色温对应的统计数据。colorindex为算法计算的当前的色温指标值。第0 1帧的白平衡增益使用的是binnning模式稳定的白平衡增益。
如表格所示,前五帧左右其统计数据和稳定的统计数据还是存在较大差异。如果用这种数据进行白平衡,计算得到的白平衡增益肯定也是会比稳定的白平衡增益相差较大,导致图像偏色。
G*256/R G*256/B分别是根据最大统计数据计算得到的增益;Rgain/GGain/BGain为白平衡模块计算你的增益

- 普通白平衡需要两帧才能更新colorindex标记。如上图,本来第六帧就应该计算得到一个比较稳定的值,但是AWB算法还是会使用colorindex=3的值进行计算得到一个差异较大的目标白平衡增益。
- 算法需要两帧判断稳定,因此,到第七帧才会计算得到一个和稳定白平衡增益接近的值。
- 普通白平衡平滑过渡流程,不会马上就更新到最新目标白平衡增益,因此如上述表格需要12帧左右才达到稳定白平衡效果。
以上因素,导致未能在10帧以内快速获取到稳定的白平衡增益。
2.反问
那么,我们不禁要问:
- 这种跳变是什么原因产生的呢?
- 如何消除或者尽可能减弱这种跳变,使得 linux 能够尽可能的快速收敛到稳定 AWB 状态?
3.分析
由以上问题,我们进行第二版的优化
第二版优化分析
先上优化前后结果对比图图:
图2
左侧图为优化后的趋势图;右侧为优化前的趋势图。由以上优化结果可知,优化前第五帧R/B Gain处于波峰或者波谷。而优化后的效果,第五帧已经基本达到稳定的白平衡状态了。
在调试过程中,发现前几帧的图像亮度对白平衡统计以及白平衡增益影响比较大。由于binning模式计算的稳定AE参数,并不能直接给到Normal模式继承使用。当前是在binning模式计算的稳定AE情况下做了一个映射,把binning模式稳定的AE映射到Normal模式后,Linux再进行AE收敛。
在其他AE参数基本不变的情况下,binning模式下AE映射系数正确与否,将影响normal模式下的AE收敛速度,并且还在一定程度上影响白平衡的收敛效果。
如下如所示,上下分别是映射系数不合适和映射系数相对正确的一个对比结果:
图3
图3的表格,exp\again\dgain\ispdgain分别表示当前帧的AE参数;Rtotal/Gtotal/BTotal表示的是AWB算法识别色温对应的统计值。G*256/R G*256/B分别是根据最大统计数据计算得到的增益;Rgain/GGain/BGain为白平衡模块计算的增益
由以上图可知:
- 前一两帧是binning模式计算的白平衡增益;
- 使用不正确的映射系数,图像比较暗。第三帧开始根据白平衡统计的数据计算的结果出现加大的误差。反映在趋势图2上即第五帧出现的波峰或者波谷;
- 使用正确的映射系数,图像趋近于稳定亮度。即使AE尚未稳定,当图像达到一个较为合适的亮度时,根据白平衡统计的数据计算的结果也能够和最终稳定的白平衡基本稳定
4.结果分析
对比结果如下:



可以看出,在白平衡参数一样的情况下,binning模式映射到normal模式下使用错误映射AE参数,导致AE参数过小,从而影响ISP Pipeline白平衡模块在Raw图中统计出来的数据存在较大误差。导致前五帧和后续帧上存在较大色差问题;而使用合适的映射系数后,所有图像色调基本一致。