第34讲 Android Camera2 API AE手动曝光

本讲是Android Camera专题系列的第34讲,我们介绍Android Camera2 API专题的AE手动曝光,包括如下内容:

  1. ISO/Gain控制
  2. Exposure Time曝光时间控制
  3. Frame Duration控制

视频在线观看:

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

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

ISO/Gain 控制

Static Metadata

CameraCharacteristics 说明
SENSOR_INFO_SENSITIVITY_RANGE 1.当前Camera sensor Gain可调整的范围
2.Min<=100, Max >=800
3.在Hardware Level为FULL的Camera设备上,必须包含该Metadata
SENSOR_MAX_ANALOG_SENSITIVITY 1.当前Camera sensor支持的最大模拟Gain
2.当设置的SENSOR_SENSITIVITY小于等于该值时,全部用模拟Gain,大于该值时会通过数字Gain来填
3.在Hardware Level为FULL的Camera设备上,必须包含该Metadata
CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE 1.当前ISP Gain可调整的范围
2.如果当前设备不支持RAW format buffer的输出,该值为null
3.如果当前设备支持RAW format buffer的输出,则必须填该值,如果不支持调整ISP Gain,该range会填成[100, 100]

CaptureRequest

CaptureRequest 说明
SENSOR_SENSITIVITY 1.设置给Sensor的Gain(增益)大小,这里的Gain值符合标准ISO 12232:2006
2.这里的Gain是Total Gain,可能会被Camera HAL拆成模拟Gain和数字Gain设置给Sensor
3.设置的值HAL不一定刚好能用,也就是可能会有精度误差,Camera HAL最找一个不大于目标值且与目标值最接近的设置给Sensor
4.手动AE模式下生效,自动AE该值会被AE算法的结果覆盖
5.在支持postRawSensitivityBoost的设备上,图像最终的Gain是SENSOR_SENSITIVITY乘以postRawSensitivityBoost
CONTROL_POST_RAW_SENSITIVITY_BOOST 1.该值表示Camera sensor输出RAW图给ISP后,ISP在YUV/JPEG图像上额外应用的Gain值,对RAW format buffer没有影响
2.设置的值HAL不一定刚好能用,也就是可能会有精度误差,Camera HAL最找一个不大于目标值且与目标值最接近的值进行设置
3.手动AE模式下生效,自动AE该值会被AE算法的结果覆盖
4.图像最终被应用的Gain值
YUV/JPEG:SENSOR_SENSITIVITY * CONTROL_POST_RAW_SENSITIVITY_BOOST
RAW:SENSOR_SENSITIVITY

CaptureResult

CaptureResult 说明
SENSOR_SENSITIVITY 实际生效的Sensor Gain,自动AE时这个值会填当前正在使用的
CONTROL_POST_RAW_SENSITIVITY_BOOST 实际生效的ISP Gain,自动AE时这个值会填当前正在使用的

Exposure time曝光时间控制

参数 说明
CameraCharacteristics#SENSOR_INFO_EXPOSURE_TIME_RANGE 1.Camera sensor曝光时间可调整的范围,单位是NS
2.Min <= 100 us
3.在Hardware Level为FULL的Camera设备上,Max >= 100ms
CaptureRequest#SENSOR_EXPOSURE_TIME 1.曝光时间,也就是每个像素暴露在光线下的时间,单位NS
2.手动AE模式下生效,自动AE该值会被AE算法的结果覆盖
CaptureResult#SENSOR_EXPOSURE_TIME 实际生效的曝光时间

Frame Duration控制

参数 说明
CameraCharacteristics#
SENSOR_INFO_MAX_FRAME_DURATION
1.当前Sensor支持的最大Frame Duration,单位是NS, 也就是能输出的最小帧率
2.最小的Frame Duration跟size和format有关,需要从这里获取StreamConfigurationMap.getOutputMinFrameDuration(int, Size)
CaptureRequest#
SENSOR_FRAME_DURATION
1.相邻两帧曝光开始的时间间隔,单位是NS
2.手动AE模式下生效,自动AE该值会被AE算法的结果覆盖
CaptureResult#
SENSOR_FRAME_DURATION
实际生效的Frame Duration

你可能感兴趣的:(Android,Camera2,API详解,android,java,apache)