IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> PDAF tuning <0> -> 正文阅读

[人工智能]PDAF tuning <0>

1.PDAF 驱动功能验证

1.1 pdaf log 设置

log 设置,打开AF(8),State(2),Sensor(2) 的log
CT30P:/ # cat /vendor/etc/camera/camxoverridesettings.txt
overrideLogLevels=0x3F
logWarningMask=0x08000202
logInfoMask=0x08000202
logVerboseMask=0x08000202
enable3ADebugData=TRUE
dumpSensorEEPROMData=TRUE
enableTuningMetadata=TRUE
afFullsweep=3
enablePDLibLog=3

1.2 验证pdaf.xml 是否编译进系统

02-25 14:52:07.993   887   887 I CamX    : [ INFO][SENSOR ] camxsensornode.cpp:3165 IsPDAFEnabled() PDAFType = 3: isPDAFEnabled 1
02-25 14:52:08.037   887   887 I CamX    : [ INFO][SENSOR ] camxpdafdata.cpp:1104 GetCurrentPDAFModeIndex() Current Sensor Mode: 0, Corresponding PDAF Mode: 0
02-25 14:52:08.037   887   887 V CamX    : [ VERB][SENSOR ] camxpdafdata.cpp:950 PrintDebugPDAFData() PDAF Debug Data for s5k3l6_pdaf
02-25 14:52:08.037   887   887 V CamX    : [ VERB][SENSOR ] camxpdafdata.cpp:952 PrintDebugPDAFData()     =====PDAF Information:=====
02-25 14:52:08.038   887   887 V CamX    : [ VERB][SENSOR ] camxpdafdata.cpp:954 PrintDebugPDAFData()     Actuator Sensitivity: 0.928074
02-25 14:52:08.038   887   887 V CamX    : [ VERB][SENSOR ] camxpdafdata.cpp:956 PrintDebugPDAFData()     Black Level: 64
02-25 14:52:08.038   887   887 V CamX    : [ VERB][SENSOR ] camxpdafdata.cpp:958 PrintDebugPDAFData()     Pixel Depth: 10
02-25 14:52:08.038   887   887 V CamX    : [ VERB][SENSOR ] camxpdafdata.cpp:960 PrintDebugPDAFData()     Is Hdr Mode Enabled: 0
02-25 14:52:08.038   887   887 V CamX    : [ VERB][SENSOR ] camxpdafdata.cpp:962 PrintDebugPDAFData()     PDPixelOverflowThreshold: 0
02-25 14:52:08.038   887   887 V CamX    : [ VERB][SENSOR ] camxpdafdata.cpp:964 PrintDebugPDAFData()     Macro DAC: 525
02-25 14:52:08.038   887   887 V CamX    : [ VERB][SENSOR ] camxpdafdata.cpp:966 PrintDebugPDAFData()     Infinity DAC: 262
02-25 14:52:08.038   887   887 V CamX    : [ VERB][SENSOR ] camxpdafdata.cpp:968 PrintDebugPDAFData()     Pixel order Type: 0
02-25 14:52:08.038   887   887 V CamX    : [ VERB][SENSOR ] camxpdafdata.cpp:970 PrintDebugPDAFData()     =====Native Pattern Information:=====
02-25 14:52:08.038   887   887 V CamX    : [ VERB][SENSOR ] camxpdafdata.cpp:972 PrintDebugPDAFData()     originalImageWidth: 4208
02-25 14:52:08.039   887   887 V CamX    : [ VERB][SENSOR ] camxpdafdata.cpp:974 PrintDebugPDAFData()     originalImageHeight: 3120
02-25 14:52:08.073   887   887 I CamX    : [ INFO][SENSOR ] camxpdafdata.cpp:507 PDAFInit() Initializing PDAF s5k3l6_pdaf

1.3 dump pd 数据是否同模组厂提供数据一致.

在这里插入图片描述

1.4 查看pd 功能是否正常

