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

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-06 20:14:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-06 20:14:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-06 20:14:05       82 阅读
  4. Python语言-面向对象

    2024-06-06 20:14:05       91 阅读

热门阅读

  1. 运用selenium爬取京东商品数据储存到MySQL数据库中

    2024-06-06 20:14:05       35 阅读
  2. 作业6.6

    作业6.6

    2024-06-06 20:14:05      32 阅读
  3. SpringBoot默认配置文件

    2024-06-06 20:14:05       22 阅读
  4. PyQt5学习系列之ui转py后的使用

    2024-06-06 20:14:05       30 阅读
  5. mysql 里面有rowid吗

    2024-06-06 20:14:05       22 阅读
  6. mysql多启动

    2024-06-06 20:14:05       26 阅读
  7. cuda编程学习:写cuda程序的基本流程

    2024-06-06 20:14:05       33 阅读
  8. 富格林:谨慎欺诈套路防止被骗

    2024-06-06 20:14:05       26 阅读
  9. C++STL---list模拟实现

    2024-06-06 20:14:05       22 阅读
  10. 力扣 1.两数之和

    2024-06-06 20:14:05       29 阅读
  11. 前端高频面试题

    2024-06-06 20:14:05       28 阅读