图像算法---自动对焦AF

一,CDAF反差对焦原理

CDAF,全称Contrast Detection Auto Focus,即反差式对焦或对比度检测自动对焦,是一种广泛应用于入门级数码相机和相机模块化智能手机上的自动对焦技术。以下是关于CDAF反差对焦的详细介绍:
工作原理

1,对比度检测:CDAF通过计算成像中相邻像素之间的对比度来确定焦点位置。具体来说,AF算法从图像信号处理器(ISP)获取统计信息FV(Focus Value),并计算出镜头下一次要移动的距离和方向。

2, 迭代过程:CDAF是一个反复迭代逐渐收敛的过程,类似于手动调焦的过程,即模糊-清晰-模糊,然后逐渐平衡到一个最清晰的位置。这一过程中,系统首先计算反差度,然后根据计算结果移动镜头、比较反差度,直到找到反差度最大的位置。

特点

1,广泛适用性:CDAF对各种类型的镜头和成像情况都有较好的适应性,是目前普及率最高、使用最广泛的自动对焦技术之一。
2,成本相对较低:由于其原理相对简单且易于实现,CDAF在成本上具有优势,使得它在入门级数码相机和智能手机等设备上得到了广泛应用。
3,光线和对比度敏感性:然而,CDAF对光线和对比度的敏感度较高。在低光环境下,由于图像对比度降低,对焦速度可能会受到影响,变得较慢。

聚焦过程

1,聚焦点的选择:CDAF的聚焦点是算法任意指定的,并不对应sensor上的一些特别物理构造,因此没有数量上的限制。这使得系统可以根据图像的特征和需要灵活选择聚焦点。
2,近端和远端遍历:在聚焦过程中,CDAF算法会遍历完近端(Near End)和远端(Far End),即镜头的整个可对焦范围,以找到最佳的焦点位置。

在这里插入图片描述右上图中的白色方框代表对焦点,此处反射出的红色光线在经过镜头,到达传感器前就汇聚在一点,随后又散开,此时图像的对比度是很低的。

将这个对焦点与相邻像素的对比度作分析得出右下角的曲线,失焦状态下对比度低,在聚焦过程中,曲线变得逐渐变得倾斜,但是不能判断什么时候是最高点,只有经过了对焦点后曲线下降再往回移动,反复移动后可以得到一个局部梯度最大值,就认为是对焦成功。

优点:光学设计简单。

缺点:
a. 速度较慢,在出现失焦图像时,机器无法判断该移动多少,甚至往哪个方向移动镜头才能聚焦,甚至到了峰值也不知道,必须移动过了以后再往回移动,来回几次后才能找到对焦点;
b. 在物体对比度较低时会对焦失败,比如雪景,无云的蓝天以及各种纯色的图像。

对比度:
对比度对视觉效果的影响非常关键,一般来说对比度越大,图像越清晰醒目,色彩也越鲜明艳丽;而对比度小,则会让整个画面都灰蒙蒙的。
在这里插入图片描述
二,爬山算法原理

自动对焦爬山算法原理可以归纳为以下几个关键步骤:

1,初始化:
爬山算法从一个随机或预设的初始位置开始,这个位置代表了镜头的初始焦距。

2,清晰度评价:
算法首先在当前焦距下捕获一帧图像,并计算其清晰度评价值(Focus Value)。这个评价值通常基于图像的对比度、边缘清晰度等特征来计算。

3, 搜索方向确定:
算法然后以一个预定的步长沿某一方向(通常是向清晰度更高的方向)移动镜头,并捕获另一帧图像计算其清晰度评价值。
通过比较两帧图像的清晰度评价值,算法确定下一步的移动方向。如果新的评价值更高,说明移动方向正确,继续沿该方向移动;否则,反转移动方向。

4,步长调整:
随着镜头逐渐接近最佳焦距(即清晰度评价值的峰值点),算法会逐步减小步长,以提高对焦精度。

5,循环迭代:
算法重复以上步骤(清晰度评价、搜索方向确定、步长调整),直到满足聚焦精度要求或达到预设的最大迭代次数。

