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

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

  1. AF Trigger
  2. AF Region
  3. AF Scene Change
  4. MF(Focus Distance)
  5. Focus Range(景深)
  6. 超焦距点
  7. Lens State
  8. Focus Distance校准质量

视频在线观看:

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

AF Trigger

CaptureRequest控制是否要触发Auto Focus

CONTROL_AF_TRIGGER取值 描述
CONTROL_AF_TRIGGER_IDLE 未触发Auto Focus
CONTROL_AF_TRIGGER_START 触发Auto Focus,如果是Manual Focus模式,触发无效。通常我们只需要在单个CaptureRequest中触发Auto Focus。如果在Repeating的CaptureRequest中设置了触发,则Auto Focus会不停地一直重复对焦
CONTROL_AF_TRIGGER_CANCEL 取消正常进行中的Auto Focus,让AF State恢复到初始状态

可以在一个CaptureRequest中同时使能AF Trigger和AE Precapture Trigger,HAL这边可能会串行完成每类Trigger

AF Regions

CONTROL_AF_REGIONS

  • 设置AF算法的ROI

  • 只有当CameraCharacteristics#CONTROL_MAX_REGIONS_AF > 0时才能设置AF Regions(通常该值是1)

  • 坐标系同AE regions逻辑

AF Scene Change

CaptureResult#CONTROL_AF_SCENE_CHANGE

  • 在当前设置的AF ROIs内是否检测到显著的场景变化,需要重新对焦了

注:并非所有设备都支持上报该值,使用前需要检查CameraCharacteristics#getAvailableCaptureResultKeys

CONTROL_AF_SCENE_CHANGE取值 描述
CONTROL_AF_SCENE_CHANGE_DETECTED 比如FOV(视场角)发生变化、场景发生明显地运动、光照发生变化
CONTROL_AF_SCENE_CHANGE_NOT_DETECTED 未检测到变化

Manual Focus

是否支持手动控制对焦距离

  • CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE

    • 如果该值为0表示不支持手动调整对焦距离

    • MANUAL_SENSOR capability的Camera该值必须 > 0

如何控制对焦距离

  • CaptureRequest#LENS_FOCUS_DISTANCE

    • 从镜头最前面的表面测量。

    • 0.0, 表示焦点无穷大

    • 取值范围是:[0.0f, android.lens.info.minimumFocusDistance]

    • 这个设置不会当帧生效,可能需要几帧,镜头才能移动到要求的焦点距离。移动过程中android.lens.state会被设置为moving

Focus Range

CaptureResult#LENS_FOCUS_RANGE

  • 当前景深范围,以(near, far)表示

  • 该值在某些设备上可能为NULL

Focus Range

超焦距点

CameraCharacteristics#LENS_INFO_HYPERFOCAL_DISTANCE

  • 当前镜头的超焦距点

  • 当你对焦在这个超焦距上时,能够得到在这个光圈和焦距组合下的最大景深范围

Lens State

CaptureResult#LENS_STATE

  • 表示当前镜头是否在移动
LENS_STATE取值 描述
LENS_STATE_STATIONARY 镜头处于静止状态
LENS_STATE_MOVING 镜头正在移动

Focus Distance校准质量

CameraCharacteristics#LENS_INFO_FOCUS_DISTANCE_CALIBRATION

  • Focus distance的校准质量,描述Focus Distance相关参数的可靠性(Focus Distance,Focus Range,HyperFocalDistance)
LENS_INFO_FOCUS_DISTANCE_CALIBRATION取值 描述
LENS_INFO_FOCUS_DISTANCE_CALIBRATION_UNCALIBRATED = 0 未校准过,Focus distance没有任何物理含义,相同的Focus Distance可能有不同的对焦结果。
CaptureRequest设置的Focus Distance与最终CaptureResult生效的Focus Distance误差不超过25%
LENS_INFO_FOCUS_DISTANCE_CALIBRATION_APPROXIMATE = 1 近似校准过,Focus Distance以屈光度来衡量。相同的Focus Distance可能有不同的对焦结果。
CaptureRequest设置的Focus Distance与最终CaptureResult生效的Focus Distance误差不超过10%
LENS_INFO_FOCUS_DISTANCE_CALIBRATION_CALIBRATED = 2 校准过,Focus Distance以屈光度来衡量。相同的Focus Distance有相同的对焦结果。
CaptureRequest设置的Focus Distance与最终CaptureResult生效的Focus Distance误差不超过5%
赞(5)
未经允许不得转载:极客笔记 » 第43讲 AF自动对焦 第二部分

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
Android Camera2参考
Android Camera2参考概述
Android Camera2参数参考
Android Camera2参数参考概述
Android Camera2指南
Android Camera2指南概述
Android Camera HAL开发
Android Camera HAL开发概述
Android Camera2 API
第2讲 Android Camera 架构介绍第3讲 Camera2 API 概述第4讲 Open和Close Camera流程第5讲 GeekCamera2介绍第6讲 Open和Close Camera代码实现第7讲 Hardware Level详解第8讲 AVAILABLE_CAPABILITIES详解第9讲 StreamConfigurationMap详解一第10讲 StreamConfigurationMap详解二第11讲 StreamConfigurationMap实战一第12讲 StreamConfigurationMap实战二第13讲 为什么需要OutputConfiguration第14讲 OutputConfiguration API详解第15讲 Surface Sharing实战第16讲 Deferred Surface实战第17讲 Reprocessable Capture Session详解一第18讲 Reprocessable Capture Session详解二第19讲 App如何实现ZSL功能第20讲 SessionConfiguration详解第21讲 createCaptureSession详解第22讲 SessionParameter实战第23讲 CaptureRequest详解第24讲 如何操作VendorTag第25讲 获取Physical Camera数据流第26讲 CameraCaptureSession详解第27讲 CameraCaptureSession.CaptureCallback详解第28讲 GeekCamera2连拍实战第29讲 SlowMotion实战第30讲 CaptureResult详解第31讲 AE自动曝光 Part 1第32讲 AE自动曝光 Part 2第33讲 AE自动曝光实战第34讲 AE手动曝光第35讲 AE手动曝光实战第36讲 Flash闪光灯控制第37讲 拍照打闪实战第38讲 通过CropRegion控制Zoom缩放第39讲 通过ZoomRatio控制Zoom缩放第40讲 Digital Zoom缩放实战第41讲 Touch AE实战第42讲 AF自动对焦第43讲 AF自动对焦 第二部分第44讲 AF自动对焦实战第45讲 手动对焦实战第46讲 AWB自动白平衡第47讲 AWB自动白平衡实战第48讲 FD人脸检测第49讲 Android13 Camera2 New APIs介绍