将设备固定在三脚架上, 在灯箱中 触发一个full-sweep ,然后抓取haf/af 的日志。
日志的关键字:
af_pdaf_proc_pd_single grid|af_pdaf_proc_pd_single roi|af_fullsweep_final|sweep_srch_far_to_near|af_fullsweep_srch_near_to_far|af_fullsweep_start_srch
从log 中可以查看 pd ,defocus 和 confidence information 。有了所有这些信息,您可以决定从传感器获得的pd 是否正确。

    Line 16362: 02-25 14:55:03.995   897  1187 V CamX    : [ VERB][STATS_AF ] af_fullsweep.cpp:501: af_fullsweep_start_srch AEC Settled count:1
    Line 16758: 02-25 14:55:04.053   897  1188 V CamX    : [ VERB][STATS_AF ] af_haf_pdaf.cpp:4610: af_pdaf_proc_pd_single grid: num rows=1, num cols=1
    Line 16763: 02-25 14:55:04.053   897  1188 V CamX    : [ VERB][STATS_AF ] af_haf_pdaf.cpp:4710: af_pdaf_proc_pd_single grid(0) pd=-6.37, defocus(dac)=-133, conf=533, weight=1.00
    Line 16766: 02-25 14:55:04.054   897  1188 V CamX    : [ VERB][STATS_AF ] af_haf_pdaf.cpp:4798: af_pdaf_proc_pd_single roi(0) orig_conf = 533 orig_pd=-6.37, orig_defocus(dac)=-133
    Line 16767: 02-25 14:55:04.054   897  1188 V CamX    : [ VERB][STATS_AF ] af_haf_pdaf.cpp:4810: af_pdaf_proc_pd_single roi(0) lens_pos=345 index=6, pd=-6.37, defocus(um)=-123, conf=533, is_conf=TRUE, not_conf_cnt=0, is_stable=TRUE
    Line 16942: 02-25 14:55:04.102   897  1187 V CamX    : [ VERB][STATS_AF ] af_haf_pdaf.cpp:4610: af_pdaf_proc_pd_single grid: num rows=1, num cols=1
    Line 62081: 02-25 14:55:15.560   897  1187 V CamX    : [ VERB][STATS_AF ] af_haf_pdaf.cpp:4798: af_pdaf_proc_pd_single roi(0) orig_conf = 465 orig_pd=-6.88, orig_defocus(dac)=-144
    Line 62082: 02-25 14:55:15.560   897  1187 V CamX    : [ VERB][STATS_AF ] af_haf_pdaf.cpp:4810: af_pdaf_proc_pd_single roi(0) lens_pos=384 index=6, pd=-6.88, defocus(um)=-133, conf=465, is_conf=TRUE, not_conf_cnt=0, is_stable=TRUE
    Line 62348: 02-25 14:55:15.603   897  1183 V CamX    : [ VERB][STATS_AF ] af_haf_pdaf.cpp:4610: af_pdaf_proc_pd_single grid: num rows=1, num cols=1
    Line 62633: 02-25 14:55:15.678   897  1185 V CamX    : [ VERB][STATS_AF ] af_haf_pdaf.cpp:4610: af_pdaf_proc_pd_single grid: num rows=1, num cols=1
    Line 62892: 02-25 14:55:15.717   897  1188 V CamX    : [ VERB][STATS_AF ] af_haf_pdaf.cpp:4710: af_pdaf_proc_pd_single grid(0) pd=-6.76, defocus(dac)=-141, conf=476, weight=1.00
    Line 63129: 02-25 14:55:15.760   897  1185 V CamX    : [ VERB][STATS_AF ] af_haf_pdaf.cpp:4710: af_pdaf_proc_pd_single grid(0) pd=-6.78, defocus(dac)=-142, conf=493, weight=1.00
    Line 63131: 02-25 14:55:15.760   897  1185 V CamX    : [ VERB][STATS_AF ] af_haf_pdaf.cpp:4798: af_pdaf_proc_pd_single roi(0) orig_conf = 493 orig_pd=-6.78, orig_defocus(dac)=-142
    Line 63693: 02-25 14:55:15.884   897  1183 V CamX    : [ VERB][STATS_AF ] af_haf_pdaf.cpp:4610: af_pdaf_proc_pd_single grid: num rows=1, num cols=1
    Line 63696: 02-25 14:55:15.884   897  1183 V CamX    : [ VERB][STATS_AF ] af_haf_pdaf.cpp:4710: af_pdaf_proc_pd_single grid(0) pd=-0.87, defocus(dac)=-18, conf=698, weight=1.00
    Line 64150: 02-25 14:55:15.971   897  1187 V CamX    : [ VERB][STATS_AF ] af_haf_pdaf.cpp:4610: af_pdaf_proc_pd_single grid: num rows=1, num cols=1
    Line 64153: 02-25 14:55:15.971   897  1187 V CamX    : [ VERB][STATS_AF ] af_haf_pdaf.cpp:4710: af_pdaf_proc_pd_single grid(0) pd=0.02, defocus(dac)=0, conf=601, weight=1.00
    Line 64156: 02-25 14:55:15.971   897  1187 V CamX    : [ VERB][STATS_AF ] af_haf_pdaf.cpp:4798: af_pdaf_proc_pd_single roi(0) orig_conf = 601 orig_pd=0.02, orig_defocus(dac)=0
    Line 64158: 02-25 14:55:15.971   897  1187 V CamX    : [ VERB][STATS_AF ] af_haf_pdaf.cpp:4810: af_pdaf_proc_pd_single roi(0) lens_pos=208 index=17, pd=0.02, defocus(um)=0, conf=601, is_conf=TRUE, not_conf_cnt=0, is_stable=FALSE

