AF pdaf tuning <1>
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=31.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_pdaf1.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 是否正確。
有的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 工作期間, 從日志中獲取下列信息:
對準附近目標,附近的目標移除后, 應能從日志信息中觀察到以下情況:
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 400.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 )
在上述情況下,客戶不希望觸發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)=0ROI 信息有:相位差(pd) 和 置信度
高置信度意味著該 ROI 中 PD 的偏差較小并且可能具有更高的邊緣密度。 置信度表用于定義相對于傳感器增益的最小置信度閾值。
調試指南
- 最小置信度閾值越高, PD 越可靠, 但可能導致在定義的 ROI 范圍內找到的 PD 越少,
或者根本找不到。 - 值得注意的是, 需要分別在弱光 (50 Lux)、 正常照明 (300 Lux) 和室外照明 (1000 Lux)條件下調試置信度表, 以觀察使用垂直條紋測試卡時哪個最小置信度能夠在 ROI 內產生最精確的 PD。
- 在室外使用較高的最小置信度值可以為天空場景產生更可靠的 PD 數據。
- 在弱光條件下使用較高的最小置信度值可以產生更可靠的 PD, 避免 PD 包含噪點。
驗證方式:
(1)固定你的設備在三腳架的HAF日志啟用
(2)在穩定光線下聚焦一條垂直條紋圖(調光燈箱效果更好)
(3)Search key word: “af_haf_pdaf.cpp:4810: af_pdaf_proc_pd_single roi” to check whether the confidence level is continuous
stable
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
3.PDAF 粗搜和細搜
粗搜等同于 2.6 調試Focus Scan
Focus Done Threshold 參數用于確定 PDAF 是否已收斂
如果報告的散焦值大于 Focus Done Threshold, PDAF 會繼續搜索并等待進入收斂狀態。
如果報告的散焦值小于 Focus Done Threshold, 則 PDAF 結束搜索并進入精確搜索模式,或者在精確掃描被禁用時, 直接向 AF_success 報告。
細搜
由于在某些情況下相位差的計算不夠準確,PDAF算法切換到對比度AF進行精細搜索,確定最終的峰值位置。影響相位差精度的因素包括景條件(例如,弱光、圖像紋理、顏色和距離)和鏡頭/傳感器制造問題。
4.PDAF 觸發條件
1.當前幀的defocus 大于defocus threshold。
2.算法的confident
3.場景穩定。
如果滿足著些條件,pdaf 觸發搜索。如果沒有,則pdaf 繼續監控場景,或者在某些情況下,切換到對比度對焦。
defocus: 計算相位差并將其轉換為離焦值,以指示實現對焦所需的鏡頭運動的大小和方向。正的defocus 意味著移動是從近到遠。負defocus意味著運動從遠到近。defocus 接近0 時,表示目標處于對焦狀態
總結
以上是生活随笔為你收集整理的AF pdaf tuning <1>的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu18 百度云盘
- 下一篇: 人工智能Java SDK:词法分析模型能