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的准确性

 

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java中static归纳总结

    java中static归纳总结在《Java编程思想》P86页有这样一段话:  “static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。”  这段话虽然只是说明了static方法的特殊之处,但是可以看出static关键字的基本作用,简而言之,一句话来描述就是:  方便在没有…

    2022年7月17日
    20
  • 高通模式9008模式linux,重磅干货!高通9008模式与数据提取

    高通模式9008模式linux,重磅干货!高通9008模式与数据提取原标题 重磅干货 高通 9008 模式与数据提取上一期的镜像基础知识更完后 本期我们上高级镜像干货 大家还记得 Android 手工镜像的方法吗 我们有读者读完之后提出了新的问题 刚好和 Wendy 最近计划的本文吻合 谢谢这位热心读者 本期我们就来解决这个问题 正文本文讲述的就是针对高通平台智能手机的镜像方法 不需要 root 且免解 BL 锁 采用高通芯片的智能手机 一旦变砖了 通常可以在 9008 模式进行救砖

    2026年1月18日
    1
  • js 字符串转json对象_json字符串转java对象

    js 字符串转json对象_json字符串转java对象js对象转json字符串将js对象转为json格式的字符串,可以用JSON.stringify方法。varuser1={‘height’:170,’name’:’张三’};varuser1Str=JSON.stringify(user1)console.info(user1Str)typeofuser1Str使用typeof来获取对象user1Str的类型,能看到控制台输出的user1的值以及它的类型string。{“height”:170,“name”:“张三”}“s

    2025年12月16日
    4
  • 进程调度算法c语言实现_进程调度算法有哪些

    进程调度算法c语言实现_进程调度算法有哪些对一个非抢占式多道批处理系统采用以下算法的任意两种,实现进程调度,并计算进程的开始执行时间,周转时间,带权周转时间,平均周转时间,平均带权周转时间1.先来先服务算法2.短进程优先算法*3.高响应比优先算法三、设计思想每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。进程的优先数及需要的运行时间…

    2022年9月29日
    2
  • 2019年2月10日训练日记

    2019年2月10日训练日记这是过完年第一天的训练,事情都忙完了,可以专心训练了,这个阶段开始训练关于stl容器的相关知识,然后做的题目都是英文题,完全看不懂,只能一点点的查单词翻译。做的很难受,而且很多知识都没有接触过,只能一点一点百度,看网课学习,所以一下午只a了一道题,不过收获还是蛮大的,以后英语一定要好好学,不然题意都看不懂,看不懂题怎么做题呢,然后就是要把stl的各类容器个好好练习,熟练掌握,做第一道题,我没有用s…

    2022年6月17日
    30
  • volatile关键字作用

    volatile关键字作用一、作用简述内存可见性:保证变量的可见性:当一个被volatile关键字修饰的变量被一个线程修改的时候,其他线程可以立刻得到修改之后的结果。当一个线程向被volatile关键字修饰的变量写入数据的时候,虚拟机会强制它被值刷新到主内存中。当一个线程用到被volatile关键字修饰的值的时候,虚拟机会强制要求它从主内存中读取。 屏蔽JVM指令重排序(防止JVM编译源码生成class时使用重排序)…

    2022年6月1日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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