PDAF(相位对焦)的基本原理

PDAF(相位对焦)的基本原理今天来讲一讲PDAF(相位对焦)的基本原理。 在自动对焦的时候总是有一个困惑,知道图像是不清楚的,但是lens应该向前还是向后移动呢?总是要前后移动lens一下才知道,普通的反差法对焦就是这么做的,爬山嘛。PDAF的出现就是为了解决这个lens移动的问题,可以根据图像,预判lens运动的方向。PDAF最早运用在单反上,已经是非常成熟的技术了,原理如下图。左图为CCD在焦后的情况,…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

今天来讲一讲PDAF(相位对焦)的基本原理。

 

在自动对焦的时候总是有一个困惑,知道图像是不清楚的,但是lens应该向前还是向后移动呢?总是要前后移动lens一下才知道,普通的反差法对焦就是这么做的,爬山嘛。PDAF的出现就是为了解决这个lens移动的问题,可以根据图像,预判lens运动的方向。

PDAF最早运用在单反上,已经是非常成熟的技术了,原理如下图。

左图为CCD在焦后的情况,右图为焦前。当CCD在焦后时,在线阵CCD1和CCD2上会发现聚焦点CCD1的在左,反之,则聚焦点CCD2的在左(图中红色标记的光线)。

PDAF(相位对焦)的基本原理

这种方法需要加额外的一个半透半反镜,还需要加两个透镜,两个线阵CCD,结构复杂,不适用于手机等便携式设备中。所以pdaf sensor应运而生。

 

PDAF sensor的原理和单反中的略有不同。

以轴上点为例,紫色光线代表经过上半部分透镜的光线,而蓝色代表经过下半部分透镜的光线,可以看到,当CCD在焦前的时候,上半部分的CCD接收到的是上半部分的光线,而下半部分的CCD则接收到的是下半部分的光线,反之,在焦后的时候恰好相反。那么如果我们可以区分光线是来自透镜的上半部分还是下半部分,我们就可以知道是焦前还是焦后了。不难发现,CCD越接近理想成像面,两色光线在CCD上所成像越接近,当恰好成像清晰时,两色光线是重合成一点的。

PDAF(相位对焦)的基本原理

 PDAF sensor的一种实现如下图所示,在CMOS上面一半的位置加了金属遮盖,这样,被遮住左边一半的像素点就只能接受左边来的光,同理,pair的被遮住右边一般的像素点就只能接受右边来的光。一般在CMOS中,遮住左边和遮住右边的像素点是在相邻位置会成对出现。

PDAF(相位对焦)的基本原理

按照这种原理,我们就可以知道,上图的轴上点发出的光在位于焦前的CCD上所成像应如下图所示。横坐标为pixel的x轴坐标,以光轴中心为0,纵坐标是像素接收到的光强。可以看到,左边遮挡的像素(L)和右边遮挡的像素(R)所得到的图像是关于光轴对称的。所以,我们可以通过求自相关得到两个图像的shift,进而求得sensor需要移动的距离(当然要通过tunning获得这样的对应关系)。

PDAF(相位对焦)的基本原理

讲到这里,应该是没毛病的,对于轴上一点,pdaf是可以有效的得到相位信息的。

那么对于轴外一点呢?如下图所示,当然也是可以的。

PDAF(相位对焦)的基本原理

细心的可能会发现这里有个问题,轴上点和轴外点在CCD上面的成像会彼此交叠,这样,应该会对pdaf的效果产生影响的。好在我们平常的场景中,一般都有一些中低频物体,那么对这些物体的话应该是影响很小的。

 PDAF的最终效果还和什么有关系呢?

1. 相机的F数,F数越小,PDAF的效果越精确。F数越小,景深越小,那么在物体离焦时,得到的弥散斑越大,L和R的shift越大

2. 相机的曝光时间理论上不影响PDAF的效果,但是如果曝光时间过短,图像噪点过大,是会造成pdaf的L和R shift不准确的

3. 物体距离相机越近,pdaf的效果越精确。物体距离相机越近,物体移动相同距离的shift比在物距远时要大,这个跟景深是吻合的

4. 物体的pattern,当物体的pattern呈某种特定形状,会使得pdaf的像素检测不到shift,比如纯色或重复的pattern

5. 轴外点的精度低于轴上点。同样的离焦情况下,轴上点的shift比轴外点要大。

6.物体本身的颜色。当pdaf的像素都是G时,如果物体本身的颜色为R或者B,则会导致pdaf接收到的光能过小,从而影响pdaf的准确性

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/196287.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(1)


相关推荐

  • leetcode-1830. 使字符串有序的最少操作次数(数位dp+逆元+快速幂+排列)「建议收藏」

    leetcode-1830. 使字符串有序的最少操作次数(数位dp+逆元+快速幂+排列)「建议收藏」给你一个字符串 s (下标从 0 开始)。你需要对 s 执行以下操作直到它变为一个有序字符串:找到 最大下标 i ,使得 1 <= i < s.length 且 s[i] < s[i – 1] 。找到 最大下标 j ,使得 i <= j < s.length 且对于所有在闭区间 [i, j] 之间的 k 都有 s[k] < s[i – 1] 。交换下标为 i – 1​​​​ 和 j​​​​ 处的两个字符。将下标 i 开始的字符串后缀反转。请你返回将字符串变成有序

  • linux安装redis_redis安装配置

    linux安装redis_redis安装配置1、在Linux下安装Redis服务。2、Redis安装部署。3、Redis制作开机自启动服务。

  • html发布页,发布页入口.html

    html发布页,发布页入口.html发布页入口$axure.utils.getTransparentGifPath=function(){return’resources/images/transparent.gif’;};$axure.utils.getOtherPath=function(){return’resources/Other.html’;};$axure.utils.getReloadPat…

  • datagrip激活码mac【2021.10最新】

    (datagrip激活码mac)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。https://javaforall.cn/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~1…

  • java数组排序去重_JAVA数组去重排序

    java数组排序去重_JAVA数组去重排序今天也是很丧的一天,天气真的好热啊,胃不舒服,一直打嗝,中午吃了一碗凉掉的粥,然后开始拉肚子,一点不想要过来医院学习(基本上都是自己傻坐着,又没有老师来教我们,幽怨.jpg),但不来又过不去自己心里的那道坎,像是逃课的感觉,就很烦,然后在校门口纠结了十分钟还是过来了,emmmmm……然后就有了下面的代码packageArray;publicclassBubbleSort{publi…

  • c++ auto类型_auto C++

    c++ auto类型_auto C++编程时候常常需要把表达式的值付给变量,需要在声明变量的时候清楚的知道变量是什么类型。然而做到这一点并非那么容易(特别是模板中),有时候根本做不到。为了解决这个问题,C++11新标准就引入了auto类型说明符,用它就能让编译器替我们去分析表达式所属的类型。和原来那些只对应某种特定的类型说明符(例如int)不同。auto让编译器通过初始值来进行类型推演。从而获得定义变量的类型,所以说auto定义的变量必须有初始值。有的时候我们还会遇到这种情况,我们希望从表达式中推断出要定义变量的类型,但却不想用表达式

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号