PDAF(相位检测自动对焦)原理
了解PDAF,首先需要了解当今数码相机的工作原理,这里以单反为例进行介绍:
数码单反相机(DSLR)的工作原理
DSLR(digital single-lens reflex camera),数码单镜头反光相机,也就是我们常称的单反相机。属于数码静态相机(Digital Still Camera,DSC)与单反相机(SLR)的交集。
单反相机与其它数码相机的主要区别是反射设计方案。在单反相机中,光线穿过镜头,然后传到镜子,该镜交替将图像发送到取景器或图像传感器。DSLR相机使用光学取景器,通过透过视觉反射器观察被拍摄物体,用户可以更好地预测最终照片的成像效果。这种取景方式比其他类型的相机使用的电子取景器或屏幕取景器更加准确和可靠,通过使用一个镜头,DSLR 的取景器显示的图像与相机传感器捕获的图像没有显著差异。光学取景器的使用也意味着用户可以通过镜头看到物体的真实大小和形状,从而更容易地调整拍摄位置和角度。其内部结构如下图所示:
摄影师可以在拍摄图像前通过镜子看到被摄体。 拍摄图像时,反射镜会向上摆动,光线会转到感光元件。各部分分别为:
- 光线
- 主镜/反光镜
- 副镜
- 焦平面快门和感光元件
- 用于调整主镜的偏心销(1.5mm 六角)
- 用于调整副镜的偏心销(1.5mm 六角)
- 相位检测传感器(自动对焦传感器)
- 五棱镜/五面镜
- 取景器
传统结构上,单反相机上有一小块磨砂玻璃(现在一般使用光学塑料)5,叫对焦屏。它位于单反相机的反光镜上方,显示焦平面的图像,是单反类型照相机的独有零件。
对焦屏在光路中截断了光线,因为反射和散射减少了亮度,但它存在的意义主要不是取景,而是对焦。在与光电传感器近似等距离的位置,磨砂屏上的成像与传感器上的成像基本一致。包括画面构图、焦点、景深等,如果没有这个对焦屏,取景窗内仍然可以看到镜头传送的画面,而由于人眼的自动对焦,使画面始终清晰,无法判断照相机感光传感器的清晰程度。
磨砂屏会起到这个效果,是因为浴帘效应。大众经常听到的“浴帘效应”是物理学上的,浴室里淋浴时,悬挂的浴帘总会向内卷起,甚至贴到人身上。在光学上还有另外一个“浴帘效应”。
学术上会有很复杂的研究,简而言之,就是**磨砂幕越靠近物体,透光越明显。**这才是磨砂屏本身的成像原理。
在对焦屏这个位置上对焦,对于没有自动对焦的传统单反具有重要的意义,因此厂商开发了磨砂屏、精细磨砂屏、微棱屏、裂像屏、双裂像屏,还有磨砂、微棱、裂像复合屏等。更有复合了菲涅耳透镜的对焦屏。成为单反相机独有而不可或缺的组成部分。
另外,随着时代发展,现在无反相机也逐渐占据了一席之地,可以更换镜头的无反相机就是我们常叫的微单相机。单反相机和无反相机的区别在于机身构造和大小,无反相机取消了反光镜和光学取景器,采用电子取景器,机身更轻便紧凑,更适合爱好者和旅行摄影师。除此之外,在感光元件规格相近、镜头素质相当的情况下,无反相机和单反相机在画质表现方面并没有显著差别。
反差检测自动对焦(CDAF)
CDAF对焦原理
说到自动对焦,首先需要介绍的是经典的反差检测自动对焦,也叫对比度检测自动对焦,英文Contrast Detection Auto Focus。因为对比度对视觉效果非常关键,反差对焦被广泛应用于传统的摄像系统中。它通过对比镜头传感器传来的对比度反差来进行对焦。
我们知道,一般来说,对比度越大,图像越清晰醒目,色彩也越鲜明艳丽。当镜头逐渐合焦时,传感器得到的相邻像素间的对比度会越来越高,图像也就会越来越清晰。所以当我们找到整个图片对比度最高的时候,镜头所处的位置也就找到了准确的对焦点。这一过程如下图所示:
在对焦调节范围内,每一个调焦位置都会对应一个锐度值,也就是聚焦值。这些聚焦值形成一曲线,通常称为聚焦曲线。锐度值通过锐度评价函数计算获得,锐度评价函数有时也称为聚焦函数。一个良好的锐度评价函数对应的聚焦曲线应该是一个如图所示的单峰曲线,并且曲线峰值对应的调焦位置即为准确聚焦的位置。
CDAF实现过程
CDAF的流程如下图所示。当CDAF触发后,系统对当前的实际图像进行聚焦值计算,并结合前面的聚焦值数据综合判别当前聚焦值是否是聚焦曲线峰值。如果判定是聚焦峰值,则聚焦结束;否则,结合相关信息确定下一步调焦的移动方向和大小,驱动调焦步进电动机作相应的移动,对新的图像再次进行同样的步骤以此形成一个反馈控制环路。由此可见,对比度检测聚焦的关键因素有两点:① 锐度评价函数:② 峰值判定和搜索策略
相位检测自动对焦(PDAF)
PDAF对焦原理
相位检测自动对焦,英文Phase Detection Auto Focus。该系统的工作原理与测距仪相机类似。从副镜反射回来的光被2个或多个上面带有微透镜的小型图像传感器(取决于自动对焦系统有多少个焦点)接收。如上图7所示,对于每个焦点,有两个位于两侧的相位差传感器,两个单独的光束经过反射到达两个单独的传感器。
事实上,现代相位检测设备上的传感器数量远不止两个,而且这些传感器彼此非常靠近。**当光线到达这两个传感器时,如果物体处于对焦状态,则来自镜头最两侧的光线会聚在每个传感器的中心(就像它们在图像传感器上一样)。 ** 两个传感器上都会有相同的图像,表明该物体确实处于完美对焦状态。如果物体没有聚焦,光线将不再会聚,并且会照射到传感器的不同侧面,如下图所示(图片由维基百科提供):
图 1 至 4 表示镜头聚焦的情况分别为: (1) 太近,(2) 正确,(3) 太远,(4) 太远。从图中可以看出,两个曲线之间的相位差不仅可以用来确定在焦平面的哪个方向上,还可以用来确定改变焦点的程度,以实现最佳聚焦。但有一点需要注意,这只是检测传感器,实际上最终移动对焦的是镜头而不是传感器。
下面图片也显示了相位差产生过程:(a)现实世界中的一个物体;(b)配置了适当遮罩的左侧(上)和右侧(下)的相位传感器;©获取到的左侧(上)和右侧(下)相位图像。
PDAF实现过程
由于PDAF系统知道一个物体是前聚焦还是后聚焦,它可以向相机镜头发送准确的运动指令,说明以何种方式转动焦点以及转动多少。以下是当相机获得对主体进行对焦(闭环自动对焦操作)的命令时会发生的情况:
因为这一切都在很短的时间内发生,所以这就是PDAF比CDAF快得多的原因(CDAF由于依赖来回改变焦点直到达到焦点,需要基于大量图像数据进行分析)。
目前比较流行的是片上相差自动对焦(on chip phase detection autofocus),在生产sensor的时候,把某些用于相位检测像素遮住左边一半或者右边一半,如下图:
上图只是示意图,各个厂商的半掩模的工艺各有不同,在对IR filter或者microlens的处理上也不相同,但是基本的原理都是让图像形成左右两幅类似人眼的不同光学通路的图像。这样左右侧的相位检测像素就会产生这样的图像:
目前主要工艺
目前PDAF的生产处理方式主要有三种,分别是:
- shield pixel
- 2*1 PD
- dual PD
-
shield pixel
屏蔽掉像素一般的感光区域(黑色部分),只获得一半信号。需要另外的像素屏蔽掉另一半信号,得到完整的相位差信息。SP越多,对焦越快,但信号损失越严重,目前SP密度控制在1%~3%。
-
super PD
将相邻的像素共用一个on chip microlens得到相位差信息,一般在Green上处理。同样的,二合一的PD越多,对焦越快,但信号损失越严重,目前密度也控制在1%~3%
-
dual PD
将同一个像素底部的感光区域(即光电二极管)一分为二,在同一个像素内即可完成相位信 息捕获。dual PD 也有叫 2PD、全像素双核对焦,这种像素覆盖率100%,所以对焦体验最佳。但由于将光电二极管一分为二,井口变小,FWC急剧衰减,dynamic range衰减严重,拍照非常容易过曝。
下面以SP为例再实际解释一下。(图一)为Sony感光元件有放置对焦使用像素示意图,CMOS感光元件的相位像素会接收到左右不同的光波信息,进而判断出远近距离产生相位差,Sony感光元件上的"对焦点区域"设计一排专用的对焦像素。像素是由L、R两组像素交错排列组成的。如果单看L和单看R,可以将这条对焦像素视为两条独立的感应器,L和R接收同来自一光源的光。
Sony的做法是在对焦用像素上设计两层交错的光罩遮光(图二、三),让所有L像素只能接收到来自左边的光,R像素只能接收到右边的光。这样一来,L和R两组对焦像素就能接收同一光源不同方向的光。
如(图二)黄色光线所示,光罩遮住一半的入射光源,造成此相位像素仅能接收到左半边的光源信息。(图三)黄色光线因光罩遮住一半的入射光源,造成此相位像素仅能接收到右半边的光源信息。
因此,CMOS将两个感应器的信号进行比较,这两个成像间的距离就是所谓的“相位差”。既然“相位差”与“光源和焦点的距离”有这层关系,便可参考当前的相位差来驱动对焦马达,使得对焦可以快速完成。
其它对焦方式
激光对焦
相信大家一定听说过,在工业建筑和测绘领域,工人们都会使用激光技术来确定高度或水平距离。LGG3首次将该技术应用在了手机对焦上,随后2015年,魅族将这项技术应用在了自家MX5上,使之成为了国内第一款应用激光辅助对焦的机型。
魅族MX5的激光对焦原理是:通过背面的微型发射器可以发射出低强度脉冲激光,然后通过相机左侧的红外传感器将反弹折射回来的信号进行回收,从而实现对焦的目的。
每个红外脉冲光束经过电子测量器多次反复计算反射时间,从而建立一个精确的范围。ISP 接收器可以计算出具体的物体或场景究竟有多远,同时锁定在最适合的焦点景深。而这一切看起来虽然复杂,但是实际上只发生在几分之一秒内,几乎感觉不到过程。根据魅族官方表示,MX5的对焦时间只有 0.2 秒左右。
红外对焦
在最后说这项技术,是因为整个红外对焦技术只被联想的VIBE SHOT实际应用了,但是因为这项技术可实用型不高,并且故障频出,所以几乎没有厂商愿意跟进,最后只能放弃。基本上,Vibe Shot 的红外自动对焦可以说是魅族MX5激光对焦的另外一个版本,但这项技术让 Vibe Shot比普通的自动对焦技术快上2 倍。
总结
目前,PDAF主要应用于高端数码相机和智能手机上。它通过将像素分为左、右两组,接收不同方向的光线信息,并通过比较两个成像之间的相位差来确定焦点位置。PDAF的优点是快速对焦、适用于低光环境,但它需要特殊的硬件支持,且对镜头质量和设计有一定要求。
CDAF则主要应用于入门级数码相机和相机模块化智能手机上。它通过计算成像中相邻像素之间的对比度来确定焦点位置。CDAF的优点是适用于各种类型的镜头和成像情况,但它对光线和对比度的要求比较高,且在低光环境下对焦速度较慢。
事实上,除了前面的提到的一些对焦技术外,部分厂商将这些对焦技术混合在一起,取长补短。在这些厂商中,我觉得做的最好的应该是PRO6 Pus。这台机子将PDAF对焦、激光辅助对焦和反差对焦混合在一起,大大提高了不同场景的对焦成功率,也同时增强了相机成片的观感。
参考文献
[1]: Digital single-lens reflex camera
[2]: 单反、无反、微单 相机的选择?
[3]: 反光镜和对焦屏(单反屏幕对焦)
[4]: How Phase Detection Autofocus Works
[5]: 片上相差式自动对焦原理
[6]: 摄像头模组 PDAF对焦(Phase Detection Auto Focus)
[7]: 相位對焦(Phase Detection) 資料整理
[8]: 《计算摄影学基础》
[9]: 《Sensor-Based Auto-Focusing System Using Multi-Scale Feature Extraction and Phase Correlation Matching》
[10]: PDAF 相位对焦
[11]: 手机拍照知识科普:PDAF对焦与激光对焦的区别
查看全文
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dgrt.cn/a/2172721.html
如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!
相关文章:
相位检测自动对焦(PDAF)原理
PDAF(相位检测自动对焦)原理
了解PDAF,首先需要了解当今数码相机的工作原理,这里以单反为例进行介绍:
数码单反相机(DSLR)的工作原理
DSLR(digital single-lens reflex camera),数……
MongoDB在Spring中使用
spring-data-mongodb中的实体映射是通过MongoMappingConverter这个类实现的。 它可以通过注释把java类转换为mongodb的文档。
它有以下几种注释: Id – 文档的唯一标识,在mongodb中为ObjectId,它是唯一的,通过时间戳机器标识进程I……
MongoDB中where in操作
where in 操作db.getCollection(shelf_core_inventory).find({"location.locationCode":"CKGB16","shelf.shelfTypeEnum":{"$in":["C0",]},"shelf.shelfCode":{"$in":["C0.001","C1.001……
Redis(5.0)集群分析
1、为了达到redis数据库的高可用,所以需要在单机的基础上建立集群,首先了解下它的集群模式,大概有以下几种:
主从复制哨兵模式Redis官方提供的Cluster集群模式(服务端)Jedis sharding集群(客户端sharding)利用中间件代理……
mongodb 查询条件
mongodb条件操作符: "$lt", "$lte", "$gt", "$gte", "$ne"就是全部的比较操作符,对应于"<", "<", ">", ">","!"
原子操作符&#x……
哈希冲突-哈希碰撞
当我们对某个元素进行哈希运算,得到一个存储地址,然后要进行插入的时候,发现已经被其他元素占用了,其实这就是所谓的哈希冲突,也叫哈希碰撞。 哈希函数的设计至关重要,好的哈希函数会尽可能地保证 计算简单……
MongoDB中_id(ObjectId)组成
MongoDB 中我们经常会接触到一个自动生成的字段:"_id",类型为ObjectId。
之前我们使用MySQL等关系型数据库时,主键都是设置成自增的。 在分布式环境下,这种方法就不可行了,会产生冲突。 为此,mo……
微服务优化之Hystrix
1.什么是hystrix
我们先来看这么一个图,假如订单服务需要调用积分服务,库存服务,仓储服务,订单服务的线程池有100个线程,这个时候积分服务突然挂了.这时候同时有大量的请求来访问订单服务,最终的结果是这100个线程都会卡在积分服务这里,这时候订单服务也没有多余的线程处理请求……
微服务化之各种超时时间配置效果
1.前言
Springcloud框架中,超时时间的设置通常有三个层面:
1.zuul网关
#默认1000
zuul.host.socket-timeout-millis2000
#默认2000
zuul.host.connect-timeout-millis40002.ribbon
ribbon: OkToRetryOnAllOperations: false #对所有操作请求都进行重试,默认false ReadTimeo……
MySQL主从复制原理浅析
MySQL主从复制原理浅析
MySQL主从复制是构建高可用MySQL的基础,复制就是让一台服务器的数据和其它服务器保持同步,一台主库可以同步到多台备库上面,备库也可以作为另一台服务器的主库。主库和备库之间可以有多种不同的组合方式。
主从复制 ……
一、lua基础知识1
一、lua 的数据类型
–类型 a1; –number print(type(a)) –number b"HelloWorld"; print(type(b)) –string 两种数据类型 ctrue; print(type(c)) –boolean true 或者 false d print; d("HelloWorld"); print(type(d)); –function类型 ……
二、lua语言基础2
1.lua的类型有哪些?答:lua的数据类型有:number,string,nil function,table,thread,userdata(用户自定义的类型),boolean(布尔类型) 2.什么是尾调用,尾调用有什么优点尾调用:在一个函数的最后一步开始调用另……
quick-cocos2dx-luaUI控件讲解
–MyApp部分 require("config") require("cocos.init") require("framework.init") local MyApp class("MyApp", cc.mvc.AppBase) function MyApp:ctor() MyApp.super.ctor(self) end function MyApp:run() cc.FileUti……
quick-cocos2dx lua语言讲解 (动作,定时器,触摸事件,工程的类的讲解)
–MainScene部分
— display.newScene 创建一个场景 — 在quick里面我们的控件、精灵 一般是加载到场景上的 local MainScene class("MainScene", function() return display.newScene("MainScene") end) function MainScene:ctor() –创……
使用quick-cocos2dx-lua 实现的小游戏(包含碰撞检测,触屏发子弹)
–主界面local MainScene class("MainScene", function()return display.newScene("MainScene")end)ON true;function MainScene:ctor()local bg cc.Sprite:create("main_background.png");bg:setScale(2);bg:setPosition(display.cx,display……
cocos2d-js 中scrollview详解
/****
开头的一些废话:
1、多思考,善于思考
2、懂得变通
3、多多查询API首先复制一段 API中的源码:(UIScrollView.js)这段代码可以看出 scrollview
中的容器是一个node,并且他的位置是:代码最后……
cocos2d-js中的回调函数中世界坐标系和节点坐标系的相互转换
世界坐标系和节点坐标系都是OPENGL 坐标系 1、世界坐标系原点就是屏幕的左下角; 2、节点坐标系的原点就是一个节点的左下角; 3、两个坐标系可以通过已经写好的cocosAPI进行想换转换; 4、所有的节点需要转为一个节点上或者是统一的世界坐标系……
通过JavaScript实现漂浮
<html>
<head><meta http-equiv"Content-Type" content"text/html"; charset"gb2312" /><title>漂浮广告</title><style type"text/css">div{position:absolute;}</style>
</head>
&……
序列动画和图片内存问题
一、帧动画问题 /*** 帧动画总结:* 1、如果精灵进行新建时,加载了纹理,那么setRestoreOriginalFrame可以设置为false或者true* 2、如果精灵新建时,没有加载纹理的话,那么setRestoreOriginalFrame需要设置为false&#……
冒泡排序的两种写法
//第一种写法: #include <iostream> using namespace std; void bubbleSort(int arr[], int n) { for (int i 0; i < n-1; i) { int temp 0; for (int j i1; j <n; j) { if (arr[i] ……
编程日记2023/4/16 15:01:21