相机自动对焦AF原理

AF性能是判断相机好坏的重要指标,主要从准确度和速度两个方面来进行考察,本文将介绍自动对焦的几种方式。

一.凸透镜成像原理

二.三种对焦方法

有公式在手,只要给相机安个测距仪就好了,测距仪的精度越高对焦就越准,成像就越清晰,在这种想法的驱动下,主动式对焦就应运而生了,在大部分不计代价的领域,主动式对焦是很受欢迎的方法。

但是在很多地方,尤其是民用市场,想要给相机按上一个高精度测距仪,代价无疑是很高的,有没有其他办法实现对焦?很明显,就是刚才提到的物理实验所采用的的探索法,让改变镜头与CMOS之间的距离,总能找到成像的最佳位置。

在这种想法的作用下,被动式对焦就应运而生了,主要是以额外硬件为代价的相位法和基于软件的对比度法。

自动对焦目前主流的大致上有CDAF,PDAF和Laser
assist AF这三种。前两种属于被动式,也就是说相机不需要其他额外辅助的探测手段,直接使用入射光线做判断来对焦;而第三种属于主动式,也就是说需要使用Laser来辅助探测,这在后面会详细介绍。

1. CDAF (contrast detection auto focus)

反差对焦是假设对焦成功后相邻像素点的对比度最大,这种方式的光学设计是最简单的。

从上图可以看到,右上图中的白色方框代表对焦点,此处反射出的红色光线在经过镜头,到达传感器前就汇聚在一点,随后又散开,此时图像的对比度是很低的。

将这个对焦点与相邻像素的对比度作分析得出右下角的曲线,失焦状态下对比度低,在聚焦过程中,曲线变得逐渐变得倾斜,但是不能判断什么时候是最高点,只有经过了对焦点后曲线下降再往回移动,反复移动后可以得到一个局部梯度最大值,就认为是对焦成功。

详细过程可以从这个链接可以看到。

优点:光学设计简单。

缺点:

a. 速度较慢,在出现失焦图像时,机器无法判断该移动多少,甚至往哪个方向移动镜头才能聚焦,甚至到了峰值也不知道,必须移动过了以后再往回移动,来回几次后才能找到对焦点;

b. 在物体对比度较低时会对焦失败,比如雪景,无云的蓝天以及各种纯色的图像。

2. PDAF (phase detect
auto focus)

相位对焦最早是在单反上使用的,也是最常用的被动式对焦方法,光学通路也比较复杂。

在对焦过程中,白色入射光被一个斜45度角的反光镜拦截,部分向上分光到调焦屏,供预览和AE使用,此时预览看到的图像和拍照的是一致的;剩下的光被次级反射镜向下分到AF模块。

可以从下图中看到AF模块的工作原理。AF模块中有两个或者多个小图像传感器(CCD1/2),并且都是一维的,也就是说是由一列像素构成,每个传感器上有一个小的透镜(Micro lens),这些传感器是成对出现,每一对就构成了一个自动对焦点,下图中的对焦点是右下侧图片中央的白色方框。在失焦状态下,红光照射在光圈右侧,绿光照射在光圈左侧,在传感器上的相位就无法匹配,图像中央其实是一个硬币,但为了方便将相位表示成只有一个峰值的曲线,也就是一个黑色背景的白点,真实图像的曲线实际上比较复杂。当移动镜头Main lens的时候,光线的相位会慢慢靠近直至重合,当重合时就认为对焦成功。在图像处理中识别相位重合的方式有很多种,Cross-correlation就是其中一种。由于根据相差可以精确计算出main
lens需要移动的方向以及距离,因此PDAF就比CDAF速度要快许多。

由于对焦速度快,在2014年左右被全面引入到手机上,然而手机上没有足够空间来实现如此复杂的光学通路,因此业界就拿sensor做文章,如下图所示在原有的

(a)Bayer CFA sensor基础上将部分G替换成

(b)PD 像素,变成了

© PDAF sensor。

测距原理就是发出一组超声波,接收器根据超声波的返回时间来计算距离;同样在单反上的激光辅助对焦是发出一组红外光,根据接收到的时间来计算距离。

优点:

激光辅助对焦完美地补充了PDAF在弱光条件下,以及CDAF在对比度底场景下的不足。

缺点:

a. 所谓激光其实是红外线光,因此在物体本身有红外射线(比如烛光,人脸)的情况下就会失效;

b. 如果有红外射线无法穿透玻璃,因此有玻璃情况下也会失效。

这样也就无需改变原有的光学通路,直接根据PDAF计算出相差来移动镜头。当然这些被PD像素所取代的像素点必须根据周围像素点的值来做补偿,具体补偿方式就由各ISP厂商来决定。

优点:速度快。

缺点:

a. 需要专用PDAF sensor,并且有精度损失;

b. 在暗处效果较差,无法完全取代CDAF。

3. Laser Assit AF

激光辅助对焦在单反上的前生是潜艇的超声波测距系统。

超声波测距原理就是发出一组超声波,接收器根据超声波的返回时间来计算距离;同样在单反上的激光辅助对焦是发出一组红外光,根据接收到的时间来计算距离。

优点:

激光辅助对焦完美地补充了PDAF在弱光条件下,以及CDAF在对比度底场景下的不足。

缺点:

a. 所谓激光其实是红外线光,因此在物体本身有红外射线(比如烛光,人脸)的情况下就会失效;

b. 如果有红外射线无法穿透玻璃,因此有玻璃情况下也会失效。

相位法

相位法是直接通过硬件计算出当前成像的位置是在真正相平面哪一侧的方法,如图所示:

三.对比度法

