【PDAF】如何去debug PDAF confidence low的问题

更新记录:
V1 2020.09.23 记录高通平台PDAF功能检测中confidence比较低的分析
关键字:
高通Qualcomm,PDAF calibration,Gain map,DCC,sparse PD
问题描述
一般我们在等待驱动同事把PDAF功能调通之后,我们会验证PDAF的功能是否正常,
一个是PDAF的线性度,一个是confidence是否异常;
这两个测试都是要开启PDAF log,去跑一次fullsweep,然后绘制一个图表来看;
测试图卡是黑白竖条纹chart,整个FOV都包含chart,
如果PDAF 的线性度比较正常,那么PD值输出应该是没问题的,
另外就看confidence在pd值最小的时候,也就是最佳位置的时候,其confidence能不能达到1023;如果不是那要就是confidence值偏低,需要接下来进一步分析;

关键字log:af_pdaf_proc_pd_single() CAF_SCAN_PDAF grid(0)
问题分析:
1.分析PD数据
这里主要是看gain map是否合适,判断校准是否异常
高通平台针对PDlib的debug有专门的测试模式,测试PD lib收到的PD数据是否正常。
开启log:
一个是开启pd lib log,一个是开启pd lib test模式
在camxoverridesettings.txt最后加上如下两个配置:
enablePDLibLog=3
enablePDLibTestMode=1
或者使用命令:
adb shell setprop persist.vendor.camera.pdaf_logging 3
adb shell setprop persist.vendor.camera.pdaf_test 1
测试:
1.将camera对着灰卡或者A4的白纸,试灰卡或者A4白纸占满整个屏幕
2.打卡相机抓取PD lib log,并搜索”check_data”关键字,如果能找到”PD stats test pass“则说明PDlib收到的数据没有问题;
Log: pdlib_sparse_utils.cpp:2870 check_data() PD stats test pass.
3.假如测试失败了,log如下:
pdlib_sparse_utils.cpp:2874 check_data() PD stats test failure.
可进一步查看log;

红框部分表示左边PD pixel values,蓝框部分表示右边PD pixel values,这两个部分的值是经过gain map补偿之后的值,左右PD pixel值相差应控制在5%以内;
4.如果左右PD pixel value相差大于5%,可尝试调换左右gain map,看是否加载错误,这里一般只需要将模组厂的烧录数据和eeprom数据比对下,以及eeprom map的地址以及eeprom驱动的读取确认下,是否错误,先排除驱动问题,再看左右gain map是否校准错误,
5.如果模组自身左右gain map对调之后,左右PD pixel值相差仍然大于5%,则需要与模组厂、sensor厂沟通,检测sensor端配置是否异常,
这里我们要保证PD lib得到的PD数据,左右PD pixel值相差在5%之内,否则将会影响到confidence值的计算。
2.分析PDlib参数
如果PD lib测试能通过的情况下,其在黑白垂直竖条纹场景,最大confidence值还是无法达到1023的话,需要查看chromatixPDLib.xml中minimumConfidenceLevel参数值;
该参数为confidence值计算的过程中,使用的最小参考值,一般要将这个值设置在200或250;
通过以往的经验来看,confidence低这个现象,和模组校准关系非常大——Gain map,
且一致性比较不好,一批次模组里,有个confidence比较高,有的会比较低,这个就会影响PDAF对焦的一致性和稳定性;
通过分析confidence比较低的场景,把confidence比较高的模组的gain map强制存放到confidence比较低的模组里,其confidence会有很大改善,这个就比较明显的证实是gain map导致的问题,这个的要去分析模组校准的差异,是否sensor批次差异?模组环境?操作手法?制作工艺偏差不良等?
根据个人经验汇总,导致confidence值比较低的原因有:
1. gain map的差异,导致pd pixel 值相差大于5%,导致的confidence值低,需要打出pdlib log来分析;
2.minimumConfidenceLevel参数导致,建议设置此参数大于200;
3.pd驱动配置异常,native坐标,配置错,会导致gainmap的双线性差异不精准,导致给其他分辨率的confidence值会低;
4.pdlib的滤波器配置,高通提供一个pdlib的IIR滤波器,会增加其pdlib的稳定可靠性,最好配置上,尤其是针对录像模式的PDAF;
感兴趣的读者,欢迎联系站长深入交流;
QQ:1940764576
微信:erdoubiji

提供最优质的资源集合

立即查看 了解详情