跳转至

一、对焦、调焦和变焦

首先,对焦 = 调焦。其次,对焦(focus)是指通过调节镜头对焦组镜片,确保拍摄图像清晰的操作。最后,变焦(zoom)是指改变镜头焦距,以获取不同大小的取景视野和透视感的操作 来源

对焦:对手机来说,对焦仅仅是实现物距跟像距的变化,达到共轭关系,使得成像清晰,这是通过手机里面的音圈马达驱动整个镜头组移动来实现的,限于手机体积只能达到这样的水平。变焦:手机摄像头其实是多个棱镜片组成的(比如某机型由 6 片塑料棱镜组成镜头模组),限于手机体积,我们没办法改变棱镜片之间的距离,所以改变不了手机的焦距——这也就是手机只能做到数码变焦(其实就是把拍的照片单纯放大,越大成像越不清晰),而光学变焦目前还没有谁成功在手机上运用 来源

不应将固定焦距镜头与定焦镜头相混淆:

  • 固定焦距镜头能够针对不同距离调节镜头焦距;
  • 定焦镜头则设计用于单一、特定的工作距离(示例包括多款远心镜头和显微镜物镜)。

二、成像与光学公式

2.1 成像公式

成像公式,即透镜成像公式、高斯成像公式 来源

\[ \frac{1}{v} + \frac{1}{u} = \frac{1}{f} \]

其中,\(v\) 为像距,\(u\) 为物距,\(f\) 为焦距。

AF_成像公式图解.png

设直线 \(l_1\) 的解析式为 \(y=k_1 x\),直线 \(l_2\) 的解析式为 \(y=k_2 x+b\)。依题意,将 \(A(-u,c),\ C(0,c),\ F(f,0)\) 代入相应解析式得方程组:

\[ \begin{cases} c = -u \cdot k_1 \\ c = b \\ k_2 f + b = 0 \end{cases} \]

解得:

\[ \begin{cases} k_1 = -(c/u) \\ k_2 = -(c/f) \end{cases} \]