6,优化与改进:
传统的爬山搜索算法分为“粗搜索”和“细搜索”两个步骤。粗搜索采用较大步长快速搜索整个对焦区间内的清晰度评价值峰值;细搜索则是在找到峰值后,采用较小步长在峰值附近进行更精确的搜索。
爬山算法在实际应用中可能存在一些问题,如耗时较长、容易陷入局部最大值和峰值点附近震荡等。为了解决这些问题,研究者们提出了各种优化和改进方法,如采用拟合曲线的方式预测最佳峰值点,以减少搜索时间和提高对焦精度。

总结:
自动对焦爬山算法是一种通过迭代搜索方式实现自动对焦的算法。它基于图像的清晰度评价值来确定镜头的移动方向和步长,通过不断迭代逐渐逼近最佳焦距。虽然爬山算法在自动对焦领域得到了广泛应用,但仍存在一些挑战和限制,需要进一步的研究和改进来提高其性能和适用性。

三,PDAF相位对焦原理

PDAF相位对焦原理可以清晰地分为以下几个步骤进行解释:

1,像素布局与相位差检测:
PDAF技术是在成像传感器的感光元件上预留出一些特殊的遮蔽像素点,这些像素点被专门设计用于相位检测。
遮蔽像素点的设计类似于人类的双眼,它们分别遮盖像素点的左半边和右半边,从而模拟双眼看到物体的角度差异。
这些特殊的像素对被组织成一对一的小区域,每对都包含一个用于对焦的普通像素和一个用于相位差检测的像素。

2,相位差计算:
当光线通过镜头折射后,会在成像传感器上形成干涉图案。这些干涉图案的相位差(PD值)可以用来计算焦点的位置。
通过比较每对像素中的光强差异,系统可以计算出相位差。相位差的大小反映了焦点与当前位置的距离:相位差越大,焦点越远离当前位置;相位差越小,焦点越接近当前位置。

3,对焦位置确定:
利用计算出的相位差信息,系统可以确定当前镜头的对焦位置是否准确。
如果焦点位置不准确,系统会根据相位差的大小和方向,调整镜头的位置,使其向正确的方向移动。

4,算法优化:
相位差的计算和对焦位置的确定通常基于一些数学模型和算法,如互相关方法或锐度检测方法。
这些算法可以帮助系统更准确地计算相位差,并更快速地确定对焦位置。

5, 对焦调整:
一旦系统确定了对焦位置的不准确性及其调整方向,就会控制相机镜头进行微调。
微调的过程会不断重复,直到系统确定镜头已经移动到正确的对焦位置。

在这里插入图片描述
紫色光线代表经过上半部分透镜的光线,蓝色代表经过下半部分透镜的光线,可以看到,CCD在焦前的时候上半部分的CCD接收到的是上半部分的光线,下半部分接收的是下半部分的光线,在焦后的时候,是相反的,上半部分接收的是下半部分的光线,下半部分接收的是上半部分的光线。这样就可以通过区分光线是来自透镜的上半部分还是下半部分,就可以知道是在焦前或者焦后了。当亮色光线重合时,图像最清晰。

在这里插入图片描述
PDAF sensor的一种实现如上图所示,在CMOS上面一半的位置加了金属遮盖,这样,被遮住左边一半的像素点就只能接受右边来的光,同理,pair的被遮住右边一般的像素点就只能接受左边来的光。一般在CMOS中,遮住左边和遮住右边的像素点是在相邻位置会成对出现。
遮蔽因子遮住图像传感器左右的两个像素点得到他们的相位差,再通过算法结算,得到焦点位置,最后通过音圈马达移动镜头的位置,完成对焦。
验证方法
1、 将抓取PDAF log开关打开
2、 抓取log,按照mtk文档排查,读取confidence数据,confidence数据是一组数据,我们需要排查这组数据变化是否较大。
3、 PD线性度测试(在log里查找pdvalue与af位置,看他们是否是呈线性关系)
4、 肉眼看是否是一次性对焦到位,如果是相位对焦。如果不是反差对焦。
Type1、Type2、Type3的区别
1、 Type1:PD像素通过传感器校正,PD值通过传感器计算
2、 Type2:PD像素通过传感器校正,PD像素通过vc输出到isp
3、 Type3:PD像素通过ISP校正,PD像素通过isp从原始图像中提取PD像素由ISP3.0上的PDAF算法提取。
Vc是传输raw和pd像素的两个通道。

