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

news2024/10/5 13:50:01

一,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.coloradmin.cn/o/1796611.html

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

相关文章

nginx动静分离和反向代理

一、动静分离 动静分离指的是将动态内容和静态内容分开处理。动态内容通常由后端应用程序生成,例如PHP、Python或Node.js,静态内容则包括图片、CSS、JavaScript等文件。 例子: #代理服务器一 server{listen 80;server_name www.dj.com;r…

C语言 | Leetcode C语言题解之第135题分发糖果

题目&#xff1a; 题解&#xff1a; int candy(int* ratings, int ratingsSize) {int ret 1;int inc 1, dec 0, pre 1;for (int i 1; i < ratingsSize; i) {if (ratings[i] > ratings[i - 1]) {dec 0;pre ratings[i] ratings[i - 1] ? 1 : pre 1;ret pre;inc…

ceph对象储存的使用

radosgw-admin user create --uid“user1” --display-name“user1” #创建用户 sudo apt install s3cmd cephadminceph-mgr01:~/ceph-cluster/s3$ s3cmd --configure Enter new values or accept defaults in brackets with Enter. Refer to user manual for detailed desc…

YUM安装httpd实验配置apache

实验目的及实验要求&#xff1a; 实验目的&#xff1a; 2.实验要求&#xff1a; &#xff08;1&#xff09;完成命令的编写&#xff0c;并能正确运行&#xff1b; &#xff08;2&#xff09;从中熟练掌握命令的功能及作用。 实验设备及软件&#xff1a; pc机 配置好Lin…

我们设计制造MW级水冷负载电阻器-数据中心船舶岸电发电机组测试大功率负载RLC阻感容集装箱负载

UEPR系列电阻采用先进材料制造&#xff0c;采用专利设计&#xff0c;将电阻与冷却液完全隔离&#xff0c;为水冷应用提供重量轻、体积小、超大功率的解决方案。其革命性的模块化设计意味着它们可以串联在一起&#xff0c;以满足您的电力需求。应用于发电、电力传输、电气传动等…

2024年汉字小达人活动还有4个多月开赛:来做18道历年选择题备考

根据近年的安排&#xff0c;2024年第11届汉字小达人比赛还有4个多月就启动&#xff0c;那么孩子们如何利用这段时间有条不紊地备考呢&#xff1f;我的建议是两手准备&#xff1a;①把小学1-5年级的语文课本上的知识点熟悉&#xff0c;重点是字、词、成语、古诗。②把历年真题刷…

JavaSE中的if语句、switch语句:如何控制程序流程?

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

安防监控平台智能边缘分析一体机视频监控系统室内消防通道占用检测算法

随着城市化进程的加速&#xff0c;高层建筑如雨后春笋般涌现。这些建筑的消防安全问题日益凸显&#xff0c;尤其是消防通道的占用问题。为了解决这一问题&#xff0c;智能边缘分析一体机被引入到室内消防通道占用检测中&#xff0c;以提高检测效率和准确性。本文将探讨这一技术…

ctfshow-web入门-命令执行(web30-web36)

目录 1、web30 2、web31 3、web32 4、web33 5、web34 6、web35 7、web36 命令执行&#xff0c;需要严格的过滤 1、web30 代码差不多&#xff0c;就是过滤的东西变多了&#xff1a; preg_match("/flag|system|php/i", $c) 这里不让用 system &#xff0c;我们…

RainBond 制作应用并上架【以ElasticSearch为例】

文章目录 安装 ElasticSearch 集群第 1 步:添加组件第 2 步:查看组件第 3 步:访问组件制作 ElasticSearch 组件准备工作ElasticSearch 集群原理尝试 Helm 安装 ES 集群RainBond 制作 ES 思路源代码Dockerfiledocker-entrypoint.shelasticsearch.yml制作组件第 1 步:添加组件…

JSONPath使用指南(掌握JSON数据提取)

