本讲是Android Camera专题系列的第46讲,我们介绍Android Camera2 API专题的AWB自动白平衡,包括如下内容:

  1. 为什么要做白平衡
  2. 什么是自动白平衡
  3. Android Camera颜色处理流程
  4. AWB模式
  5. AWB Lock
  6. AWB Region
  7. AWB State
  8. Manual AWB

视频在线观看:

  • 极客笔记:极客笔记在线课程

加入知识星球与更多Camera同学交流
– 星球名称:深入浅出Android Camera
– 星球ID: 17296815

– 微信公众号:

为什么要做白平衡

人眼:在不同的光源下,人眼看到的白色物体总是白色的
图像传感器:在不同光源下,白色物体成像在Sensor上是不一样的
因此需要把Sensor的RGB相应各乘以一个系数来使得RGB相等

R’ = R x R_Gain
G’ = G x G_Gain
B’ = B x B_Gain

使得 R’=G’=B’

什么是自动白平衡

自动白平衡 (Auto White Balance): 通过算法根据统计数据自动计算出R/G/B的Gain值

Android Camera颜色处理流程

  • ISP中的Demosaic是用来做什么的
  • ISP中的CCM是用来做什么的

AWB模式

CaptureRequest#CONTROL_AWB_MODE,通过CameraCharacteristics#CONTROL_AWB_LOCK_AVAILABLE判断支持哪些Mode

CONTROL_AWB_MODE取值 描述
CONTROL_AWB_MODE_OFF AWB算法Disabled,App通过修改CCM和AWB Gain来手动控制白平衡
CONTROL_AWB_MODE_AUTO AWB算法Enabled,白平衡由算法控制,App设置的CCM和AWB Gain会被忽略
CONTROL_AWB_MODE_FLUORESCENT AWB算法Disabled,使用荧光灯作为假定的场景照明来调节白平衡,App设置的CCM和AWB Gain会被忽略,匹配CIE标准光源F2
CONTROL_AWB_MODE_WARM_FLUORESCENT AWB算法Disabled,使用暖荧光灯作为假定的场景照明来调节白平衡,App设置的CCM和AWB Gain会被忽略,匹配CIE标准光源F4
CONTROL_AWB_MODE_DAYLIGHT AWB算法Disabled,使用日光灯作为假定的场景照明来调节白平衡,App设置的CCM和AWB Gain会被忽略,匹配CIE标准光源D65
CONTROL_AWB_MODE_CLOUDY_DAYLIGHT AWB算法Disabled,使用多云白天作为假定的场景照明来调节白平衡,App设置的CCM和AWB Gain会被忽略
CONTROL_AWB_MODE_TWILIGHT AWB算法Disabled,使用黄昏作为假定的场景照明来调节白平衡,App设置的CCM和AWB Gain会被忽略
CONTROL_AWB_MODE_SHADE AWB算法Disabled,使用阴影光作为假定的场景照明来调节白平衡,App设置的CCM和AWB Gain会被忽略

AWB Lock

判断是否支持

  • 读取CameraCharacteristics#CONTROL_AWB_LOCK_AVAILABLE
    Capability为MANUAL_POST_PROCESSING 或 BURST_CAPTURE 的设备必须支持

控制AWB Lock

  • 通过控制CaptureRequest#CONTROL_AWB_LOCK完成AWB Lock,设置为TRUE后意味着AWB算法的输出会固定在最新结果
  • 只有当AWB Mode为AUTO时才能Lock,其他模式不存在Lock
  • App在Auto AWB和Manual AWB间切换时,如果发现有闪烁现象,可通过如下流程解决
    1. AWB 模式运行
    2. Lock AWB
    3. 从CaptureResult中等待Lock完成
    4. 从CaptureResult中读取WB gain和CCM
    5. 使能Manual WB并将step4读取到的CCM和WB Gain设置下去
    6. 继续调整CCM或WB Gain,进入Manual WB流程

AWB Region

判断是否支持设置AWB Region

  • 读取CameraCharacteristics#CONTROL_MAX_REGIONS_AWB
  • 大于0则表示支持控制AWB Region

设置AWB Region

  • 通过CaptureRequest#CONTROL_AWB_REGIONS来设置,坐标系同AE/AF Region

AWB State

读取CaptureResult#CONTROL_AWB_STATE

android.control.awbMode != AWB_MODE_AUTO

android.control.awbMode == AWB_MODE_AUTO

Manual AWB

手动白平衡 – 设置Gain

  • 需要将android.control.awbMode设置为OFF,android.colorCorrection.mode设置为TRANSFORM_MATRIX
  • 通过设置 android.colorCorrection.gains 来控制WB Gain: [R_gain, G_even_gain, G_odd_gain, B_gain], gain的取值范围[1.0, 3.0]

手动白平衡 – 设置CCM

  • 需要将android.control.awbMode设置为OFF,android.colorCorrection.mode设置为TRANSFORM_MATRIX
  • 通过设置android.colorCorrection.transform来控制CCM,3×3有理数矩阵,按行主顺序排列[ I0 I1 I2 I3 I4 I5 I6 I7 I8 ],每个元素的有效范围因不同的设备有差异,但[-1.5,3.0]范围内的值保证不会被裁剪。