总结:
PDAF相位对焦技术通过利用成像传感器上的特殊遮蔽像素点来检测相位差,从而快速、准确地确定焦点的位置。这种技术不仅提高了对焦的速度,还提高了对焦的精度,使得数码相机和摄像机等设备能够更好地捕捉清晰、锐利的图像。

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

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

相关文章

测绘航空摄影乙级资质升级为甲级的过渡期规划

升级测绘航空摄影乙级资质为甲级通常需要一个详细的过渡期规划,这个过程涉及提升技术力量、积累业绩、完善管理体系等多个方面。以下是一个概括性的过渡期规划框架,具体实施时需结合实际情况和最新的资质标准进行调整: 1. 了解最新资质标准 …

每日AI资讯-20240606

智普AI推出全新开源大模型GLM-4-9B 智谱AI日前推出全新开源模型GLM-4-9B,该尺寸模型首次具备多模态能力。据了解,GLM-4-9B,最高支持1M/约两百万字上下文输入,相当于2本《红楼梦》或125篇论文的长度。性能上,GLM-4-9B函…

《手把手教你》系列练习篇之13-python+ selenium自动化测试 -压轴篇(详细教程)

1. 简介 “压轴”原本是戏曲名词,指一场折子戏演出的倒数第二个剧目。在现代社会中有很多应用,比如“压轴戏”,但压轴也是人们知识的一个盲区。“压轴”本意是指倒数第二个节目,而不是人们常说的倒数第一个,倒数第一个…

苗情生态自动监测站

TH-MQ1在现代农业发展中,苗情生态自动监测站的应用已经变得日益重要。这种技术不仅为农业生产提供了实时的数据支持,还通过精准监测和科学决策,提高了农业生产的效率和质量。 首先,苗情生态自动监测站的优势在于其能够实现精准监…

Java并发编程:线程与并发工具

Java并发编程:线程与并发工具 引言 在现代计算机程序中,并发编程是一个不可避免的主题。无论是提升应用程序性能,还是处理多个任务并发执行,Java为开发者提供了丰富的并发编程工具。在本篇文章中,我们将深入探讨Java的并发编程,包括线程的基础知识、线程池的使用以及常…

全流程透明双语大语言模型MAP-Neo,4.5T 高质量数据训练

前言 近年来,大语言模型 (LLM) 已经成为人工智能领域最热门的研究方向之一,并在各种任务中展现出前所未有的性能。然而,由于商业利益的驱动,许多最具竞争力的模型,例如 GPT、Gemini 和 Claude,其训练细节和…

读书笔记-《软件定义安全》之一:SDN和NFV:下一代网络的变革

第1章 SDN和NFV:下一代网络的变革 1.什么是SDN和NFV 1.1 SDN/NFV的体系结构 SDN SDN的体系结构可以分为3层: 基础设施层由经过资源抽象的网络设备组成,仅实现网络转发等数据平面的功能,不包含或仅包含有限的控制平面的功能。…

Unity Magica Cloth2 使用教程

视频教程 参考文章 前提: 找到角色的模型 模之屋,我这里准备了转好FBX格式的吟霖模型点击自取【源自 模之屋】 角色舞蹈动画 点击下载【源自 Mixamo】 导入Unity【如何将原神的角色导入Unity】 三渲二 (必须是2022.3LTS和URP项目) Magica Cloth2 头…

深入探索Stage #13:CSS层叠样式表的IE特性伪协议注入

