[Camera效果]MSM8909 AWB算法流程

本文来自于我的前同事-小卢,一个很有个性,能力又不错的年轻小伙子!
(文章已经得他本人同意分享)

MSM8909 AWB算法流程

本文介绍 MSM8909 AWB 的相关流程,在那之前,先了解 AWB 的相关概念

一. 相关概念

1. 色温

色温表示光线中包含颜色成分的一个计量单位。理论上讲,色温是将绝对黑体从绝对零度开始升温后所呈现的颜色,计量单位为开尔文(K)。绝对黑体在受热后,颜色逐渐从黑转红、转黄、转白、最后转蓝。如果某一种光源发出的光,与某以温度下黑体发出的光所含光谱成分相同,就将其称为某色温光。常见的标准色温等有:

D65:国际标准人工日光,色温 = 6500K
D75:模拟北方太阳光,色温 = 7500K
D50:模拟太阳光,色温 = 5000K
TL84:商场灯光,色温 = 4000K
CWF:商场冷白灯光,色温 = 4100K
A:黄色展厅灯光,色温 = 2860K

2. 白平衡

由于光源经常性地会带着某种颜色的光谱,因此,当白色的物体呈现在此种光源下时,它就不再是白色了。如果没有白平衡,那么在黄光下拍的图片(如 A 光)就会偏黄,在日光下拍的图片就会偏蓝,等等。为了使所拍物体呈现真正的颜色,需要把光源本身的颜色消除掉,这个操作就称之为白平衡。

二. 高通白平衡流程

白平衡的基本思路就是通过设定的统计区域统计出画面的光源分布情况,进而准确的判断出当前场景的色温,再根据色温选择对应 RGB 的补偿系数,达到消除光源颜色的目的

先整体了解 AWB 的处理流程
(mm-camera-CORE 为 3A 核心算法,具体代码实现高通不开放)

1、设置 AWB 相关参数

首先从设置 awb 参数开始,awb 模块会收到 ae 传递的 exp_idx 等参数,用于区分室内室外;接着判断是否需要 lock awb,当走 awb 时,会开始进行 awb 处理;

2、 计算 rg,bg

高通以 rg 为横坐标,bg 为纵坐标,划分整个光源区域

[Camera效果]MSM8909 AWB算法流程_第1张图片

算法会计算出画面中各个白点的落点区域,再根据参数中设定的权重,得出最终的 rg,bg 值

[Camera效果]MSM8909 AWB算法流程_第2张图片

不同的算法,会得出不同的 rg,bg,例如简单灰度世界算法,决策树算法等等。高通 AWB 采用多种算法得出不同算法下的 rg,bg,最终根据效果参数中设定的权重值决定采用何种结果。
(顺带一提,算法一直在更新,主流的算法都是根据先验知识预测结果,当算法工程师提出某种应对特殊场景的算法机制时,就需要 tuning 工程师根据实际场景以及 side effect 决定是否使用)

从上面的 log 来看,已得多种白点的加权平均分布 weighted sample average,一般而言已经可以根据该分布直接得出 final decision,但正如上所言,高通算法工程师考虑到某些特殊场景,于是在算法里加入了这些场景的检测机制,当触发这些检测机制时,会使得 weighted sample average 无效或占比极少;

例如 Green_Zone 机制(用于大面积绿色草地的场景),dominant_white_in_history 机制(该机制意义未明,触发后该机制算出的 rg,bg 会占主导),如下 log:

[Camera效果]MSM8909 AWB算法流程_第3张图片

虽然 weighted sample avg 已经推测出该光源为 TL84(4000K),但由于阈值设置不合场景,算法错误地检测出该场景为 Green_Zone,错判光源为 D50(5000K),最终使用了不合适的 r_gain,b_gain


如下 log,虽然 weighted sample avg 推测出光源为 TL84(4000K),但由于触发 history dominant white decision,该机制算出光源为 D75(7500K),导致最终的 rg,bg D75 占主导,致使算法错判场景光源为 D65(6500K)

[Camera效果]MSM8909 AWB算法流程_第4张图片

final-awb-decison 的推导可以说是 AWB 算法的核心,因为它决定了 ISP 使用多少 rgb gain 去抵消光源的影响

3、传递 AWB gain

算法得出 AWB gain 后,实际上 tuning 的工作已经完成(tuning 需要确保针对场景的 AWB gain 是合适的),接下来只要将 awb_output 输入到 ISP,ISP 会做 AE、AWB 的同步,以及准备下一次的 AWB 统计、AWB 计算等等

[Camera效果]MSM8909 AWB算法流程_第5张图片

之后的流程不熟,就不继续了。

三、总结

总的来说,AWB 是消除光源对画面颜色的影响,其作用于 sensor 的 RGB 域:

  sensor_output -> OBC(暗电流校准)-> Lens RollOff (镜头衰减校准) -> AWB 

但白平衡始终有其局限性,例如,多光源场景(前景、后景光源色温差异大),混淆色干扰(低色温蓝色场景,高色温黄色场景)等等,这些场景 AWB 算法存在瓶颈,无法完全兼顾。

你可能感兴趣的:([Camera效果]MSM8909 AWB算法流程)