我是靠谱客的博主 笑点低小笼包,最近开发中收集的这篇文章主要介绍第43讲 Android Camera2 API AF自动对焦 第二部分,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本讲是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

超焦距点

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%

最后

以上就是笑点低小笼包为你收集整理的第43讲 Android Camera2 API AF自动对焦 第二部分的全部内容,希望文章能够帮你解决第43讲 Android Camera2 API AF自动对焦 第二部分所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部