做AWB也有几年时间,也发现许多人,甚至做ISP相关的也不太明白AWB算法的基本流程和原理。

主要还是资料太少,而且一般芯片厂对3A算法也从不开源,想写一篇给大家扫盲一下。

先占个坑,回头写,大家有什么想知道的,可以留言

 

更新1:

很多读者是AWB的爱好者,没有标准的灯箱和灰卡做标定,徒手做的当然不太准,但很好玩是不是^^

AWB的原理就不多说了,

 我们用十分不严谨的流程和非常低的上手门槛,让大家做一个AWB,先把流程写一下:

准备:

1,手机/数码相机:最好是RGGB sensor , 支持输出RAW图的(要注意一下输出的RAW是在ISP pipeline的哪个阶段出来的,一般是sensor 直出,不太懂ISP pipeline的同学先去学习一下)

2,电脑:可以简单的输出统计值(statistics),把RAW图平均分成M*N(例如32*32)的block,并统计每个block里面平均的R/G/G/B

   a, 图像不能平均分的可以留边,影响不大

   b, 每个block的结构体最好包括以下数据,channel_sum_R/G/G/B, channel_count_R/G/G/B, 既每个通道下统计的像素点的sum和count, 那平均值就是sum/count

   c, 不一定每个pixel点都做统计,过亮/过暗的要抛弃掉,可以设置一个bright/dark_threshold, 如果RAW太大或者处理速度慢,可以隔行/列进行处理,或者把RAW先resize小图处理。

3,用手上的设备,收集不同色温下RAW图,用于标定色温线

   a, 晴天的夕阳场景是天然的色温线,夕阳是低色温,蓝天是高色温,具体的色温值,凭感觉标一下就好了

   b,  一般灯箱里面的灯是7500~2000,D75/D60/D50/TL84/CWF/A/F等,标准灯箱+标准光源,可以做多个设备的重复标定,统一流程,现在我们就一个设备不用这么严格

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