第46讲 Android Camera2 API AWB自动白平衡相关推荐

  1. 第48讲 Android Camera2 API FD人脸检测

    本讲是Android Camera专题系列的第48讲,我们介绍Android Camera2 API专题的FD人脸检测,包括如下内容: FD Metadata FD模式 FD Results FD 实 ...

  2. 第42讲 Android Camera2 API AF自动对焦

    本讲是Android Camera专题系列的第42讲,我们介绍Android Camera2 API专题的AF自动对焦,包括如下内容: AF是什么 AF模式 AF状态 AF状态机 视频在线观看: 极客 ...

  3. 第43讲 Android Camera2 API AF自动对焦 第二部分

    本讲是Android Camera专题系列的第43讲,我们介绍Android Camera2 API专题的AF自动对焦第二部分,包括如下内容: AF Trigger AF Region AF Scen ...

  4. 第4讲 Android Camera2 API Open/Close Camera流程

    本讲是Android Camera专题系列的第4讲,我们介绍Android Camera2 API专题的Open/Close Camera部分. 视频在线观看: 极客笔记:极客笔记在线课程 会讲解如下 ...

  5. 第3讲 Android Camera2 API 概述

    本讲是Android Camera专题系列的第3讲,我们介绍Android Camera2 API概述,了解Camera2 API的核心组件,以及他们如何交互来完成Camera各种流程. 视频在线观看 ...

  6. 第37讲 Android Camera2 API 拍照打闪实战

    本讲是Android Camera专题系列的第37讲,我们介绍Android Camera2 API专题的拍照打闪实战,包括如下内容: 设置不同的Flash模式 拍照打闪流程 视频在线观看: 极客笔记 ...

  7. 第36讲 Android Camera2 API Flash闪光灯控制

    本讲是Android Camera专题系列的第36讲,我们介绍Android Camera2 API专题的Flash闪光灯控制,包括如下内容: 判断当前Camera是否支持Flash 设置Flash模 ...

  8. android camera捕捉,通过android camera2 API捕捉4:3相机图片与16:9传感器阵列相机

    我想从使用Camera2 API(Android 5.0版本中添加)的Android fron-facing相机以4:3的宽高比捕捉视频.它工作正常,除非相机有16:9传感器阵列(作为三星Galaxy ...

  9. android Camera2 API使用详解

    原文:android Camera2 API使用详解 由于最近需要使用相机拍照等功能,鉴于老旧的相机API问题多多,而且新的设备都是基于安卓5.0以上的,于是本人决定研究一下安卓5.0新引入的Came ...

  10. android camera2 API流程分析

    Android camera2 API流程分析 Android5.0之后,新推出来了一个类,android.hardware.camera2,与原来的camera的类实现照相和拍视频的流程有所不同,原 ...

最新文章

  1. [转]Tomcat启动错误的几件事
  2. java(eclipse)和数据库(mysql)的连接
  3. epub 机器人系列 阿西莫夫_艾萨克·阿西莫夫是不是穿越来的,他怎么能那么准地预言机器人,互联网技术呢?...
  4. VR 技术加上 8K 画质! 2016 年里约奥运会亮点十足
  5. 信息学奥赛C++语言: 小明的步行
  6. python时间转绝对秒数_python时间时分秒与秒数的互相转换
  7. 深度学习自学(三十九):基于对抗网络判别能力正则化的半监督生成方法
  8. 使用docker部署.net core应用
  9. [转]vc++ release 版的生成
  10. YouCompleteMe自动补全的安装配置与使用
  11. ognl表达式的小知识点
  12. 设计模式 (十六) 命令模式
  13. temp的作用c语言,temp的使用
  14. Stellarium:诱人的星相不雅察软件
  15. 【013】故宫博物院数字文物库-让文物随时可赏
  16. HMC510LP5ETR资料
  17. OS学习笔记-20(清华大学慕课)死锁和进程通信
  18. python 数列筛选_numpy ndarray 按条件筛选数组,关联筛选的例子
  19. 快来使用HTTPS吧
  20. 为什么重大疾病保险最好要选择保障终身?

热门文章

  1. switch开关语句
  2. 迪士尼无限3.0连接服务器,迪士尼无限3period;0BUG问题解决 | 手游网游页游攻略大全...
  3. android 充电模式deamon_它是首款无线充电手机,也是雷军十年前的最爱极客博物馆...
  4. SharePoint Project导入(mpp文件导入)
  5. 什么是PaaS? 平台即服务的解释
  6. 网页搜索(百度谷歌)你不得不知道的十个小技巧
  7. leetcode174.地下城游戏
  8. 央行数字货币(数字人民币)DCEP
  9. excel表格打印每页都有表头_Excel小技巧3:打印每页添加表头
  10. Lmp7721通过跨阻运放方式采集荧光信号踩坑