AF pdaf tuning <1>
1.PDAF 驅(qū)動功能驗證
1.1 pdaf log 設(shè)置
log 設(shè)置,打開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 是否編譯進系統(tǒng)
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 數(shù)據(jù)是否同模組廠提供數(shù)據(jù)一致.
1.4 查看pd 功能是否正常
將設(shè)備固定在三腳架上, 在燈箱中 觸發(fā)一個full-sweep ,然后抓取haf/af 的日志。
日志的關(guān)鍵字:
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
從關(guān)鍵字中搜素defocus 和lens position 做出圖。 從pd 的 log 中沒看到focusvalue,不知道怎么將pd 的defocus 和 af 的focusvalue 畫到一張圖上。 有知道怎么弄的可以告訴我下。
pd 指畫了far_to_near defocus =0 為201. af 的far_to_near 的峰值也為201。所以pd 準確。
pd不動的問題,發(fā)現(xiàn)當前鏡頭位置為0時離焦是負的,方向不對。定位是pd效果的一個重要標志。
注意:由遠到進,離焦率 為負。由進到遠,離焦率為正。
2.PDAF 驅(qū)動功能驗證
2.1 pdaf 調(diào)試前提
不跑fullsweep。
AF 工作期間, 從日志中獲取下列信息:
對準附近目標,附近的目標移除后, 應(yīng)能從日志信息中觀察到以下情況:
PD 為正值并隨著鏡頭的對焦逐漸降至 0
散焦值為正值并隨著鏡頭的對焦逐漸降至 0
2.1 調(diào)試 ROI 配置
roi_loc_y roi_loc_y roi_num_rows roi_num_cols使用 [2, 3, 2, 2] 。適用PDAF Type 1。 位置和網(wǎng)格數(shù)。
使用 [0, 0, 1, 1] 。適用2PD。 Qualcomm PD lib 已優(yōu)化為使用整個幀的 30% 作為沿水平和垂直兩個方向的 ROI。
使用默認。
2.2 調(diào)試Focus Table
當鏡頭在一幀內(nèi)從近到遠或從遠到近移動時,它看起來非常跳躍和不穩(wěn)定。為了使AF平滑,有必要使用迭代運動來提供良好的AF收斂
為了提供良好的用戶體驗,參數(shù)move_percentage根據(jù)原始離焦距離將一個大的鏡頭移動分解為小的鏡頭移動.
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.
調(diào)試指南
- move_percentage 控制著收到報告的 PD 后反復(fù)執(zhí)行最終鏡頭移動的次數(shù)。
- 百分比值越高, 意味著鏡頭反復(fù)移動次數(shù)越少, AF 速度越快。 但這可能會導致過度跳躍, 為用戶帶來不順暢的 AF 收斂體驗。
- 如果對較大的散焦值采用較小的百分比值, 可以防止不正確的 AF 跳躍, 從而帶來更加順暢的用戶體驗。
- 利用 Inf(1m)-Macro(15cm) 跳躍實驗調(diào)試對焦值表。 應(yīng)降低百分比, 直至跳躍行為消失。
2.3 調(diào)試Noise Table
應(yīng)用較高的增益時, 來自傳感器的 PD 信息可能包含噪點。 噪點增益較高時, PDAF 可能會得到不可靠的散焦值, 因為跳躍可能導致對焦失敗。
當噪聲增益較高和PD噪聲較大時,增大精細搜索范圍以保持精度
Fine-step focus scan range =Fine scan step size x Range multiplier(noise gain [dB]
調(diào)試 Focus Scan 和 Noise Table 參數(shù)。
調(diào)試指南
- 當噪點增益很高且 PD 噪點增多時, 應(yīng)增大精確搜索范圍, 以保持精確性。
- 精確對焦掃描范圍通過 Fine_scan_step_size 乘以一個乘數(shù)計算
例如: 如果范圍 = 2, 則意味著可以等于 -2、 -1、 0、 +1、 +2
2.4 調(diào)試Confidence Table
它主要用于控制在什么樣的光照條件下選擇PD觸發(fā)對焦
客戶可以根據(jù)他們的測試標準和測試用例分布或傳感器性能來決定在哪些光照條件下不使用PD觸發(fā)器
首先請記住噪聲增益并不等于AEC算法直接輸入的傳感器增益。
noise_gain = 20.0f * log10( input->sensor_gain )
在上述情況下,客戶不希望觸發(fā)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 的偏差較小并且可能具有更高的邊緣密度。 置信度表用于定義相對于傳感器增益的最小置信度閾值。
調(diào)試指南
- 最小置信度閾值越高, PD 越可靠, 但可能導致在定義的 ROI 范圍內(nèi)找到的 PD 越少,
或者根本找不到。 - 值得注意的是, 需要分別在弱光 (50 Lux)、 正常照明 (300 Lux) 和室外照明 (1000 Lux)條件下調(diào)試置信度表, 以觀察使用垂直條紋測試卡時哪個最小置信度能夠在 ROI 內(nèi)產(chǎn)生最精確的 PD。
- 在室外使用較高的最小置信度值可以為天空場景產(chǎn)生更可靠的 PD 數(shù)據(jù)。
- 在弱光條件下使用較高的最小置信度值可以產(chǎn)生更可靠的 PD, 避免 PD 包含噪點。
驗證方式:
(1)固定你的設(shè)備在三腳架的HAF日志啟用
(2)在穩(wěn)定光線下聚焦一條垂直條紋圖(調(diào)光燈箱效果更好)
(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 調(diào)試Stable Table
它對調(diào)優(yōu)沒有很大的影響,因為主要是由相關(guān)的預(yù)留參數(shù)決定的。
首先使用Chromatix工具生成的默認值
FPS/Minimum Stable Count
Min Stable Count 是用于確定 PD 是否進入穩(wěn)定狀態(tài)的閾值。
2.6 調(diào)試Focus Scan
要獲得更順暢的 AF 收斂過程, 可使用 Conv Frame Skip 參數(shù)提高 AF 收斂速度。 此參數(shù)可降低 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.調(diào)試指南
- 建議僅為 AF 收斂設(shè)置一個跳幀。
- 跳幀過多會產(chǎn)生抖動, 并降低 AF 速度。
Focus Done Threshold 參數(shù)用于確定 PDAF 是否已收斂
如果報告的散焦值大于 Focus Done Threshold, PDAF 會繼續(xù)搜索并等待進入收斂狀態(tài)。
如果報告的散焦值小于 Focus Done Threshold, 則 PDAF 結(jié)束搜索并進入精確搜索模式,或者在精確掃描被禁用時, 直接向 AF_success 報告。
調(diào)試指南
- 閾值越大, PDAF 搜索結(jié)束得越快, 越容易進入精確搜索模式。
2.7 調(diào)試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 會觸發(fā)穩(wěn)定狀態(tài)計數(shù)的增加。
調(diào)試指南
- Defocus Threshold 越大, 意味著 PDAF 越難觸發(fā)。
此參數(shù)可作為場景切換觸發(fā)標準。 如果報告的散焦值大于 Defocus Threshold, PDAF將進入搜索狀態(tài)。 - MinStableCount 和 Depth Stable Threshold 值越大, 意味著 PDAF 越難穩(wěn)定, AF 收斂速度也越慢。
突發(fā)的深度變化期間, PD 庫會臨時丟棄兩幀或三幀的置信度。
試置信度恢復(fù)計數(shù) Conf Recover Count 參數(shù)可以幫助 PDFA 區(qū)分置信度的丟棄是持續(xù)發(fā)生(即無垂直邊緣)還是臨時發(fā)生(例如突發(fā)的深度變化) 。
這樣可以防止在每次突發(fā)景深變化期間過早觸發(fā)對比度 AF。如果 not_conf_cnt 大于 Conf Recover Count, 則沒有可信 PD, 將轉(zhuǎn)換
為對比度 AF
3.PDAF 粗搜和細搜
粗搜等同于 2.6 調(diào)試Focus Scan
Focus Done Threshold 參數(shù)用于確定 PDAF 是否已收斂
如果報告的散焦值大于 Focus Done Threshold, PDAF 會繼續(xù)搜索并等待進入收斂狀態(tài)。
如果報告的散焦值小于 Focus Done Threshold, 則 PDAF 結(jié)束搜索并進入精確搜索模式,或者在精確掃描被禁用時, 直接向 AF_success 報告。
細搜
由于在某些情況下相位差的計算不夠準確,PDAF算法切換到對比度AF進行精細搜索,確定最終的峰值位置。影響相位差精度的因素包括景條件(例如,弱光、圖像紋理、顏色和距離)和鏡頭/傳感器制造問題。
4.PDAF 觸發(fā)條件
1.當前幀的defocus 大于defocus threshold。
2.算法的confident
3.場景穩(wěn)定。
如果滿足著些條件,pdaf 觸發(fā)搜索。如果沒有,則pdaf 繼續(xù)監(jiān)控場景,或者在某些情況下,切換到對比度對焦。
defocus: 計算相位差并將其轉(zhuǎn)換為離焦值,以指示實現(xiàn)對焦所需的鏡頭運動的大小和方向。正的defocus 意味著移動是從近到遠。負defocus意味著運動從遠到近。defocus 接近0 時,表示目標處于對焦狀態(tài)
總結(jié)
以上是生活随笔為你收集整理的AF pdaf tuning <1>的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu18 百度云盘
- 下一篇: 利用Lync Online与MSN联系人