有的log镜头位置都有三帧pd信息,这是因为全扫描中的帧延迟,只需要知道每一个镜头位置的最后一帧信息。
defocus is near to 0 ,pd is less than 1 。

af_haf_pdaf.cpp:4810 | af_fullsweep_srch_far_to_near max_pos|af_fullsweep_srch_near_to_far CAF_SCAN_Fullsweep_end Final_lens_pos
从关键字中搜素defocus 和lens position 做出图。 从pd 的 log 中没看到focusvalue,不知道怎么将pd 的defocus 和 af 的focusvalue 画到一张图上。 有知道怎么弄的可以告诉我下。
pd 指画了far_to_near defocus =0 为201. af 的far_to_near 的峰值也为201。所以pd 准确。
在这里插入图片描述
pd不动的问题,发现当前镜头位置为0时离焦是负的,方向不对。定位是pd效果的一个重要标志。
注意:由远到进,离焦率 为负。由进到远,离焦率为正。

2.PDAF 驱动功能验证

2.1 pdaf 调试前提

不跑fullsweep。
AF 工作期间, 从日志中获取下列信息:

 af_haf_pdaf.cpp:4810: af_pdaf_proc_pd_single roi(0) lens_pos=206 index=8, pd=0.00, defocus(um)=0, conf=1023, is_conf=TRUE, not_conf_cnt=0, is_stable=TRUE

对准附近目标,附近的目标移除后, 应能从日志信息中观察到以下情况:
PD 为正值并随着镜头的对焦逐渐降至 0
散焦值为正值并随着镜头的对焦逐渐降至 0

2.1 调试 ROI 配置

roi_loc_y
roi_loc_y
roi_num_rows
roi_num_cols

使用 [2, 3, 2, 2] 。适用PDAF Type 1。 位置和网格数。
使用 [0, 0, 1, 1] 。适用2PD。 Qualcomm PD lib 已优化为使用整个帧的 30% 作为沿水平和垂直两个方向的 ROI。
使用默认。

2.2 调试Focus Table

当镜头在一帧内从近到远或从远到近移动时,它看起来非常跳跃和不稳定。为了使AF平滑,有必要使用迭代运动来提供良好的AF收敛
为了提供良好的用户体验,参数move_percentage根据原始离焦距离将一个大的镜头移动分解为小的镜头移动.
在这里插入图片描述
If the reported defocus is 200, the next driving lens movement is 2000.3 = 60
If the reported defocus is 40, the next driving lens movement is 40
0.45 = 18.

调试指南

  • move_percentage 控制着收到报告的 PD 后反复执行最终镜头移动的次数。
  • 百分比值越高, 意味着镜头反复移动次数越少, AF 速度越快。 但这可能会导致过度跳跃, 为用户带来不顺畅的 AF 收敛体验。
  • 如果对较大的散焦值采用较小的百分比值, 可以防止不正确的 AF 跳跃, 从而带来更加顺畅的用户体验。
  • 利用 Inf(1m)-Macro(15cm) 跳跃实验调试对焦值表。 应降低百分比, 直至跳跃行为消失。

2.3 调试Noise Table

