第46讲 awb自动白平衡 -凯发k8旗舰厅

本讲是android camera专题系列的第46讲,我们介绍android camera2 api专题的awb自动白平衡。

更多资源:

资源 描述
在线课程
知识星球 星球名称:深入浅出android camera
星球id: 17296815
wechat 极客笔记圈

为什么要做白平衡

人眼:在不同的光源下,人眼看到的白色物体总是白色的
图像传感器:在不同光源下,白色物体成像在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颜色处理流程

android camera颜色处理流程

awb模式

capturerequest#control_awb_mode,通过cameracharacteristics#control_awb_available_modes判断支持哪些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 camera awb 状态切换

android.control.awbmode awb_mode_auto

android camera awb 状态切换

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]范围内的值保证不会被裁剪。

camera课程

python教程

java教程

web教程

数据库教程

图形图像教程

办公软件教程

linux教程

计算机教程

大数据教程

开发工具教程

android camera2 api

网站地图