Camera2与AF自动对焦

2023-11-30  本文已影响0人  yongbaoqiji

1. AF的光学原理

了解自动对焦,需要先了解凸透镜光学成像原理,以及对应的几个概念,如下图:

图1

焦距、物距、像距最基本的关系可以用高斯成像公式表示:
\frac{1}{u}+\frac{1}{v}=\frac{1}{f}

图2

在以上基本概念基础上,需要了解弥散圆的概念,弥散圆是物体一个点经镜片反射后落在成像平面的圆形范围,由于人眼的分辨能力有限,当这个圆半径超过人眼分辨范围半径,物体成像开始变得模糊,反之,半径越小越清晰。位于焦点前后最大分辨范围的两个容许弥散圆之间的距离称为焦深,同时存在物体光线能落在焦深范围内的最大和最小物距范围,这段距离对应被摄物体清晰的范围,就称为景深。

图3

因此,如上图,为了使得采集的图像的到最佳清晰度,自动对焦的过程,就是通过逐渐调整像距,寻找图像In Focus的过程。

2. AF对焦系统

图片4

自动对焦基本过程是:

一个相机完整的对焦控制系统如图4,由采集图像,算法处理,控制模块等构成。对焦过程是个步进搜索和收敛的过程。

这个过程AF算法通过马达控制流程朝一个方向移动镜头的位置,并将对应位置的采集帧图像送到图像处理器(ISP)处理,然后计算对应的图像对比度值或者反差值(Focus value,简称FV值),根据FV结果输出镜头下一步该往哪个方向移动多少距离,并使用电机驱动镜头到达那个位置,接着在该位置得到新采集图像,又继续计算和移动到下一步位置…如此,经过几个循环收敛,找到FV最大峰值位置,就认为对焦成功。

常见的搜索焦点的算法,如爬山算法,该算法类似爬山,通过两大步骤,先大步阶粗扫和后小步阶细扫进行搜索,最后的找到最清晰的镜头位置。如下图基于反差式自动对焦的算法示意,


图5

3. AF对焦检测

手机上自动对焦的技术有两种类型:

  1. 主动式自动对焦,如激光对焦;
  2. 被动式自动对焦,如反差式自动对焦(Contrast AF,简称CAF)和相位探测自动对焦(Phase Detection Auto Focus,简称PDAF)

主流的还是以被动式自动对焦对焦为主。在FV检测上,PDAF速度上比CAF更优优势。CAF由于需要对大量图像数据进行分析,而PDAF基于生产sensor半掩模工艺结合算法实现,工艺复杂,但计算复杂低。当光线通过PDAF相位检测设备上的传感器,如图5(1-4)表示的成像聚焦状态,可以看出两个曲线之间的相位差表示焦点的对焦的程度。
PDAF主要应用于高端数码相机和智能手机上,CDAF则主要应用于入门级数码相机和相机模块化智能手机上。

image.png

其他还有一些简单的纯软件算法实现的无参考清晰度评价函数,如基于熵统计、FFT频域以及基于空间边缘检测的算法如:

4. Camera2 AF

4.1 Camera2 AF请求

(1) CONTROL_AE_MODE

CameraCharacteristics#CONTROL_AF_AVAILABLE_MODES支持的AF控制模式。

CONTROL_AE_MODE 说明
CONTROL_AF_MODE_OFF 手动对焦模式。AF算法的结果会被忽略
CONTROL_AF_MODE_AUTO 自动对焦模式,触发对焦的时机由App决定
CONTROL_AF_MODE_MACRO 自动对焦模式,触发对焦的时机由App决定,当镜头离被摄物理很近时优先考虑这种模式
CONTROL_AF_MODE_CONTINUOUS_VIDEO 自动对焦模式,触发对焦的时机由AF算法决定,适用于录像,对焦行为应适合于高质量的视频录制;这意味着较慢的焦点移动。
CONTROL_AF_MODE_CONTINUOUS_PICTURE 自动对焦模式,触发对焦的时机由AF算法决定,适用于拍照,对焦行为应适合于静态图像捕捉;这意味着尽可能快地对焦。
CONTROL_AF_MODE_EDOF 扩展景深模式,似乎所有物体都在焦距内。

(2) AF Trigger

CONTROL_AF_TRIGGER控制是否要触发Auto Focus。

CONTROL_AE_MODE 说明
CONTROL_AF_TRIGGER_IDLE 未触发对焦
CONTROL_AF_TRIGGER_START 触发Auto Focus。通常只在单个CaptureRequest中触发Auto Focus。如果在Repeating的CaptureRequest中设置了触发,则Auto Focus会不停地一直重复对焦。Manual Focus模式无效
CONTROL_AF_TRIGGER_CANCEL 取消正常进行中的Auto Focus

(3) AF REGIONS

CONTROL_AF_REGIONS设置AF的区域。

  1. 设置AF Regions条件:

(4) AF Scene Change

CONTROL_AF_SCENE_CHANGE在当前AF Regions内检测到场景变化,需要重新对焦了。

CONTROL_AF_SCENE_CHANG 说明
CONTROL_AF_SCENE_CHANGE_DETECTED 比如FOV发生变化、场景发生明显地运动、光照发生变化
CONTROL_AF_SCENE_CHANGE_NOT_DETECTED 未检测到变化
CONTROL_AF_TRIGGER_CANCEL 取消正常进行中的Auto Focus

(5) 手动对焦

LENS_FOCUS_DISTANCE手动对焦。

  1. 手动对焦依赖:
  1. Focus Range
    CaptureResult#LENS_FOCUS_RANGE,当前景深范围,以(near, far)表示,该值在某些设备上可能为NULL。
2.2 Camera2 AF状态
CONTROL_AF_STATE 说明
CONTROL_AF_STATE_INACTIVE AF未触发对焦
CONTROL_AF_STATE_PASSIVE_SCAN AF自动触发Scan,当AF mode设置为CONTINUOUS模式时才会有这种状态
CONTROL_AF_STATE_PASSIVE_FOCUSED AF自动触发Scan后对焦成功,随时可能再次触发对焦
CONTROL_AF_STATE_PASSIVE_UNFOCUSED AF自动触发Scan后对焦失败,随时可能再次触发对焦
CONTROL_AF_STATE_ACTIVE_SCAN AF被动触发Scan(App触发),当AF mode设置为AUTO or MACRO AF mode时才会有这种状态
CONTROL_AF_STATE_FOCUSED_LOCKED AF被动触发Scan后对焦成功,只有再切换AF mode或主动afTrigger时才会再次对焦
CONTROL_AF_STATE_NOT_FOCUSED_LOCKED AF被动触发Scan后对焦失败,只有再切换AF mode或主动afTrigger时才会再次对焦

4. 参考文献:

[1] 手机是如何实现自动对焦的?
[2] 反差检测自动对焦(CDAF)与相位检测自动对焦(PDAF)原理
[3] Android Camera2 API AF自动对焦

上一篇 下一篇

猜你喜欢

热点阅读