应用较高的增益时, 来自传感器的 PD 信息可能包含噪点。 噪点增益较高时, PDAF 可能会得到不可靠的散焦值, 因为跳跃可能导致对焦失败。
当噪声增益较高和PD噪声较大时,增大精细搜索范围以保持精度
Fine-step focus scan range =Fine scan step size x Range multiplier(noise gain [dB]

调试 Focus Scan 和 Noise Table 参数。
调试指南

  • 当噪点增益很高且 PD 噪点增多时, 应增大精确搜索范围, 以保持精确性。
  • 精确对焦扫描范围通过 Fine_scan_step_size 乘以一个乘数计算
    例如: 如果范围 = 2, 则意味着可以等于 -2、 -1、 0、 +1、 +2

2.4 调试Confidence Table

它主要用于控制在什么样的光照条件下选择PD触发对焦
客户可以根据他们的测试标准和测试用例分布或传感器性能来决定在哪些光照条件下不使用PD触发器

首先请记住噪声增益并不等于AEC算法直接输入的传感器增益。
noise_gain = 20.0f * log10( input->sensor_gain )

For example
/* Entry 4 */
{
10.000000f, /* Noise Gain */
700, /* Minimum Confidence */
}

在上述情况下,客户不希望触发PD超过10倍增益的场景。他们认为PD在这种情况下不太可靠。因此,他们给出了一个更高的阈值(700)来分块算法选择PD。

03-31 18:51:30.741   893  1186 V CamX    : [ VERB][STATS_AF ] af_haf_pdaf.cpp:4798: af_pdaf_proc_pd_single roi(0) orig_conf = 1023 orig_pd=0.00, orig_defocus(dac)=0

ROI 信息有:相位差(pd) 和 置信度
高置信度意味着该 ROI 中 PD 的偏差较小并且可能具有更高的边缘密度。 置信度表用于定义相对于传感器增益的最小置信度阈值。

在这里插入图片描述
调试指南

  • 最小置信度阈值越高, PD 越可靠, 但可能导致在定义的 ROI 范围内找到的 PD 越少,
    或者根本找不到。
  • 值得注意的是, 需要分别在弱光 (50 Lux)、 正常照明 (300 Lux) 和室外照明 (1000 Lux)条件下调试置信度表, 以观察使用垂直条纹测试卡时哪个最小置信度能够在 ROI 内产生最精确的 PD。
  • 在室外使用较高的最小置信度值可以为天空场景产生更可靠的 PD 数据。
  • 在弱光条件下使用较高的最小置信度值可以产生更可靠的 PD, 避免 PD 包含噪点。

2.5 调试Stable Table

它对调优没有很大的影响,因为主要是由相关的预留参数决定的。
首先使用Chromatix工具生成的默认值
FPS/Minimum Stable Count

Min Stable Count 是用于确定 PD 是否进入稳定状态的阈值。

2.6 调试Focus Scan

要获得更顺畅的 AF 收敛过程, 可使用 Conv Frame Skip 参数提高 AF 收敛速度。 此参数可降低 AF 速度, 但会带来更顺畅的收敛用户体验。

1, /* Conv Frame Skip */ better to use default 1.
1, /* Enable Fine Scan */ better to use default 1.
x, /* Min Fine Scane Range */ finally will compared with noise_multiplier.
x, /* Fine Scan Step Size */ fine search steps.
x, /* Focus Done Treshold */ need combine with dof_multiplier * noise_multiplier to check.

调试指南

  • 建议仅为 AF 收敛设置一个跳帧。
  • 跳帧过多会产生抖动, 并降低 AF 速度。

Focus Done Threshold 参数用于确定 PDAF 是否已收敛
如果报告的散焦值大于 Focus Done Threshold, PDAF 会继续搜索并等待进入收敛状态。
如果报告的散焦值小于 Focus Done Threshold, 则 PDAF 结束搜索并进入精确搜索模式,或者在精确扫描被禁用时, 直接向 AF_success 报告。

调试指南

  • 阈值越大, PDAF 搜索结束得越快, 越容易进入精确搜索模式。

2.7 调试Scene Monitor

4, /* Wait After Focus Count */
4, /* Conf Recover Count */
25, /* Defocused Threshold */ need combine with dof_multiplier to check.
20.00000f, /* Depth Stable Threshold */ need combine noise_multiplier to check.
Above all params recommend use default value ggenerated by Chromatix tool at first.
/* Defocused Threshold */ tuning procedure is similar confidence table. Just focus the
key word defocus(um)

Defocus Threshold 用于确定 AF 是否失焦。
Depth Stable Threshold 会触发稳定状态计数的增加。

调试指南

  • Defocus Threshold 越大, 意味着 PDAF 越难触发。
    此参数可作为场景切换触发标准。 如果报告的散焦值大于 Defocus Threshold, PDAF将进入搜索状态。
  • MinStableCount 和 Depth Stable Threshold 值越大, 意味着 PDAF 越难稳定, AF 收敛速度也越慢。

突发的深度变化期间, PD 库会临时丢弃两帧或三帧的置信度。
试置信度恢复计数 Conf Recover Count 参数可以帮助 PDFA 区分置信度的丢弃是持续发生(即无垂直边缘)还是临时发生(例如突发的深度变化) 。
这样可以防止在每次突发景深变化期间过早触发对比度 AF。如果 not_conf_cnt 大于 Conf Recover Count, 则没有可信 PD, 将转换
为对比度 AF

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-04-09 18:22:35  更:2022-04-09 18:23:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 11:39:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码