第31讲 Android Camera2 API AE自动曝光 第1部分

您所在的位置:网站首页 曝光参数设置 第31讲 Android Camera2 API AE自动曝光 第1部分

第31讲 Android Camera2 API AE自动曝光 第1部分

2024-07-17 12:34| 来源: 网络整理| 查看: 265

本讲是Android Camera专题系列的第31讲,我们介绍Android Camera2 API专题的AE自动曝光第1部分,AE自动曝光包括如下10部分内容,第一部分介绍前5讲:

AE是什么3A总开关AE模式AE状态拍照前AE测光曝光补偿(EV)AE LockAE状态转换AE测光区域帧率控制

视频在线观看: 

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

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

AE是什么

AE(Auto Exposure)/AEC(Auto Exposure Control)自动曝光

AE 算法的主要工作原理

实时获取输入图像的统计信息并与设定目标亮度进行比较,而动态调节 sensor 的曝光时间和增益以及镜头光圈大小以达到实际亮度与设定目标亮度接近

AE是什么

AE是什么

Android中3A总开关

CaptureRequest#CONTROL_MODE

读取CameraCharacteristics#CONTROL_AVAILABLE_MODES来判断支持哪些Control Mode

CONTROL_MODE取值描述CameraMetadata#CONTROL_MODE_OFFManual 3A,3A参数完全由App决定;为了快速响应从OFF切到AUTO模式,有可能3A算法还在运行,只是结果不会使用(依赖HAL的实现)CameraMetadata#CONTROL_MODE_AUTO3A参数是由3A算法计算出来,触发3A算法运算可以是App,也可能是HAL自动触发CameraMetadata#CONTROL_MODE_USE_SCENE_MODE3A参数由Scene Mode(比如ACTION,NIGHT, BEACH等)决定,但有一个例外:当Scene Mode为FACE_PRIORITY时,3A参数还是由3A算法决定CameraMetadata#CONTROL_MODE_USE_EXTENDED_SCENE_MODE3A参数由Extended Scene Mode决定,比如BOKEH。 API 30新增该ModeCameraMetadata#CONTROL_MODE_OFF_KEEP_STATE跟OFF模式类似,区别在于3A参数被锁定在上一个模式的最新值上 AE模式

CaptureRequest#CONTROL_AE_MODE

只有当CaptureRequest#CONTROL_MODE为AUTO时设置的值才生效

当前平台支持哪些值:读取CameraCharacteristics#CONTROL_AE_AVAILABLE_MODES

行为

当设置为OFF模式时:AE算法不生效,通过CaptureRequest#SENSOR_EXPOSURE_TIME, CaptureRequest#SENSOR_SENSITIVITY, CaptureRequest#SENSOR_FRAME_DURATION控制曝光

当设置为非OFF模式时(CONTROL_AE_MODE_ON*):手动曝光参数不生效,会被AE算法的结果覆盖

当选择带有FLASH的模式时:表示FLASH由AE来控制,CaptureRequest#FLASH_MODE设置的参数不生效

CONTROL_AE_MODE取值描述CONTROL_AE_MODE_OFF手动曝光模式。 Hardware Level为FULL的CameraDevice必须支持;Hardware Level为LEGACY的CameraDevice不支持;Hardware Level为LIMITED的CameraDevice同时支持MANUAL_SENSOR capability也必须支持CONTROL_AE_MODE_ON自动曝光模式,所有设备必须支持CONTROL_AE_MODE_ON_AUTO_FLASH与ON模式类似。在暗环境下会控制闪光灯打闪CONTROL_AE_MODE_ON_ALWAYS_FLASH与ON模式类似,在拍照时(STILL_CAPTURE)一定会让闪光灯打闪CONTROL_AE_MODE_ON_AUTO_FLASH_REDEYE与ON_AUTO_FLASH类似,会自动消除红眼CONTROL_AE_MODE_ON_EXTERNAL_FLASH告诉Camera设备外部闪光灯(不受Camera系统控制)已经打开,需要快速进行重新测光。外部闪光灯关闭后,需要切到其他ON模式 AE状态

CaptureResult#CONTROL_AE_STATE表示AE算法当前帧的状态。

CONTROL_AE_MODE取值描述CONTROL_AE_STATE_INACTIVEAE算法未激活状态,每次切换AE模式 / CONTROL_MODE / CONTROL_SCENE_MODE时,AE状态都会重置到CONTROL_AE_STATE_INACTIVE,但在CaptureResult中不一定能看到这种状态CONTROL_AE_STATE_SEARCHINGAE算法正在收敛过程中,正在调整曝光参数,在CaptureResult中不一定能看到这种状态CONTROL_AE_STATE_CONVERGEDAE算法收敛完成CONTROL_AE_STATE_LOCKED当前的AE参数固定不变了,被锁住了,是由CONTROL_AE_LOCK来控制的CONTROL_AE_STATE_FLASH_REQUIREDAE算法收敛了,但拍照时需要打闪以获得更好的图像亮度CONTROL_AE_STATE_PRECAPTUREAE算法进入precapture状态,可以将CONTROL_AE_PRECAPTURE_TRIGGER设置为START来触发,打闪测光或消除红眼时需要 拍照前AE测光

CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER标识是否触发拍照前的测光动作:

在Flash为不OFF时,需要在拍照前需要触发测光动作,用来估计场景亮度和最终打闪需要的闪光灯功率

在Hardware Level为LEGACY的设备上,Camera HAL自己完成测光动作,不需要App参与,其他Hardware Level的设备都需要App参与

App只能在单个CaptureRequest中设置该参数,设置完后需要等待测光完成才能进行下一步动作(比如拍照)

测光完成后,Camera HAL内部为了给接下来的拍照,曝光可能会把AE锁住,因此如果App接下来不拍照,需要主动让AE恢复正常流程

< API 23 : 设置CONTROL_AE_LOCK为TRUE后,再设置CONTROL_AE_LOCK为FALSE

>= API 23 : 设置为CONTROL_AE_PRECAPTURE_TRIGGER为CANCEL

支持同时对AE和AF进行preCapture trigger

CONTROL_AE_PRECAPTURE_TRIGGER取值描述CONTROL_AE_PRECAPTURE_TRIGGER_IDLE没有触发AE preCaptureCONTROL_AE_PRECAPTURE_TRIGGER_START触发AE preCapture测光操作CONTROL_AE_PRECAPTURE_TRIGGER_CANCEL取消AE preCapture测光,回到AE初始状态。如果AE preCapture测光已经完成,该动作会将AE状态切到初始状态


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3