在网络安全领域,跨站脚本攻击(XSS)是一种常见的攻击手段。随着Web技术的不断发展,攻击者也在不断探索新的攻击途径。本文将详细介绍如何利用IE浏览器的特性,通过CSS层叠样式表进行XSS攻击。 实验环境搭建 为了模拟IE…

spring boot 白盒测试实战

假设项目中存在以下代码: 常量类:public final static String NUMBER_REGEX "\\d"; service:return ReUtil.getGroup0(Constants.NUMBER_REGEX, waybill); 代码解析 解释: return ReUtil.getGroup0(Constants.NUMB…

python学习 - 使用OpenCV库(cv2)和imutils库实现辅助答题卡判别

测试数据见文章顶部位置资源!!! 使用了OpenCV库(cv2)和imutils库。代码的主要目的是处理图像中的问题,如识别图像中的文字,并对其进行分析和排序。 辅助答题卡判别 # -*- coding:utf-8 -*- fr…

python实现邮箱轰炸机

最近在学计算机网络看到套接字的练习 于是应用SMTP协议写了个发送邮箱的玩玩 可以发一大堆垃圾邮件给对方 其中参考了 关于发邮件报错535 Error:authentication failed解决方法http://t.csdnimg.cn/Bc0Dq 已经查询如何获取网易邮箱客户端授权码 base64编码 i…

Mybatis05-一对多和多对一处理

多对一和一对多 多对一 多对一的理解: 多个学生对应一个老师 如果对于学生这边,就是一个多对一的现象,即从学生这边关联一个老师! 结果映射(resultMap): association 一个复杂类型的关联&…

在线Logo背景去除:pixian.ai

文章目录 简介特色 简介 pixian.ai是一款智能图片背景去除工具,进入网页后,会非常醒目地提示你准备【Free】还是【Paid】,这点就非常好,不向有一些网站,主打免费使用,但时不时弹出“免费注册”&#xff0c…

【微信小程序】连接蓝牙设备

1、检查小程序是否授权蓝牙功能 initBluetooth() {const that thiswx.getSetting({success: (res) > {if (res.authSetting.hasOwnProperty(scope.bluetooth)) {//scope.bluetooth属性存在,且为falseif (!res.authSetting[scope.bluetooth]) {wx.showModal({tit…

Python 连接 MySQL 及 SQL增删改查(主要使用sqlalchemy)

目录 一、环境 二、MySQL的连接和使用 2.1方式一:sql为主 2.1.1创建连接 2.1.2 表结构 2.1.3 新增数据 ​编辑 2.1.4 查看数据 ​编辑 2.1.5 修改数据 2.1.6 删除数据 2.2方式二:orm对象关系映射 2.2.1 mysql连接 2.2.2 创建表 2.2.3 新增…

windows 安装pnpm

安装Node.js: 确保系统上已安装Node.js。pnpm需要Node.js来运行。如果尚未安装Node.js,请从其官方网站下载并安装适用于Windows的最新版本。 安装pnpm: 打开命令行工具(如CMD、PowerShell或Git Bash)。使用npm&…

解锁机器学习的无限可能:深入探究scikit-learn的强大功能

解锁机器学习的无限可能:深入探究scikit-learn的强大功能 第一部分:背景和功能介绍 在数据科学和机器学习领域,scikit-learn(简称sklearn)是一个广泛使用的Python库。它提供了简单高效的工具用于数据挖掘和数据分析&a…

【Python短期内快速掌握学习人工智能知识能力】:从零到入门的NLP学习秘籍

⭐️我叫忆_恒心,一名喜欢书写博客的研究生👨‍🎓。 如果觉得本文能帮到您,麻烦点个赞👍呗! 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三连支…

Echarts 在折线图的指定位置绘制一个图标展示

文章目录 需求分析需求 在线段交汇处用一个六边形图标展示 分析 可以使用 markPoint 和 symbol 属性来实现。这是一个更简单和更标准的方法来添加标记点在运行下述代码后,你将在浏览器中看到一个折线图,其中在 [3, 35] (即图表中第四个数据点 Thu 的 y 值为 35 的位置)处…