这种方法很多地方都叫做反差法,但是通过研究其原理,我认为还是叫对比度法比较准确。原理可以通过下面的动图描述:

这下应该不用多解释了,如果还是不明白,那我就简单说明一下:

它实际上是选的一行像素,统计各像素亮度,并计算最亮和最暗的差值作为对比度保存;

尝试往一个方向移动镜片(或者CMOS),如果差值变小则说明方向错误,需要反向移动;

反之继续移动,直到差值经过某个值之后开始变小,说明该值即对比度最大值;

镜片(或者CMOS)反向移动到对比对最大的位置。

相机自动对焦AF原理相关推荐

  1. python写一段自动对焦AF的代码

    很抱歉,因为没有更多的上下文和要求,我不能写一段完整的代码.但是,我可以给出一些概述和提示,帮助你开始写代码. 自动对焦(AF)是指相机或摄像机自动调整焦点以使图像清晰. 如果要使用Python编写自 ...

  2. 相机自动对焦 OpenCV 图像清晰度评价

    原文:https://blog.csdn.net/dcrmg/article/details/53543341 OpenCV 图像清晰度评价(相机自动对焦) 版权声明:本文为博主原创文章,转载请注明出 ...

  3. OpenCV 图像清晰度评价算法(相机自动对焦)

    相机的自动对焦要求相机根据拍摄环境和场景的变化,通过相机内部的微型驱动马达,自动调节相机镜头和CCD之间的距离,保证像平面正好投影到CCD的成像表面上.这时候物体的成像比较清晰,图像细节信息丰富. 相 ...

  4. 三维空间刚体运动5:详解SLAM中显示机器人运动轨迹及相机位姿(原理流程)

    三维空间刚体运动5:详解SLAM中显示机器人运动轨迹及相机位姿(原理流程) 一.显示运动轨迹原理讲解 二.前期准备 三.git管理子模块及克隆源代码 1.学习使用Git Submodule 2.克隆源 ...

  5. matlab相机标定畸变参数,相机标定的原理与意义及OpenCVMatlab实现差异小结.doc

    2011-01-30 相机标定的原理与意义及OpenCV.Matlab实现差异小结 分类:?OpenCV点滴2011-01-30 20:35?2292人阅读?评论(3)?收藏?举报 ??? 本文是一篇 ...

  6. 相机标定和双目相机标定标定原理推导及效果展示

    文章目录 前言 一.相机标定 1.相机的四个坐标系 2.相机的畸变 二.张正友标定法 1.求解内参矩阵与外参矩阵的积 2.求解内参矩阵 3.求解外参矩阵 4.标定相机的畸变参数 5.双目标定 6.极线 ...

  7. AVM环视:一.相机标定及原理

    文章目录 前言 为何进行相机标定? 相机标定本质 坐标系 一.针孔模型 前言 环视AVM的第一步即对鱼眼相机进行标定,得到相机的内参.畸变系数.本文主要介绍了相机标定及其原理.相机标定本质上为坐标系之 ...

  8. OpenCV 图像清晰度评价(相机自动对焦)

    最近想实现相机自动对焦,也就是需要图像清晰度评价,在网上查找. 第一个不错文章是:无参考图像的清晰度评价方法 http://nkwavelet.blog.163.com/blog/static/227 ...

  9. opencv java图片清晰度_OpenCV 图像清晰度评价(相机自动对焦)

    相机的自动对焦要求相机根据拍摄环境和场景的变化,通过相机内部的微型驱动马达,自动调节相机镜头和CCD之间的距离,保证像平面正好投影到CCD的成像表面上.这时候物体的成像比较清晰,图像细节信息丰富. 相 ...

最新文章

  1. 展示动图_DNF:多GIF动图展示,暗夜使者个性武器幻化推荐
  2. 装配bean的三种方式
  3. 京东2019春招Java工程师编程题题解
  4. oracle 数据立方_大数据之数据仓库分层
  5. this关键字 和 private关键字
  6. oracle用户的追踪文件,Oracle中怎样通过触发器来追踪用户的活动?
  7. [习题]给初学者的范例,多重字段搜寻引擎 for GridView,兼论 SqlDataSource与SelectParameter的用法...
  8. mysql表 spid program_oracle 解锁某张表 和编译存储过程卡死问题处理
  9. python结果按行输出_Python实现读取字符串按列分配后按行输出示例
  10. C 中细节问题的试题
  11. 分享8年开发经验,浅谈个人发展经历,明确自己发展方向
  12. linux aria2 离线,使用aria2实现离线下载
  13. unity 屏幕虚拟键盘
  14. ECC与Pairing前沿调研
  15. 【BZOJ1149】【APIO2007】风铃(完全二叉树+dp)
  16. F5 ELK可视化方案如何做到DNS运维更安全更高效
  17. 关于anroid手机内部存储空间清理记录
  18. 微信小程序:开发相关
  19. 三次B样条插值和误差分析
  20. 计算机综合评价论文,关于模糊综合评价记忆计算机英语论文

热门文章

  1. 2021-2027年中国手机结构件行业投资分析及发展战略研究咨询报告
  2. 解决谷歌浏览器在非https下限制获取多媒体对象(音视频)的解决方式
  3. Java箭头函数,lambda函数
  4. 深度学习的Xavier初始化方法
  5. 最强 NLP 预训练模型库 PyTorch-Transformers 正式开源:支持 6 个预训练框架,27 个预训练模型...
  6. LeetCode简单题之好对数的数目
  7. 深度树匹配模型(TDM)
  8. 中国人工智能AI框架自主研发
  9. 2021年大数据Spark(二):四大特点
  10. 【注意事项】论文/申报书格式