【图像处理】:相机对焦的原理和实现方法

news2024/11/25 23:13:38

相机对焦的原理和实现方法

  • 1 原理介绍:
    • 1.1点扩散函数“原理:
    • 1.2 测距原理:对焦的本质是测距:
    • 1.3.相位检测只原理:
  • 2.实现方法2

1 原理介绍:

对焦有三种思路:

1.1点扩散函数“原理:

也就是观测画面中线条边缘的对比度,对比度最高时即合焦。与此同时,对比度最高也意味着入射光线°形成的每个“点”的能量达到最大,因为合焦即光线完全汇聚,所以即可以通过对比度高低来判断,也可以通过能量大小来判断。但问题就是,焦点在前在后所造成的低反差,在反差对焦系统只里没有差别,所以需要推动焦点前后移动反复检测出正确的聚焦位置。人眼看着毛玻璃纯手动对焦Q也是如此。

1.2 测距原理:对焦的本质是测距:

也就是把焦平面推移到你希望合焦的物体上。从某种意义上讲焦点往后的的相距空间内部有无数个合焦平面,你只需要前后移动传感器平面,即可获得焦点推移的效果。因此不论是早期三角函数·黄斑测距,还是激光对焦测距,都是通过判定距离来合焦。缺点是测距的范围有限。

1.3.相位检测只原理:

相位对焦虽然也涉及测距,但值得单独一提。
[失焦]时的[画面虚化],虽然都表现为模糊,但其实分为两种,一种是焦点在前,一种是焦点在后一这两种[虚化]是不一样的,在相位对焦系统只里是可分辨的。也就是说,不管是裂像屏还是dual pixel裂相微透镜%,他们都能够直接分辨此刻模糊的画面中的焦点在后还是在前。也正是如此,相位对焦能够直接检测拍摄对象的相对位置,一步将焦平面推移正确,而不用反复拉风箱检测焦点。因此相位对焦是目前最主流的对焦方式。当然也更可以配合反差或激光来获得最准确的结果。相位对焦的问题在于,只能精确检测与对焦模块相垂直或附近角度的线条。纵切的像素检测横向线条,横切的像素检测纵向线条。纵切的像素面对纵向的线条时则左右像素画面一致,这就无法形成上下不一的裂相了。如果你使用过裂像对焦屏只,这个道理就更好理解。

具体而言,单反相机通过在反光镜上挖出半反射区域,让部分原本应该进入取景器的光线射入相位对焦模块,来专门用于对焦。而无反相机只则更多通过在传感器上的掏出几百个像素来作为相位对焦检测点来实现。更高级的传感器,比如佳能新机器以及绝大部分旗舰手机的主摄,则使用全像素双核对焦的方式,把所有成像像素一分为二,全面无死角地参与相位检测,从而实现高速准确的对焦。
当然,一分为四也可以。

参考传送门:

2.实现方法2

     通过某种检测手段来获得目标场景在系统中精确的焦点位置,并配合电机驱动来实现合焦,一般可以分为**主动对焦和被动对焦**:

主动对焦:利用测距手段来获得物距,再通过成像模型在实现合焦,比如双目,结构光,tof这种。在平时用到的相机中。
被动对焦,即基于获得的图像信息并根据定义的评价函数来实现合焦。
被动对焦也有两种常用的方法:
第一种是CDAF,也就是根据图像的对比度,或者说是锐度,来进行调焦。在调焦的单位,通过扫描记录各位置处的图像,基于锐度评价函数来计算锐度值(每个图像都有个锐度值) 。锐度评价函数的思想就是在相机聚焦好的时候,图像细节丰富,其局部特征很明显
在这里插入图片描述

