摄像头模组 PDAF对焦(Phase Detection Auto Focus)
本文主要是最近看的两个文档的总结,相对零散的笔记,包括《imx298 software reference PDAF》与《PDAF Truly》。
1、PDAF功能的实现需要使用到shield pixel的概念,包括right-half-shield与left-half-shield两种,起到模仿左右眼的类似功能,参考如下图片。
2、shield pixels主要分布在芯片居中的92%范围内,其中的32×32规格的pixel array被标称为1个block,shield pixel在这一个block中的占比为1/64,即每个block中有16个shield pixel,right-half-shield与left-half-shield各8个,不同厂家之间组织方式会有区别,可能出于规避专利的问题。
3、使用PDAF功能是需要进行模组校正(Calibration),包括SPC(shield pixel calibration)与DCC(defocus conversion coefficient)。严格意义上讲,SPC功能才是正常的校正动作,而DCC功能非校正而是生成DAC与Focus的系数关系,进而实现PDAF功能。
4、SPC:为了实现PDAF功能,芯片的像素矩阵中,部分G pixel进行了遮光结构设计,光能信号比正常的G pixel要弱一些。因此,为了达到正常G pixel的能效水平,需要对此类型的G pixel增加额外的增益,此动作称之为SPC。校正前后的效果可参考下面图示,其中横坐标为像高对应位置,而纵坐标则为pixel感光效能。
5、如上图所示,两根不同走势dash线分别表示right-half-shield与left-half-shield两种情况,通过调整pixel的增益,是的其效能水平与其他正常的G pixel一致。此校正过程使用的是纯白的背透式标靶,拍摄纯白标靶后通过线性插值获得各个对应位置的增益,并把此增益写入OTP位置,此OTP数据称为SPC Map,共两份Map,right-half-shield与left-half-shield各一份。
6、下图是SPC Map的组织方式,总共将成像区域划分为9×7个block,其中每个block包含512×512个pixels,最左上角的第一个block中心点为(280,212)。这63个blocks的中心点被称为Knots(绳子打结处的节点),生成63个插值后的数据,数据大概计算方式为G-pixel/PD-pixel,只有G pixel有shield pixel,其他没有。
7、DCC:在讨论PDAF功能的时候,大部分情况下我们都会声称通过该功能模组能够知道当前被摄物的距离。其实我们并非物理上知道被摄物的距离,而是通过左右shield pixel之间的差异来将被摄物映射到镜头移动距离中的某个位置。系统在进行对焦的时候,需要将检测到的相位差(phase difference)转换为离焦率(Defocus Value),这个转换过程应用到的表单数据称为DCC(defocus conversion coefficient)。
8、DCC的测试计算方式包括如下的动作:
将模组的有效对焦行程切分为10等分,即(近焦DAC - 远焦DAC)/10,以此来覆盖马达的对焦范围;
在每个对焦DAC位置进行对焦,并记录当前对焦DAC位置的相位差;
完成马达对焦行程后取一组10pcs的对角DAC与获得的PD数据进行做比(PD/DAC);
生成10pcs相近的比值记为k,DAC与PD组成的二维数据进行描线可以通过算法拟合出逼近斜率为k的直线;
9、由于模组之间的个体差异,DCC需要每一模组单独测量,而且由于镜头的场曲、shading之类的问题,同一模组的四周与中心同样存在差异,不能以同一系数进行转换,一般而言四周的系数会比中心的系数要高一些。一般而言将区域划分为小的M×N个blocks,每个block通过上面⑧的过程获得单独的k。而后计算时离焦率跟离焦系数与相位差之间按如下的换算方式进行:Defocus Value = Phase Difference × Coefficient,如下图所示:
10、DCC校正过程中,需要使用到黑白相间的背透式标靶,拍摄距离按照15cm进行。由于现行shield pixel只有L、R两个方向,所以校正标靶的黑白条案有走向要求,需要平行于LR shield pixel方向才能被识别并检测;-------------------------------此项待确认。
11、PDAF检测过程(from Truly document):
获得被摄物对焦位置的某一行或若干行的数据信息;
读取right-half-shield与left-half-shield数列信息;
使用right-half-shield与left-half-shield所生成的数列①中所获取的行信息进行卷积分计算(卷积分计算会是原来行信息只携带对应卷积序列的信息);
将卷积后的两个新数列做平滑微分插值等预处理,获得两个平滑切相对位移的数据;
将此两数据的相位差传入系统中,应用PDAF库及DCC数据进行计算获得离焦率;
通过该离焦率向马达下达对应DAC动作的指令并完成对焦;
上述是一个简单的原理介绍,实际的第⑤步骤中还需要混入置信区间的概念,以此作为是否合焦等的确认。
摄像头模组 PDAF对焦(Phase Detection Auto Focus)的更多相关文章
- MTK 平台上查询当前使用的摄像头模组及所支持预览分辨率
1,MTK 平台如何查询当前使用的是哪颗摄像头及相关的模组信息? 在该目录下可以查到当前平台及相关项目的配置文件 ProjectConfig.mk \ALPS.JB.MP.V1_W_20120919\ ...
- 摄像头模组 AWB(Auto White Balance)
本文转载yapingmcu的<图像算法---白平衡AWB(讲的很好)>.原文http://blog.csdn.net/yapingmcu/article/details/50637797 ...
- 摄像头模组光学CRA(chief ray angle)
http://blog.csdn.net/sylorchen/article/details/54618874 Lens CRA CRA(Chief Ray Angle):从镜头的传感器一侧,可以聚焦 ...
- android camera(一):camera模组CMM介绍
一.摄像头模组(CCM)介绍: 1.camera特写 摄像头模组,全称CameraCompact Module,以下简写为CCM,是影像捕捉至关重要的电子器件.先来张特写,各种样子的都有,不过我前一段 ...
- 【转】android camera(一):camera模组CMM介绍
关键词:android camera CMM 模组 camera参数平台信息:内核:linux系统:android 平台:S5PV310(samsung exynos 4210) 作者:xubin ...
- android camera(一):camera模组CMM介绍【转】
转自:https://blog.csdn.net/kevinx_xu/article/details/8821818 androidcmm图像处理工作手机三星 关键词:android camera ...
- iPhone X 的原深感模组
物理与数字世界正走向融合,我们每天醒来的时间.睡眠时长.心率和步数等数据都会被分享.上传并转化为分析数据.无处不自的 AI.互联互通和软件平台将改变用户对现实的感知. 2018 年的 CES 展(国际 ...
- opencv实现camera模组的暗电流和lenshading补偿 .
目录(?)[-] 简介 基本原理 产生原因 校正补偿原理 具体实现 框架搭建 功能实现 暗电流 lenshading补偿 效果演示 图片处理 效果演示 简介 在接触过的qcom和mtk平台中,came ...
- [原创]移远RM500U-CN模组驱动移植
1. 简介 中国广电正式放号了,为了支持广电700MHz的5G基站,需要换用新的5G模组.移远通信的RM500U模组正好可以满足我们的使用要求; 我们选用该模组的原因:双卡单待 支持SIM卡热插拔 支 ...
随机推荐
- java 默认内存大小
https://www.cnblogs.com/jack204/archive/2012/07/02/2572932.html -Xmx Java Heap最大值,默认值为物理内存的1/4,最佳设 ...
- 解决Gradle报错找不到org.gradle.api.internal.project.ProjectInternal.getPluginManager()方法问题
因为本地的AndroidStudio很久没用了,所以想要研究下github上的某个代码的时候,还得重新配下环境 打开了几个项目,都是提示如下错误 Error:Unable to find method ...
- CentOS7.5***
一.借助谷歌上网助手 二.用ss来实现*** 下载工具 sudo yum install shadowsocks-libev 修改配置文件 sudo chmod 777 /etc/shadowsock ...
- 图片乱码问题 解决方法 php
两个开发者都是下载同一个项目的git代码,但到本地环境,一个可以正常显示图片验证码,一个不行,找个半天开始以为环境问题 找了半天 不是 很多没说到重点 其实不只是当前文件格式问题 也要考虑其他调用文件 ...
- servlet 的控制缓存时间和response的重定向
//控制缓存时间 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletE ...
- 如何求先序排列和后序排列——hihocoder1049+洛谷1030+HDU1710+POJ2255+UVA548【二叉树递归搜索】
[已知先序.中序求后序排列]--字符串类型 #1049 : 后序遍历 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho在这一周遇到的问题便是:给出一棵二叉树的前序和 ...
- 洛谷——P3908 异或之和
P3908 异或之和 题目描述 求1 \bigoplus 2 \bigoplus\cdots\bigoplus N1⨁2⨁⋯⨁N 的值. A \bigoplus BA⨁B 即AA , BB 按位异或. ...
- SCU - 4441 Necklace(树状数组求最长上升子数列)
Necklace frog has \(n\) gems arranged in a cycle, whose beautifulness are \(a_1, a_2, \dots, a_n\). ...
- 查看Linux系统资源占用
Linux查看进程占用磁盘IO yum install -y itop iotop -oP Linux查看进程网络使用 yum install -y nethogs nethogs nethogs e ...
- javascrip 求最大公因数(分解质数法)发生的问题
//这是求一个数的质因数,例如:12=2*2*3 其中2,3都是质数.function primeArray(n, array) { array = new Array(); for (var i = ...