本文主要是最近看的两个文档的总结,相对零散的笔记,包括《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动作的指令并完成对焦;
上述是一个简单的原理介绍,实际的第⑤步骤中还需要混入置信区间的概念,以此作为是否合焦等的确认。