第二种是PDAF,相位检测聚焦,是目前单反相机中普遍的方法,类似人的眼睛通过视差来判断深度的对焦万法,通过相机不同像素的相位差信息,来判断出对焦位置(相位差为零)。光束通过镜头被分成两个部分,分别在不同的两组成像器件上成像。
若合焦,那么两幅图像相同,若离焦,则两幅图像有所偏移。
PDAF通过两幅图像的偏移量。推算出离焦量,从而实现对焦。我们这里的相位差是通过senso产生的,有dual PD,shield pixel等方式。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信小程序代码审核,提示需要添加文娱-其他视频类目

这个解决办法有三个 一个是按照指引去申请资质 第二个是通过后端写一个鉴权接口,审核时候去通过接口返回的布尔值去隐藏掉视频模块,通过后再显示出来 第三个是服务除视频内容外还存在其他形式的情况可以通过引入第三方视频插件来解决,但是…

初识Golang,集简洁与性能与一体的语言

文章目录 一、Go语言介绍二、Go语言特性三、Go语言用途四、开发环境搭建五、建立工作区并创建Go程序六、入口文件基本代码介绍七、go命令介绍7.1 基本命令7.2 build 与 run命令7.3 install命令介绍 八、命名规范8.1 变量规范定义8.2 关键字8.3 保留字8.4 需要注意的问题 道阻且…

AIGC 爆火,浪潮信息要做大模型的数据存储大底座

AIGC 在 2023 年爆火,各类大模型层出不穷,参数动辄达到千亿数量级。这些背后,数据的类型和形式也走向复杂多样。例如大模型会采用到我们真实物理世界中的文字、视觉、音频、3D、雷达、多谱等复杂多样的不同模态信号和数据,数据则又…

【Android复习笔记】系统进程(一)

Android 系统进程有哪些 先来一个整体结构图从宏观上理解Android系统的进程结构布局: 这里我们简单总结一下: 系统的第一个进程其实是0号进程(又叫swapper进程/Idle进程) 0号进程fork出了1号进程(init进程)和2号进程(kthreadd进程) 1号进程是所有普通用户进程的祖先,2号进程…

利用Adobe Acrobat DC实现图片和PDF互相转换

一、图片转PDF 可以实现多张或者单张图片转PDF! 这个需要使用到Adobe Acrobat DC的文件合并功能,因为Adobe Acrobat DC的文件合并,不仅可以合并多个pdf文件,也支持合并图片文件。 如图,直接选中多张图片合成即可: 添…

微服务系列文章之 Redisson实现分布式锁(3)