大家好&#xff0c;在处理 JSON&#xff08;JavaScript Object Notation&#xff09;数据时&#xff0c;有时需要从复杂的结构中提取特定部分。JSONPath 就是一个非常有用的工具&#xff0c;它提供了一种简洁而强大的方式来定位和提取 JSON 数据中的元素。无论是在 Web 开发中处…

Sui主网升级至V1.26.2版本

Sui主网现已升级至V1.26.2版本&#xff0c;同时Sui协议升级至48版本。 其他升级要点如下所示&#xff1a; 协议 #17881 Sui原生随机性功能现在已在测试网启用。 索引器 #17649 JSON-RPC&#xff1a;现在JSON-RPC在查询时将返回正确的币种元数据和总供应量信息。 索引器…

病理级Polymer酶标二抗IHC试剂盒上线!

免疫组织化学 Immunohistochemistry,lHC 是利用抗体与抗原特异性识别原理&#xff0c;对组织样本中的抗原进行定位/定性分析的实验技术。组织切片保留了样品的解剖学结构特征&#xff0c;从而可以高分辨率地显现蛋白在细胞&#xff0c;甚至细胞器中的定位。基于以上特性&…

15. WinCC操作记录显示(模拟量修改与数字量变化)

方法一&#xff1a;记录方法与模拟量归档类似。该方法适合记录操作员修改模拟量或者少量的二进制变量。 在变量管理——过程值归档中新建组“操作记录”&#xff0c;然后将操作记录变量添加至该组下面&#xff0c;如果操作变量是二进制&#xff0c;那“归档于”列选择每个信号…

深入剖析Tomcat(九) Session的实现原理

提到Session&#xff0c;相信大家都不陌生&#xff0c;Http协议本身是无状态的&#xff0c;每次请求都是独立的&#xff0c;而当我们想要将多次请求建立某种关系的时候&#xff0c;就会用到CookieSession这个组合&#xff0c;也就是常说的“会话”概念&#xff0c;将多次请求当…

【git】subtree 简单教程

git subtree使用案例 &#x1f604;生命不息&#xff0c;写作不止 &#x1f525; 继续踏上学习之路&#xff0c;学之分享笔记 &#x1f44a; 总有一天我也能像各位大佬一样 &#x1f3c6; 博客首页 怒放吧德德 To记录领地 &#x1f31d;分享学习心得&#xff0c;欢迎指正&am…

ceph radosgw 原有zone placement信息丢失数据恢复

概述 近期遇到一个故障环境&#xff0c;因为某些原因&#xff0c;导致集群原有zone、zonegroup等信息丢失&#xff08;osd&#xff0c;pool等状态均健康&#xff09;。原有桶和数据无法访问&#xff0c;经过一些列fix后修复&#xff0c; 记录过程 恢复realm和pool相关信息 重…

Golang TCP网络编程

文章目录 网络编程介绍TCP网络编程服务器监听客户端连接服务器服务端获取连接向连接中写入数据从连接中读取数据关闭连接/监听器 简易的TCP回声服务器效果展示服务端处理逻辑客户端处理逻辑 网络编程介绍 网络编程介绍 网络编程是指通过计算机网络实现程序间通信的一种编程技术…

SLC Flash SD芯片:高性能存储的优选

SLC Flash SD芯片是一种采用单阶存储单元&#xff08;SingleLevel Cell&#xff0c;SLC&#xff09;技术的Secure Digital&#xff08;SD&#xff09;存储卡。SLC技术以其快速的传输速度、低功耗和较长的存储单元寿命而闻名。 MK米客方德 SLC Flash的优势 1. 快速的传输速度&a…

蓝牙AOA基站定位的优势与应用前景

在科技飞速发展的今天&#xff0c;人们对于定位技术的精度和稳定性要求越来越高。蓝牙AOA基站定位技术应运而生&#xff0c;以其高精度和低通信开销的特点&#xff0c;正逐渐改变我们对室内定位的认知。本文我们就一起来具体了解一下关于蓝牙AOA基站定位技术的优势及应用前景&a…