前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >3A之自动白平衡(AWB)篇

3A之自动白平衡(AWB)篇

作者头像
雪月清
发布2020-08-18 15:50:19
3.5K0
发布2020-08-18 15:50:19
举报
文章被收录于专栏:雪月清的随笔雪月清的随笔

在手机相机的专业模式中,可以看到有一个白平衡(WB)调节的选项

什么是AWB

人眼视觉系统具有颜色恒常性的特点,对物体的观察不受光源的影响。本质上是白色的物体,在不同色温,反射光线颜色不同的场景下,经过人眼的视觉系统矫正后还是白色;而对于Camera来说,不同色温,反射光线颜色不同,直接成像会有偏色现象发生。如下图所示,可以看到阴影区域的白色部分偏蓝:

为了在不同的色温环境下,消除光源对图像传感器成像的影响,模拟人眼视觉系统的颜色恒常性,保证在任何场景下看到的白色为正常的白色,ISP的流水线中添加了白平衡WB模块来处理色温引起的偏色问题

色温

色温是表示光线中包含颜色成分的一种计量单位,用“K”(开尔文)表示。

绝对黑体从绝对零度(-273℃)开始加温后,黑体的颜色会逐渐由黑变红,转黄,发白,最后发出蓝色光,当加热到一定温度,黑体发出的光所含的光谱成分,就成为这一温度下的色温。

如果某光源发出的光,与某一温度下黑体发出的光所包含的光谱成分相同,就称为某K色温。

如100W灯泡发出的光的颜色,与绝对黑体在2527℃时的颜色相同,那么这个灯泡发出的光的色温就是:(2527+273)K=2800K

Camera中设置AWB

Camera1中通过Paramters进行设置


// 1. get support awb mode
/**
 * @see #WHITE_BALANCE_AUTO
 * @see #WHITE_BALANCE_INCANDESCENT
 * @see #WHITE_BALANCE_FLUORESCENT
 * @see #WHITE_BALANCE_WARM_FLUORESCENT
 * @see #WHITE_BALANCE_DAYLIGHT
 * @see #WHITE_BALANCE_CLOUDY_DAYLIGHT
 * @see #WHITE_BALANCE_TWILIGHT
 * @see #WHITE_BALANCE_SHADE
 */
mParameters.getSupportedWhiteBalance();

// 2. set wb to auto
mParameters.setWhiteBalance(Parameters.WHITE_BALANCE_AUTO)
Camera2中通过CaptureRequest.Builder进行设置


// 1. get support awb mode
characteristics.get(CameraCharacteristics.CONTROL_AWB_AVAILABLE_MODES);

// 2. set wb to auto
builder.set(CaptureRequest.CONTROL_AWB_MODE, CaptureRequest.CONTROL_AWB_MODE_AUTO);

相机AWB流程

在Turning阶段准备矫正参数在不同色温下按照一定梯度拍几张白纸作为色温照,然后对色温照的R/G/B通道进行矫正,让偏色的白纸照变为白色,并记录各个通道的矫正参数(实际只需矫正R和B通道,得到Rgain,Bgain),最后利用插值得到的色温-RG-BG的曲线图,大致如下:

图片来自参考资料一

在成像阶段只要计算出当前帧图像的色温,然后利用色温曲线图获取Rgain,Bgain进行颜色矫正即可。如何准确计算色温就是一个好的基于色温估计的AWB算法的核心和竞争力的体现了。

常见的AWB图像处理算法

常见的AWB图像处理算法有基于灰度世界,完美反射,动态阈值等图像自动白平衡算法和基于色温估计的自动白平衡算法。

这里简单说说灰度世界AWB,该算法基于灰度世界假设:在一幅有着大量色彩变化的图像中,其R,G,B三个分量的平均值趋于同一个灰度K,算法流程分为三个步骤:

  1. 计算平均灰度K,两种方式:第一种直接设定固定值,取各个颜色通道的最大值的一半,即127或128;第二种是计算各个颜色通道的平均值Raver,Gaver,Baver,然后对三个均值再求平均;
  2. 计算R,G,B通道的增益;
  3. 根据增益重新计算颜色值,计算中可能存在溢出(大于255),两种处理方式:第一种直接clamp,溢出的设置为255,这种方式可能造成图像整体偏白;第二种是计算所有新颜色中R,G,B通道的最大值,然后重新做线性映射到[0, 255],这种方式可能导致图像整体偏暗,一般直接采用第一种方案

核心代码如下:

原图效果:

白平衡处理后(原图中的晚霞效果,独特的红色被修正为了普通晴天的样子,这种就算过度的修正了):

一个正常效果的例子:

灰度世界法AWB算法计算简单,在复杂的场景下能呈现较好的效果,在颜色和物体单一的情况下,通常都会白平衡失败,容易受到噪声,渐晕,有限动态范围的影响

参考文章

1. https://blog.csdn.net/wzwxiaozheng/article/details/38434391

2. https://blog.csdn.net/wzwxiaozheng/article/details/40586293

3. https://www.cnblogs.com/Imageshop/archive/2013/04/20/3032062.html

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 雪月清的随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档