按下快门前的算法——对焦

对焦算法可以分为测距式,相位式,反差式。

其中测距式是通过激光,(TOF,Time of Flight)等主动式地得知物距,然后对焦。更常用的是后两者。

反差式CDAF(Contrast Detection Auto Focus

反差式如上图所示,可以看到镜头明显有“拉风箱”一般的往复推拉,遍历得到一个对比度最好的结果。这种对焦方法相对精准,但耗时较长。

CDAF具体使用的是爬山算法。爬山算法包含两个过程,第一阶段叫粗扫(Coarse Search),第二阶段叫细扫(Fine Search)。算法控制马达移动镜头朝一个方向移动时,图像对比度会出现逐渐增大然后变小的过程,类似爬山。

相位式PDAF(Phase Detection Auto Focus)

先来了解一下双眼效应和拇指测距。

两个眼睛因为位置不同,他们的最佳对焦点是不同的,分别需要特定角度的光线才能成最清晰的像。所以拇指测距时,分别用两只眼睛对着拇指,沿着这个方向的延长线在目标物中可以得到不同的两点。这两点的长度/瞳距=目标距离/手臂长度。

知乎日报 - 知乎

既然拇指测距可以测得距离,那么PDAF也是一样的道理。PDAF根据像素对(PD Pixel Pair)的相位差衡量ROI区域的清晰度。

那么什么是相位差呢?PDAF怎么利用相位差呢?

上图中虽然光线只画了一路(对称的),但是实际上光线不会是一条,所以在sensor上的响应是以其为波峰的分布。如果没有对焦好,那么会存在两个波峰,子图4比子图3对焦更差,两个波峰的距离就越远。当对焦完美时,两个波峰重叠。

因为对称的缘故,两个波的形状是一样的,只是有一个相对的偏移量,这个偏移就是相位差。相位差可能是正数可能是负数,相位取0时清晰度最高。

因为出厂的时候标定过,所以只需要知道相位差,马达马上就知道该把镜头往哪个方向推,推多远,这也是为什么PD对焦更快的原因。PDAF对焦速度比CAF快一倍以上,是现在手机上的主流。

How Phase Detection Autofocus Works

由微分的思想,波可以使用两个有差异性的点表示。这两个点如何构造,出现了多种PD sensor。按照PD点的个数可以分为稀疏的和全局的。我们都以全像素All-pixel为例。

Dual PD

dual PD把每个像素进一步细分。dual的含义就是“双重的”,因为同样属于shield pd,但相比于更早的L和R隔了很远,dual PD的左右PD同在一个微透镜下:

每个color filter下面有两个二极管:

对焦阶段两种光电二极管分别成像,在对焦完成后真正成像的阶段,两个光电二极管合并起来,所以不会存在相位差的干扰。

当dual PD技术和quad bayer结合起来,就是Octa PD:

OCL

OCL是“On-Chip Lens”的缩写,它指的是几个相邻的像素共享感光元件上的微透镜。有2x1OCL,有2x2OCL。

2x2ocl指ocl技术和quad bayer联合起来。同一个颜色通道的四个象限共用一个透镜:

当光照条件好的时候可以remoisc得到高分辨率图像,光照差的时候通过bining可以得到更好的画质。

二者的区别

二者都是全像素级别的PD对焦。区别只是相位差的来源不一样,Octa PD是更传统的dual PD,2x2OCL是共用透镜带来的四个象限的差异。

前者真正成像时得益于有两个二极管,所以可以合并,消除相位差,这样因为quad raw同一个颜色通道的四个值更加统一。而2x2OCL相位差无法消除,同一个颜色通道的四个象限在成像时也会和图像梯度有规律地变化,不利于后续图像处理。

Octa PD因为要集成两个二极管,微透镜数目也更多,所以一般当sensor较大时使用这种技术;OCL则使用在中型sensor上。如下图所示:

在实际中,一般是先使用PD对焦,快速将镜头推到大致准确的位置,然后再进行反差式对焦,让图像真正达到对比度高的理想状态。


reference:

All-pixel Auto Focus (AF) Technology | Image Sensor for Mobile | Technology | Sony Semiconductor Solutions Grouphttps://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8993499All-pixel Auto Focus (AF) Technology | Image Sensor for Mobile | Technology | Sony Semiconductor Solutions Group

https://www.ovt.com/products/ov50a/

Sony unveils 2x2 on-chip lens tech for Quad Bayer sensors, which promises better AF performance - GSMArena.com news

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/375066.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式7-装饰模式

设计模式7-装饰模式 写在前面动机模式定义结构代码推导原始代码解决问题分析 选择装饰模式的理由1. 职责分离(Single Responsibility Principle)2. 动态扩展功能3. 避免类爆炸4. 开闭原则(Open/Closed Principle)5. 更好的组合复用…

Vulkan入门系列0- Vulkan与OpenGL的区别

一:概述 Vulkan 是新一代图形和计算API,是由科纳斯组织(Khronos Group)维护的一套跨平台的、开放标准的、现代GPU 的编程接口,它仅仅是规定了一套编程接口,并没有接口的具体实现,实现是由硬件厂商适配实现的,市面上像NVIDIA、AMD和Intel等国际大厂基本提供了完整的…

一天20MW!天途推出无人机全自主光伏巡检平台

01 光伏电站的运维挑战 光伏发电为人类提供了可持续的清洁能源供给。一般集中式电站建设在空旷的地区,如荒地、沙漠等地区;分布式电站建设在用户的屋顶和建筑物表面,如住宅、商业建筑、工业厂房等地区。 随着光伏电站的大规模的使用&#x…

流程图编辑框架LogicFlow-vue-ts和js

LogicFlow官网https://site.logic-flow.cn/LogicFlow 是一款流程图编辑框架,提供了一系列流程图交互、编辑所必需的功能和灵活的节点自定义、插件等拓展机制。LogicFlow支持前端研发自定义开发各种逻辑编排场景,如流程图、ER图、BPMN流程等。在工作审批配…

WebDriver与浏览器通信的深度剖析与探索

在自动化测试的世界里,WebDriver无疑是连接测试脚本与浏览器之间的桥梁,它让复杂的自动化测试成为可能。本文将深入探讨WebDriver与浏览器之间的通信机制,揭示它们之间如何协同工作,以及这一过程中涉及的关键技术和挑战。 一、We…

Lingo学习(二)——线性规划基础、矩阵工厂

一、线性规划基础 (一)方法 ① 一个线性规划中只含一个目标函数。(两个以上是多目标线性规划,Lingo无法直接解) ② 求目标函数的最大值或最小值分别用max …或min …来表示。 ③ 以!开头,以;结束的语句是注释语句; ④ 线性规划和非线性规划的本质…

分布式应用系统设计:即时消息系统

即时消息(IM)系统,涉及:站内消息系统 组件如下; 客户端: WEB页面,IM桌面客户端。通过WebSocket 跟ChatService后端服务连接 Chat Service: 提供WebSocket接口,并保持跟“客户端”状态的维护。…

独立开发者系列(23)——Linux掌握小结

只要开发系统,就绕不开使用Linux服务器 ,而Linux除了使用BT面板进行初级管理,很多稍微高级点的管理,还是需要命令行进行的。这里总结在不需要精通的情况下,掌握常见命令和环境的相关配置。 (1&#xff09…

MyBatis框架学习笔记(三):MyBatis重要文件详解:配置文件与映射文件

1 mybatis-config.xml-配置文件详解 1.1 说明 (1)mybatis 的核心配置文件(mybatis-config.xml),比如配置 jdbc 连接信息,注册 mapper 等等都是在这个文件中进行配置,我们需要对这个配置文件有详细的了解 (2&#x…

LabVIEW滤波器性能研究

为了研究滤波器的滤波性能,采用LabVIEW设计了一套滤波器性能研究系统。该系统通过LabVIEW中的波形生成函数,输出幅值及频率可调的正弦波和白噪声两种信号,并将白噪声与正弦波叠加,再通过滤波器输出纯净的正弦波信号。系统通过FFT&…

git仓库使用

一、没有仓库 首先要有gitee账号 创建仓库 有了仓库就按已有仓库进行操作 二、已有仓库 先让仓库负责人把自己拉进仓库 成为开发者或者管理员 git clone 仓库地址 开始工作 git add . git commit -m “ 提交说明” git pull 更新一下也叫同步 将线上代码更新到本地 git pu…

Golang | Leetcode Golang题解之第230题二叉搜索树中第K小的元素

题目: 题解: type MyBst struct {root *TreeNodenodeNum map[*TreeNode]int // 统计以每个结点为根结点的子树的结点数,并存储在哈希表中 }// 统计以 node 为根结点的子树的结点数 func (t *MyBst) countNodeNum(node *TreeNode) int {if…

JAVA之Scanner类的使用

一、Scanner类的介绍 java语言中的Scanner类可以实现从键盘输入内容的操作。通常我们使用该类完成一些用户信息的采集,通过java中的变量保存这些信息。 二、Scanner类的使用 1.使用步骤 a)导包:import java.util.Scanner; b)创…

2024年西安铁一中集训DAY1---- 杂题选讲

文章目录 牛客练习赛125 E 联谊活动(枚举,分讨)牛客练习赛125 F 玻璃弹珠(类莫队,离线询问,数据结构)2024ccpc长春邀请赛 D Parallel Lines(随机化)2024ccpc长春邀请赛 E…

昇思25天学习打卡营第14天|基于MindSpore的红酒分类实验

背景介绍 本文主要介绍使用MindSpore在部分wine数据集上进行KNN实验。 K近邻算法原理 K近邻算法(K-Nearest-Neighbor, KNN)是一种用于分类和回归的非参数统计方法,最初由 Cover和Hart于1968年提出(Cover等人,1967),是机器学习最…

了解AsyncRotationController

概述 基于android 15.0, 以从强制横屏App上滑退回桌面流程来分析 frameworks/base/services/core/java/com/android/server/wm/AsyncRotationController.javaAsyncRotationController 是一种控制器,用于处理设备显示屏旋转时非活动窗口的异步更新。这种控制器通过…

国产化框架PaddleClas结合Swanlab进行杂草分类

1. 项目介绍 杂草是农业中的主要问题之一,对作物生长和产量造成严重威胁。传统的手动识别和管理方式效率低下且不够精确,因此需要借助先进的计算机视觉技术来提升农业生产的效率和质量。ResNet作为一种深度学习模型,在处理复杂的图像分类任务…

C++入门基础篇(1)

欢迎大家来到海盗猫鸥的博客—— 断更许久,让我们继续好好学习吧! 目录 1.namespace命名空间 命名空间的存在价值: 命名空间的定义: 命名空间的使用: 2.C输入输出函数 使用: 3.缺省参数 4.函数重载…

可观察性优势:掌握当代编程技术

反馈循环是我们开发人员工作的关键。它们为我们提供信息,并让我们从用户过去和现在的行为中学习。这意味着我们可以根据过去的反应进行主动开发。 TestComplete 是一款自动化UI测试工具,这款工具目前在全球范围内被广泛应用于进行桌面、移动和Web应用的…

Redis+Caffeine 实现两级缓存实战

RedisCaffeine 实现两级缓存 背景 ​ 事情的开始是这样的,前段时间接了个需求,给公司的商城官网提供一个查询预计送达时间的接口。接口很简单,根据请求传的城市仓库发货时间查询快递的预计送达时间。因为商城下单就会调用这个接口&#xff…