由于 \(l_1\)\(l_2\) 交于点 \(A'(v,-d)\),故:

\[ -(c/u)v = -(c/f)v + c \]

\(uvf \neq 0\) 的条件下,有 \(\dfrac{1}{v} + \dfrac{1}{u} = \dfrac{1}{f}\)

  • 人眼像距固定,因此需要通过调焦的方式(即改变 \(f\))来使物体变得清晰,这种方式 FOV 不变 来源
  • 定焦镜头焦距固定,因此需要通过变焦的方式(改变 \(u\))来使物体变得清晰,这种方式会改变 FOV。
  • 变焦镜头焦距和像距都可变,可用镜筒的延伸来调节里面各组镜片之间的距离,取得不同的放大或缩小效果。分为内变焦和外变焦:内变焦是内部镜片移动、镜头长度不变(如佳能小白),密封性较好;外变焦就是镜头能变长变短那种 来源

AF_变焦镜头.png

变焦镜头可以改变 FOV,从而实现不同场景的拍摄。相比于定焦后裁切,变焦后避免了像素的损失。需要具体情况具体分析的是:观察同样的对象时,视场角变小,同样的光通量下成像的面积变大、照度也变低,图像亮度会变低;此外景深也增加了。

2.2 FOV

视场角分物方视场角和像方视场角。一般光学设备的使用者关心的是物方视场角。对于简单薄凸透镜,物方视场角和像方视场角是一样的。

AF_视场角.png

\[ AFOV[\degree] = 2 \times \tan^{-1}\left(\frac{h}{2f}\right) \]

注:图中的 \(h\) 应为 \(h/2\)。从推导过程可以看出,FOV 特指观察无限远物体时的视场角,A 表示 angle。

固定焦距的镜头要改变 FOV,从公式可知:

  • 使用更短焦距的镜头,视场角更广;
  • 较大的传感器会产生较大的视场;
  • 更改镜头到物体之间的工作距离——让镜头远离物体平面可增大视场。

根据 \(h\) 选择的不同,可分为水平视场角、垂直视场角和对角线视场角(默认)。

AF_视场角类型.png

  • 标准镜头:视角 45° 左右,使用范围较广 来源
  • 远摄镜头:视角 40° 以内,可在远距离情况下拍摄。
  • 广角镜头:视角 60° 以上,观察范围较大,近处图像有变形。

AF_镜头类型.png

例:135 相机,焦距为 50mm,则

\[ fov = 2 \cdot \tan^{-1}\left(\frac{43.3}{2 \times 50}\right) = 46.82° \]

2.3 FOVC

AF_FOVC补偿.png

如前所述,像距变化导致的 FOV 变化,这将导致对焦过程中出现镜头的呼吸效应。FOVC 这个功能就是为了补偿 FOV 的变化,针对不同的对焦距离,做不同程度的裁切:

AF_FOVC裁切.png

  • [ ] 实际工程中是如何标定 FOVC 补偿系数的?
  • [ ] 手动调整对焦距离,还是有 FOV 变化

液态镜头马达不需要 FOVC(实际手体验确实没有 FOV 变化),理论上只要光心到成像平面的距离不变,都不会有 FOV 的变化。

2.4 等效焦距

等效焦距换算:简单地说,就是以 135 相机作为一种标准,把非 135 规格相机的焦距折算成 135 相机的焦距。直接等效的是 FOV,焦距则是间接等效出来的。具有相同等效焦距的设备,其 \(h/f\) 的值应该是相同的。

\[ FOV[\degree] = 2 \times \tan^{-1}\left(\frac{h_1}{2f_1}\right) = 2 \times \tan^{-1}\left(\frac{h_2}{2f_2}\right) \]
\[ \Rightarrow f_1 = h_1 \cdot f_2 / h_2 \]

其中,\(f_1\) 为等效焦距,\(h_1 = 43.3\text{mm}\)\(f_2\) 为实际焦距,\(h_2\) 为实际画幅。焦距系数为:

\[ n = f_1 / f_2 = h_1 / h_2 \]

幅的电子感光元件的尺寸和传统 135 胶片一样大,也就是 24×36mm,对角线长度 43.3mm,折合 1.7 英寸。半幅(APS-C 画幅)尺寸各家略有不同,大致有 1.3 到 1.6 的转换系数(尼康、索尼 ×1.5,佳能 ×1.6)来源

AF_等效焦距换算.png

AF_画幅尺寸.png

常规的 1 英寸代表长度为 25.4mm。由于电子管时代的遗留问题,相机传感器的 1 英寸代表长度为 16mm,即为 1.6 倍关系。小于等于 1 英寸用 16mm,大于一英寸用 25.4mm。但各家现在并不是把"1 英寸 = 16mm"奉为圭臬,而是以"1/2.0 英寸"为分界线:CMOS > 1/2 英寸,1 英寸 = 16mm;CMOS < 1/2 英寸,1 英寸 = 18mm 来源

某主摄 IMX989,光圈 F1.9,等效焦距 23mm,则实际焦距约为:

\[ 23 \times 16 / 43.3 = 8.5\text{mm} \]

2.5 弥散圆直径

来源

由于人眼分辨能力(视力)的局限,如该圆足够小,就被看成一点,该点就是容许弥散圆或叫容许不清晰圆。确认容许弥散圆直径前,有三个前提条件需要确认:

  1. 明视距离:在合适的照明条件下,眼睛最方便、最习惯的工作距离,约 25 厘米。这时人眼的调节功能不太紧张,可以长时间观察而不易疲劳 来源。一般把人的视觉极限定为 1 分,即 0.0003 弧度(1°=60′,1′=60″)。
  2. 相片尺寸。
  3. 底片尺寸。

这里以欧美人的 400mm 为标准,也即在 400mm 的距离上观看照片,莱卡的 24×36mm 相机公认的放大倍率为 3.7(在相片洗到 9×14cm 大小的时候):

\[ 400\text{mm} \times 0.0003 = 0.12\text{mm} \]
\[ 0.12\text{mm} / 3.7 \approx 0.032\text{mm} \approx 1/30.8\text{mm} \approx 1/30\text{mm} \]

AF_弥散圆推导.png

实际拍出来的照片,我们会感觉景深比这个计算出来的大,我认为是因为这里容许弥散圆直径给得太苛刻的缘故 来源

推导某主摄(163×75mm,13.1mm×9.8mm,300mm):

\[ 75 / 9.8 = 7.65 \]
\[ 300 \times 0.0003 / 7.65 = 0.0118\text{mm} \approx 12\mu\text{m} \]

IMX989 的单像素尺寸约 1.6μm,日常拍摄时四合一等效约 3.2μm,小于弥散圆直径。所以现在手机的像素总能满足足够小的要求。

2.6 景深 DOV

Depth of View,景深,指弥散圆小于容许弥散圆的区间 来源

AF_景深示意.png

AF_景深公式图.png

\[ \Delta L_1 = \frac{F\delta L^2}{f^2 + F\delta L} \]
\[ \Delta L_2 = \frac{F\delta L^2}{f^2 - F\delta L} \]
\[ \Delta L = \Delta L_1 + \Delta L_2 = \frac{2f^2 F\delta L^2}{f^4 - F^2 \delta^2 L^2} \]

其中 \(F\) 为镜头拍摄的光圈值,\(\delta\) 为容许弥散圆直径,\(L\) 为对焦距离。根据公式可得:

  1. 镜头光圈:光圈越大,景深越小;光圈越小,景深越大。
  2. 镜头焦距:镜头焦距越长,景深越小;焦距越短,景深越大。
  3. 拍摄距离:距离越远,景深越大;距离越近,景深越小。

2.7 等效光圈与虚化指数

为了让不同幅面的相机在拍摄同样构图的画面时得到同样的景深效果,参考等效焦距的说法,提出了等效光圈值

\[ f_e = F / D \]

其中,\(F\) 为光圈系数,\(D\) 为画幅面积 来源

景深是为了衡量物体的虚化程度的量。容许弥散圆直径是绝对量,于是我们以不同的距离观察照片感觉到"景深"就不同了。提出了虚化指数这一相对量,的确能更好地表征虚化这一主观感受。

AF_虚化指数.png

设胶片对角线长度为 \(A\),固定焦距 \(f\),其中常系数 \(\alpha = f/A\)。根据三角形得:

\[ \frac{\delta}{D} = \frac{v_0 - v}{v} \tag{1} \]

通过成像公式得:

\[ v = \frac{fu}{u-f} \tag{2} \]

带入等效光圈和光圈系数公式,得 来源

\[ b(x) = \frac{\delta}{A} = \frac{\alpha}{F} \left| \frac{u_0(u - \alpha A)}{u(u_0 - \alpha A)} - 1 \right| \]

若对焦距离 \(u_0 = 5\text{m}\),固定等效焦距因子 \(\alpha = 1\),固定全画幅幅面 \(A = 43\text{mm}\)

AF_虚化作图.png

通过公式作图可获取结论:

  • 光圈越大,虚化效果越好。
  • 如果预先对焦到无穷远的话,那么景深范围就没有这么大了。这就是"超焦距"这个名字的由来。
  • 焦距越长,虚化效果越好。
  • 画幅大的虚化效果好。
  • 在把物体拍成同样大小的前提下,焦距越长虚化效果越好。
  • 离主体越近,虚化效果越好。

三、对焦算法

3.1 机制

AF 的目的是确定实现对焦的最佳镜头位置,并触发 actuator 将镜头移动到该位置。一般来说,AF 过程如下:

  1. AF 算法同时检测硬件和软件统计数据,以确定是否存在场景变化。
  2. 如果算法检测到场景变化,则算法触发搜索。
  3. 算法的粗搜索确定下一个镜头位置。
  4. actuator 逐渐将镜头移动到下一个位置。
  5. 精搜索找到最终的镜头位置。
  6. actuator 将镜头移动到最终位置。

AF_对焦策略.png

3.2 图像清晰度评价

来源

Focus value 是对图像清晰度的评价,通过调整对焦位置,来获取最大的对焦值,从而实现对焦的目的。

AF_清晰度评价.png

图像统计

  • 灰度熵法(灵敏度不高):\(H(I) = -\sum^{L-1}_{i=0} p_i \ln p_i\)
  • 灰度方差法:SMD filter
  • 直方图法

图像边沿检测

  • Laplacian 算子(中心算子);
  • Sobel 算子(highpass filter,有一个水平方向算子,一个垂直方向算子,取最大值);
  • Robert 算子(一个左上右下对角线算子,一个右上左下对角线算子);
  • Prewitt 算子(有一个水平方向算子,一个垂直方向算子,取最大值)。

空间与特征:tenengrad filter(能量梯度函数):

\[ E = \sum_x \sum_y \left( [f(x+1,y) - f(x,y)]^2 + [f(x,y+1) - f(x,y)]^2 \right) \]

3.3 CAF/CDAF

手机上最基础的自动对焦方法叫做反差式自动对焦(Contrast AF,简称 CAF;或 CDAF,contrast detection auto focus),使用的算法是爬山算法。CAF 又称为单次 AF(single AF)。

之所以叫反差式自动对焦,是因为这个方法是通过计算图像对焦框区域的反差或对比度(Contrast)来衡量图像清晰度的——反差越大表示图像越清晰。CDAF 需要等待场景稳定才能触发对焦,对焦时间在 3~5s 左右。

3.4 PDAF

由凸透镜成像规则可知,当 Sensor 不在像平面时,感光区域将是一个弥散圆。设计一种像素单元:left-shield-pixel 可以屏蔽左边的光线,right-shield-pixel 可以屏蔽右边的光线,那么 left-shield-pixels 和 right-shield-pixels 会分别生成两张模糊的图,但模糊中心不一样。为了方便分析问题,不妨只关注于模糊中心一致的光束,则由相似三角形原理得:

\[ |P_1 - P_2| / d_1 = |P_1' - P_2'| / d_2 \]

AF_PDAF相似三角形.png

所以如果我们知道一个 \(|P_1 - P_2| / d_1\) 的值(来自 DCC 校准),又知道 \(P_1' P_2'\) 的长度,\(d_2\) 的长度就可以计算出来,这个距离可以换算成马达移动的距离。

AF_相位差.png

而 phase disparity(即 \(P_1 P_2\))则可以通过相关计算获取(也有说是卷积的)。简单分析三种 PDAF 技术:shield pixel、super PD、dual PD。

3.4.1 shield pixel(sparse PDAF)

来源

屏蔽掉像素一半的感光区域(黑色部分),只获得一半信号,需要另外的像素屏蔽掉另一半信号,得到完整的相位差信息。SP 越多对焦越快,但信号损失越严重,目前 SP 密度控制在 1%~3%

AF_shield像素.png

  • SPC(shield pixel calibration):为了实现 PDAF 功能,芯片的像素矩阵中部分 G pixel 进行了遮光结构设计,光能信号比正常的 G pixel 要弱一些。为了达到正常 G pixel 的能效水平,需要对此类型的 G pixel 增加额外的增益,此动作称之为 SPC。
  • gain map:将 sensor 分为各个 block,每个 block 有对应的 gain,从而组合成 gain map。
  • DCC(defocus conversion coefficient):\(DCC = \dfrac{\Delta lens\_position\ [\text{dac}]}{\Delta phase\_disparity\ [\text{pixel}]}\)

3.4.2 super PD

将相邻的像素共用一个 on-chip microlens 得到相位差信息,一般在 Green 上处理。同样的,二合一的 PD 越多对焦越快,但信号损失越严重,目前密度也控制在 1%~3%。

3.4.3 dual PD(2PD / 全像素双核)

AF_dualPD.png

将同一个像素底部的感光区域(即光电二极管)一分为二,在同一个像素内即可完成相位信息捕获。dual PD 也有叫 2PD、全像素双核对焦,这种像素覆盖率 100%。

  • 缺点:成本高 来源
  • 优点:对焦更准更快;无亮度损失,无需人工补偿。

如果来自 PD_lib 的置信度值大于 high_conf,那么 2PD 依赖于 PD 信息来到达 AF 目标并且不需要精搜。粗搜和精搜取决于 defocus 相对于 focus_done_threshold 的距离 来源

3.4.4 PDAF 总结

缺点

  • PDAF 在暗光环境下表现差;
  • PD 像素依赖于垂直的边沿和场景的高对比;
  • 高于 PD 像素密度的高频信号将无法检测;
  • 由于图像边沿的信噪比低,故检测性能亦较低。

上述的缺点可通过融合 AF 算法来解决。

3.5 DCIAF / PLAF

Dual camera instant AF(DCIAF):显著减少了 AF 所需的时间,工作原理是估计一个基于两个相机之间视差的对象,通过匹配突出特征的同一对象来计算立体视差。

PLAF(Point Light AF):PL 场景中包含过曝的点/条/区域,随着离焦的增加,FV 值也跟着增加,进而导致 AF 对焦失败。Point Light AF 就是为了解决这种场景下的问题。PLAF 不是一个独立的算法,而是分别对 PDAF 和 CAF 的 PL 场景进行调整。

3.6 IIR / FIR

IIR / FIR 滤波器在自动对焦中应用于评价清晰度 来源

四、相关硬件

(1)音圈马达;(2)超声波马达;(3)步进马达;(4)记忆合金马达;(5)液体镜头对焦;(6)液晶镜头对焦;(7)MEMS 镜头对焦;(8)软件对焦(阵列式摄像头)。

4.1 机身马达

也称为相机马达。80 年代末尼康和佳能在引入自动对焦技术时走了不同的路线:佳能是把马达植入镜头里(镜头马达);尼康则是把马达放在机身里,通过一个旋转螺丝驱动镜头的对焦。成本上尼康当时占优(只需给自己的相机配马达,而不用为每个镜头装马达),但结果是随着技术发展,机身马达的局限性越来越明显,在对焦速度上佳能一直遥遥领先,结果 90 年代大部分原本使用尼康的体育摄影记者都改用了佳能 来源

自动对焦马达的速度和它产生的噪音与镜头的质量有一定关系。例如最快速和最安静的自动对焦系统通常用于专业摄影师的镜头,因为他们需要镜头快速聚焦并几乎保持安静,以免惊扰野生动物。然而,随着使用相机拍摄视频的人越来越多,针对快速、安静的驱动镜头完成自动对焦的马达类型也逐渐多了起来 来源

  • 螺丝驱动镜头:镜头内部没有电机,而是安装在相机内,并通过机械连接驱动镜头对焦。这种类型也称为机身马达驱动设计,是最早的一种自动对焦镜片组控制技术。
  • 微型马达:采用标准的直流电机与齿轮机构啮合,然后驱动对焦镜片组完成自动对焦操作。速度和噪声水平比螺丝驱动要好一些,但仍是比较"原始"的技术。
  • 超声波马达:最大的特点是响应快速且几乎没有噪音产生,它是一个环形的电机,是目前镜头内置自动对焦马达的主流技术。

4.2 VCM

来源

从结构上大致可分三类:(1)弹片式结构;(2)滚珠式结构;(3)摩擦式结构。

从功能上大致分为五类:(1)Open loop 开环马达;(2)Close loop 闭环马达;(3)Alternate 中置马达;(4)OIS 光学防抖马达(分平移式、移轴式、记忆金属式等);(5)OIS + Close loop 六轴马达。

4.3 TOF

来源

4.3.1 dToF

dToF,全称是 direct Time-of-Flight。顾名思义,dToF 直接测量飞行时间。原理为向被测物体发射光脉冲,通过对反射和发射光脉冲时间间隔的测量,直接计算待测物体的深度。

AF_dToF原理.png

在 TOF AF 中,激光传感器通过计算向目标发射红外光和接收器接收回红外光之间的时间来测量到目标的距离。相机和目标之间的距离是根据光子传播时间和光速计算的。与常规对比度 AF 相比,TOF 对焦速度明显更快。TOF 性能在低至正常光照条件下最佳,在室外条件下传感器很难区分激光发射器发出的光子和太阳光发出的光子。

AF_dToF测距.png

测得距离为:

\[ d = \frac{1}{2} \cdot c \cdot \Delta t \cdot \frac{Q_2}{Q_1 + Q_2} \]

最大测量距离为:

\[ d_m = \frac{1}{2} \cdot c \cdot \Delta t \]

例如,\(\Delta t = 50\text{ns}\),代入上式,\(d_m = 7.5\text{m}\)。dToF 要检测光脉冲信号(纳秒甚至皮秒级),因而对光的敏感度要求会很高。

4.3.2 iToF

iToF 的全称是 indirect Time-of-Flight,直译就是间接光飞行时间。原理为把发射的光调制成一定频率的周期型信号,测量该发射信号与到达被测量物反射回接收端时的相位差,间接计算出飞行时间,即通过测量相位偏移差来间接测量光的飞行时间,而不是直接测量光飞行时间。假定信号为 \(y(0,t) = \cos[\omega(t+\varphi)]\),则:

\[ d = \frac{1}{2} \lambda \frac{\Delta \varphi}{2\pi} = \frac{c\,\Delta \varphi}{4\pi f} \]

iToF 计算深度的方式通常是采用 4-sampling-bucket 算法,利用 4 个相位延迟为 0°、90°、180° 和 270° 的采样信号计算深度。

AF_iToF采样.png

1-Tap

\[ \varphi = \arctan \frac{Q_3 - Q_4}{Q_1 - Q_2} \]

\((Q_3 - Q_4)\)\((Q_1 - Q_2)\) 减小了恒定偏移量对测量的影响。相位方程中的商减少了来自距离测量的常数增益的影响,如系统放大、衰减或反射强度。

2-Tap

\[ \varphi = \arctan \frac{(Q_{A2} - Q_{B2}) - (Q_{A4} - Q_{B4})}{(Q_{A0} - Q_{B0}) - (Q_{A3} - Q_{B3})} \]

其中,B 与 A 同频,相位差 180°。差分电路来降噪,公式类似与编码式里程计。

考虑相位混叠的影响:

\[ d_m = c / 2f \]

如果频率为 100MHz,那么单频的最大测距为 1.5m。先进的 TOF 系统采用多频技术而不是降低调制频率来增加测量距离,真正的位置是当不同频率调制一致时的那个,称为拍频

AF_iToF多频.png

双频为 100MHz + 60Hz,那么最大测距为 7.5m。

4.3.3 结构

核心单元

  • 照射单元(Laser)
  • 成像传感器(Sensor):亮度校准和补偿(温漂、畸变)

相关单元:光学透镜、控制单元、计算单元。

TOF 芯片像素比一般图像传感器像素尺寸要大得多,一般 100μm 左右。ToF 传感器抓出的图如下所示:

AF_ToF深度图.png

4.3.4 TOF 总结

  • 优点:测量精确快速、测量距离长、安全、成本低。
  • 缺点:散射、多重反射、抗环境光能力差。
  • 技术难点:运动模糊(dual freq 下要 8 张 phase 才能合成一张 depth,与 RGB 曝光时间无法对齐);双摄/三摄同步;Zoom(ToF 没过 ISP,没法进行 ISZ)。

与常规 CAF 相比,TOF 对焦速度明显更快。在低光至正常光照条件下 TOF 性能最佳,但在室外条件下传感器难以区分激光发射器发出的光和来自太阳光的光 来源

五、摩尔纹

来源

莫尔效应的本质是(主要是视觉)对第三种截然不同的图案的感知,这是由两种相似图案的不精确叠加造成的。

5.1 平行样式

来源 来源

假设 0 为白、1 为黑,0 和 1 可叠加出 1/2 即中性灰,则利用和差化积公式 来源 得:

\[ \begin{aligned} f_3 &= \frac{f_1 + f_2}{2} \\ &= \frac{1}{2} \cdot \left[ \frac{1+\sin(k_1 x)}{2} + \frac{1+\sin(k_2 x)}{2} \right] \\ &= \frac{1 + \sin(Ax)\cos(Bx)}{2} \end{aligned} \]

where \(A = \dfrac{k_1 + k_2}{2}\)\(B = \dfrac{k_1 - k_2}{2}\)\(k_1 \approx k_2\) but \(k_1 \neq k_2\)

从平行摩尔纹可以看出,虽然摩尔纹只是两个图形的叠加,但:

  • 两个图形的频率不能相同,如果相同 \(B=0\),则没有新的第三个图形出现;
  • 两个图形的频率差别也不能太大,如果太大,人眼就不容易被"欺骗",第三个图形的感知也不强。

AF_平行摩尔纹.png

从效果上看,平行摩尔纹约等于条形码。如果 \(f_2\) 随着时间移动,由于两个正弦波的频率不同,通过群速/相速理论 来源 知:

\[ \begin{aligned} f_3 &= \frac{f_1 + f_2}{2} \\ &= \frac{1}{2} \cdot \left[ \frac{1+\sin(k_1 x)}{2} + \frac{1+\sin(k_2 x - \omega_2 t)}{2} \right] \\ &= \frac{1 + \sin(kx - \frac{\omega_2}{2}t)\cos(\frac{\Delta k}{2}x + \frac{\omega_2}{2}t)}{2} \end{aligned} \]

where \(k_1 > k_2\),sin 部分反映相速,cos 部分反映群速(包络速度)。动图详见 wiki:Moire

5.2 旋转样式

旋转样式的效果见 wiki: Moire。可以看到随着旋转角度增加,红色菱形区域越来越小。推导如下:

AF_旋转摩尔纹推导.png

设栅栏宽 \(d\),菱形长对角线 \(2D\),菱形变成 \(d\),上层栅栏旋转角 \(\alpha\),根据勾股定理得:

\[ (2D)^2 = d^2(1 + \cos\alpha)^2 + p^2 \]
\[ d = p / \sin\alpha \]

化简为:

\[ D = \frac{p/2}{\sin(\alpha/2)} \]

基于小角假设得:

\[ D \approx p / \alpha \]

5.3 龟纹现象

AF_龟纹.png

5.4 利用摩尔纹进行设计

  1. 除去相交部分法 来源
  2. 通过巧妙设计,让多个相交部分合成一张新图,以实现动画效果。

产生摩尔纹的原因:最主要的原因是相机的感光元件像素的空间频率和实际拍摄的影像中条纹的空间频率接近造成的。CMOS 感光元件的面积是按其矩形对角线英寸长度为指标的,1 英寸 = 16mm,例如某 sensor 为 1/2.9 英寸,则 \(16/2.9 = 5.52\text{mm}\)

减轻和消除摄影中的摩尔纹影响

  1. 改变相机角度、位置。由于相机与物体的角度会导致摩尔波纹,稍微改变相机角度(通过旋转相机)可以消除或改变存在的任何摩尔波纹。
  2. 离焦。细致图样上过于清晰的焦点和高度细节可能会导致摩尔波纹,稍微改变焦点/对焦距离可改变清晰度,进而帮助消除摩尔波纹。
  3. 算法去除 来源

六、图片裁切与变焦

数码变焦倍数 × 光学变焦倍数 = 总变焦倍数。

光学变焦

AF_光学变焦.png

从图中可以看出,\(\times 2\) 表示的是相对于基准等效焦距的倍率。又从 FOV 公式 \(FOV = 2\tan^{-1}\dfrac{d}{2f}\) 知,倍率越高,视场角越小。同样是对焦于无限远,像距 = 焦距,于是有:

AF_数码变焦原理.png

因此,通过相似三角形原理知,缩放(对于数码变焦就是裁切)比例与变焦倍数一致。

数码变焦 来源:图片先裁切,再放大。

AF_数码变焦.png

七、实现视角(3A 框架)

本节来自相机 3A 框架的实现笔记,补充 AF 在手机平台上的落地方式。代码细节(metadata 键、tuning 文件、工单号)属工程实现,会随平台/版本变化,仅作概念理解。

7.1 AF metadata

AF 的关键 metadata 有:

  • CONTROL_AF_MODE
    • OFF(0):手动对焦模式;
    • AUTO(1):触发时机由 AP 决定,如 touch;
    • MACRO(2):微距(待);
    • CONTINUOUS_PICTURE(3):一般拍照下默认为该模式;
    • CONTINUOUS_VIDEO(4):一般录像下默认为该模式,调焦策略更为平滑;
    • EDOF(5):扩展景深模式(全焦模式),如不可调焦的 Ultra Wide 下就是这个模式。
  • CONTROL_AF_TRIGGER(在 MODE_AUTO 中起作用):Start(进入 MODE_AUTO 的标志)、Idle(一般情形)、Cancel(退出 MODE_AUTO 的标志)。
  • CONTROL_AF_REGIONS:不能太大也不能太小,在 camera 画面长宽的 10%~20% 范围内比较合适,畸变和超出画幅部分要另外处理。AF Region 可以有多个,并给多个区域提供不同的权重。
  • CONTROL_AF_STATE:在不同模式下维护着不同的状态机:INACTIVE(0)PASSIVE_SCAN(1)PASSIVE_FOCUSED(2)ACTIVE_SCAN(3)FOCUSED_LOCKED(4)NOT_FOCUSED_LOCKED(5)PASSIVE_UNFOCUSED(6)

7.2 AF 状态机

安卓对 AF 状态机的官方定义表格见 Android 状态表。不考虑未对焦情形时,状态机为:

AF_状态机.png

  • 拍照模式设置 mode 为 CONTINUOUS_PICTURE录像模式设置为 CONTINUOUS_VIDEO,不需要设置 AF Region(底层会自动选取画面中心对焦),也不要下发 trigger event(底层会依据亮度、Gyro、PD defocus、Laser 距离变化等来判断场景是否改变或失焦,检测到场景变化或失焦会自动触发对焦,促使中心画面一直处于合焦状态)。
  • 用户 Touch camera 画面,将 mode 切换为 AUTO,依据 Touch 的坐标设置 AF Region,下发 TRIGGER_START,等待对焦完成收到 FOCUSED_LOCKED 状态,此时 Touch AF 已完成,AF 处于锁定状态。
  • AF 锁定 3~5s 后,APP 需要检测 Gyro 的状态,如果 Gyro 的值大于一定阈值,可判定用户已切换场景,需要将 AF mode 切换回 CONTINUOUS_PICTURECONTINUOUS_VIDEO

长按 lock AF/AE 时,APP 将触发一次 touch,同时保持住本次 touch(不下发 cancel)。一般多帧拍照开始前会触发 AF lock、AE lock,并在从 sensor 收 RAW 图后 unlock。

7.3 AF 用户场景

Scenario Detail Name Explanation
TAF Touch AF Touch screen or specific ROI by user, then trigger AF
CAF Central AF User move camera or change scene, then trigger AF
FDAF Face detection AF Face appear or change, then trigger AF
OTAF Object tracking AF Object appear or change, then trigger AF
Zoom AF Zoom track focus User change field of view, then trigger AF
  • Full Mode:当中央的置信度低于四周时。
  • Center Mode:当中央的置信度够高时。

7.4 AF table

  • FV:Focus Value,用来衡量图像 AF 的清晰度。
  • DoF:景深,表示物距清晰的范围。如果基于弥散圆的概念来定义景深不好量化,因此这里将景深定义为 DOF 的量化是最佳 FV 的 95% 以上,根据清晰度情况作适当调节。
  • AF table:根据不同距离处物体在 sensor 上成像的边缘信息即 FV 值,绘制多条 step-FV 曲线。图中虚线表示每个物距处图像认为清晰时可接受的最小 FV 值,虚线以上 FV 对应景深范围内物体成像信息 来源 来源

AF_table曲线.png

AF 的距离从 10cm~3m,测试间隔越细越准确,可以不等分为 15 段测试,距离越近分段越多(从 3m 开始每拉近 40cm 拍一张,1m 以内每 10cm 拍一张,10cm 以内每 2cm 拍一张)。SAF 和 TAF 使用同一组调试参数(AF 搜索范围、table、精度、速度);MAF 参数与 SAF 一样但由于多点同时对焦、以最近焦的点为中心,performance 相对差一些;CAF 为了保持对焦 smooth,没有使用 AF search table 而使用固定的 AF step 搜索。AF table 会根据 OTP 对 step 进行重新映射;由于重力影响 VCM,还需要根据朝向进行调整。

7.5 AF 整体流程

AF_整体流程.png

AF 整体流程符合前述 AF 机制。在大策略上:

  1. 目前主流手机没有支持光学变焦的,故 ZoomTrack 可以忽略。
  2. 触发 AF 后,会根据统计信息决定使用 AF 的算法类型。
  3. AF 搜索的触发:除了要求发生触发事件,还要求场景稳定。

AF_搜索触发.png

  1. Continuous mode:完成对焦后,由 monitor 判断是否触发下一次对焦计算。
  2. Auto mode:完成对焦后,需要用户重新 touch 对焦,或 AP 检测到脱离对焦后重新变为 Continuous mode。
  3. PDAF 和 CDAF 都需要进行准备工作。
  4. 能 PDAF 就先 PDAF,PDAF 会进行粗搜和精搜,期间任何超时都会转到 CDAF 计算。
  5. 算法选择(阈值根据 AF 用户场景不同而不同):
    1. 当置信度高于强阈值时:PD 对焦;
    2. 当置信度介于强阈值和弱阈值间时:fineSearch(即 PD 对焦(粗搜)+ FV 对焦(精搜));
    3. 当置信度低于弱阈值时:走 CDAF 对焦。

7.6 AF 监控

检测变化/稳定的相关状态量:G-sum、G-sensor、Gyro、Global motion vector(GMV,一种运动检测算法)、G-Histogram、AE status、PD information、Laser information、Focus value(FV,默认不使用)、ZoomFactor。

变化/稳定状态方式一般为:计数器大于计数阈值 && 状态量相对于参考值大于/小于阈值。场景变化指状态量中有一个变化;场景稳定指所有状态量稳定。

天空场景检测:对焦于 inf(AF table index < FlatSkyActIdx);LV 白天很亮晚上很黑;Ghist 检测到平缓场景;朝上拍。

lens hunting 检测(由莫尔纹引起):当前位置和 PD 目标位置的距离较大;PD 目标距离在短时间内出现数次大的变化。

AF_lensHunting.png

7.7 AF 搜索

Hybrid AF:CDAF + one of {PD, LD, SD}AF。如果 AF 先开启 contrast search,那么就限制 AE 的收敛速度。

精搜条件

  1. corner PD 仅置信度足够且 touch sky 无需精搜;
  2. 除上述特例外,触发精搜的条件为:置信度不够、ROI 中过曝区域过多、Face ROI 过大、PD abnormal peak。

PD 收敛判断:根据 ISO 和 lens position 设置收敛阈值。

  • FD case:FD stable && 场景稳定(默认检测 AE 和 Gyro);
  • Touch case:检测 AE stable;
  • Center casefine_search_scene_stable_mask

7.8 AFO 硬件统计

MTK AF 硬件统计是以块(block)进行的,这些块覆盖整个 AF-ROI,AF-ROI 最多有 128×128 个。每个块中的统计信息包括:垂直/水平对焦值(focus value)、R/G/B 通道上各像素值之和、G 通道饱和像素和。

AF_AFO统计块.png

对于 RGB sum / FV 状态量,每一个 block 都可以被判断为 changed 或 stable。只有当 35% 的 blocks changed 时当前帧才会被判定为 changed;当所有块 stable 时当前帧才会被判定为 stable。周围还有 8 个 PD blocks。

八、参考

  1. 刘斯宁:Understanding Auto Focus - 知乎
  2. 图像清晰度评价 - 知乎
  3. Camera AF version 6.0 - cnblogs
  4. 摄像头 - 对焦算法实现总结 - CSDN
  5. TOF - 知乎
  6. Moiré pattern - Wikipedia