一、概述 1、技术架构 项目总体技术选型 SpringBoot2.4.5 Maven3.5.4 Redisson3.5.4 lombok(插件)2、加锁方式 该项目支持 自定义注解加锁 和 常规加锁 两种模式 自定义注解加锁 DistributedLock(value"goods", leaseTime5)public String lockDecreaseStock(…

84. 求1+2+…+n

链接: 链接 题目: 求 12…n12…n,要求不能使用乘除法、forfor、whilewhile、ifif、elseelse、switchswitch、casecase 等关键字及条件判断语句 (A?B:C)(A?B:C)。 数据范围 1≤n≤500001≤n≤50000。 样例 输入:10输出&#xff1…

【MySQL】不允许你不会使用组合查询

🎬 博客主页:博主链接 🎥 本文由 M malloc 原创,首发于 CSDN🙉 🎄 学习专栏推荐:LeetCode刷题集 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正&#xff0…

ASEMI-1N4007是什么二极管,1N4007是什么类型的二极管

编辑-Z 1N4007是一种常见的二极管,属于快恢复二极管(Fast Recovery Diode)的一种。它是一种高压、高电流的整流二极管,常用于电源电路中的整流器。1N4007的最大反向电压为1000V,最大正向电流为1A,具有较低…

第十七章 原理篇:Deformable DETR

参考教程: 论文:https://arxiv.org/pdf/2010.04159.pdf 源码:https://github.com/fundamentalvision/Deformable-DETR 文章目录 Deformable ConvDeformable DETR计算量MethodDeformable Attention ModuleDeformAttn计算量Multi-scale Defor…

JVM学习笔记(二)

学习黑马视频:01_什么是jvm_哔哩哔哩_bilibili 一、JVM内存结构 程序计数器 虚拟机栈 本地方法栈 堆 方法区 程序计数器、栈、本地方法栈,都是线程私有的。堆、方法区是线程共享的区域。 1. 虚拟机栈(JVM Stacks) 1&#xff09…

avue 自定义按钮修改后触发表单自带的校验方法;avue表单提交

代码&#xff1a; <avue-form :option"option" v-model"publishForm" ref"publishForm" submit"handleSubmit"><template slot-scope"{size}" slot"menuForm"><el-button :size"size" …

LayUi之选项卡的详解(附源码讲解)

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于LayUi的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.选项卡是什么 二.选项卡在什么时候使用…

最新软件工程毕业设计选题推荐100例

文章目录 0 简介1 如何选题2 最新软件工程毕设选题3 最后 0 简介 学长搜集分享最新的软件工程业专业毕设选题&#xff0c;难度适中&#xff0c;适合作为毕业设计&#xff0c;大家参考。 学长整理的题目标准&#xff1a; 相对容易工作量达标题目新颖 1 如何选题 最近非常多的…

IDEA debug 断点调试技巧

1、首先看下IDEA中Debug模式下的界面&#xff1a; ① 以Debug模式启动服务&#xff0c;左边的一个按钮则是以Run模式启动。在开发中&#xff0c;我一般会直接启动Debug模式&#xff0c;方便随时调试代码。 ② 断点&#xff1a;在左边行号栏单击左键&#xff0c;或者快捷键Ctrl…

Git教程-廖雪峰-个人归纳更新总结

文章目录 前言Git简介&#xff1a;Git的诞生&#xff1a;集中式和分布式 安装Git&#xff1a;创建版本库时光穿梭机(*)版本回退撤销修改删除文件 远程仓库&#xff1a;添加远程仓库&#xff1a;删除远程库与本地库的链接&#xff1a; 从远程库克隆(*) 使用GitHub 前言 日常需要…

微服务系列文章之 Redisson实现分布式锁

一、高效分布式锁 当我们在设计分布式锁的时候&#xff0c;我们应该考虑分布式锁至少要满足的一些条件&#xff0c;同时考虑如何高效的设计分布式锁&#xff0c;这里我认为以下几点是必须要考虑的。 1、互斥 在分布式高并发的条件下&#xff0c;我们最需要保证&#xff0c;同…

浅谈Python+requests+pytest接口自动化测试框架的搭建

框架的设计思路 首先要明确进行接口自动化需要的步骤&#xff0c;如下图所示&#xff1a; ​然后逐步拆解需要完成的工作&#xff1a; 1&#xff09;了解分析需求&#xff1a;了解接口要实现的功能 2&#xff09;数据准备&#xff1a;根据开发文档确定接口的基本情况&#x…

SuperMap iClient3D for Cesium最短路径分析

作者&#xff1a;Mei 目录 前言实现思路实现步骤1、构建二维网络数据集1.1拓扑检查1.2线拓扑数据集处理1.3构建二维网络数据集 2、发布网络分析服务3、实现代码 前言 在交通、消防业务场景中&#xff0c;如果某地发生火灾或者交通事故&#xff0c;需要快速规划出最短抢救路线&a…

河南元宇宙创造者大赛成果展示空间“元豫宙”斩获TopDigital创新营销奖金奖

6月29日&#xff0c;在上海举行的TopDigital营销盛典上&#xff0c;河南文旅元宇宙空间“元豫宙”&#xff0c;凭借其匠心独具的创新性场景设计、美轮美奂的超写实场景呈现、新潮炫酷的沉浸式虚拟体验&#xff0c;斩获TopDigital创新营销奖虚拟场景设计组金奖。元豫宙&#xff…