1.1 AF monitor
1.1.1 Value monitor
1.1.1.2 靈敏度參數如何與參數表交互
1.1.2 Monitor algo config paremeters
1.1.3 Value monitor decision logic
1.1.4 Value monitor components
1.1.5 Value monitor bank
1.2 AFserach
1.3 Contrast AF(CAF)
1.4 Phase detection AF(PDAF)
1.4.1 Region of interest (ROI) configuration
1.4.2 PDAF monitor:defocused,confident,and stable
1.4.2.1 Defocus
1.4.2.2 Confident
1.4.2.3 Stable
1.4.2.4 How the confidence table works
1.4.2.5 How the stable table and sence monitor table works
1.4.2.6 How the confidence recover count parameter works
1.4.2.7 How the noise gain table works
1.4.3 PDAF 粗搜(焦點收斂)
1.4.3.1 何時結束粗搜?
1.4.4 PDAF精搜
1.4.5 2PD與精搜
1.5 Time-of-flight(TOF) AF
1.5.1 TOF monitor
1.5.2 TOF coarse search(焦點收斂)
1.5.2.1 當鏡頭向near方向移動時如何計算聚焦收斂點
1.5.2.1 當鏡頭向far方向移動時如何計算聚焦收斂點
1.5.3 TOF fine search
1.5.3.1 當鏡頭移動到Macro側時參數如何用於設置精搜邊界
1.5.3.2 當鏡頭移動到Infinitity側時參數如何用於設置精搜邊界
1.6 Dual camera instant AF(DCIAF)
1.7 Bayer AF(BAF) stats engine
2、AF tuning overview
2.1.1 AF Tuning須要考慮的因素
3、initial tuning
3.1 actuator相關的tuning參數
3.2 測試actuator driver
3.2.1 CAF掃描測試
3.2.1.1 雙向全掃測試
3.2.1.1.1 測試過程
3.2.1.1.2 分析並糾正
3.2.1.2 actuator範圍測試
3.2.1.2.1 測試過程
3.2.1.2.2 分析並糾正
3.2.1.3 actuatorsettle time
3.2.1.3.1 測試過程
3.2.1.3.2 分析並糾正
3.2.1.4 FV值對比和tail
3.2.1.4.1 測試過程
3.2.1.4.2 分析並糾正
3.2.1.5 Lens映射距離
3.2.1.5.1 測試過程
3.2.1.5.2 分析並糾正
3.3採集並確認golden模組的lens位置數據
3.4 測試清晰度,一致性和速度
3.4.1 測試給定場景的清晰度和準確度
3.4.2 測試AF速度
4、HAF tuning
4.1 HAF參數
4.1.1 用於fine search擴展的HAF參數
4.2 Tune PDAF
4.2.1 驗證PDAF對焦標準
4.2.2 驗證PDAF的觸發
4.2.3 執行HAF中的PDAF測試
4.2.3.1 測試方式
4.2.3.2 分析並校訂
4.2.4 測試圖片清晰度與一致性
4.2.4.1 測試過程
4.2.5 測試AF速度
4.2.6 PDAF參數、
4.2.7 2PD參數
4.3 Tune TOF AF
4.3.1 Tune TOF前的注意事項
4.3.2 驗證TOF sensor
4.3.3 使能TOF AF
4.3.4 執行HAF中的TOF測試
4.3.4.1 測試方法
4.3.4.2 分析並校訂
4.3.5 測試圖像清晰度與一致性
4.3.4.1 測試方法
4.3.6 測試AF速度
4.3.7 TOF參數
4.3.8 Tune AF SAD參數 threshold最小值與最大值
4.4 Tune DCAF
4.4.1 驗證lens位置映射距離
4.4.1.1 面向正常方向
4.4.1.2 方向面向上/下
4.4.1.3 排除鏡頭位置映射
4.4.2 測試圖像清晰度與一致性
4.4.2.1 測試方法
4.4.3 測試AF速度
4.4.4 DCIAF參數
5、高級AF tuning流程
5.1 Tune CAF triggering
5.2 Tune 初始lens位置
5.3 手動調整AF步長
5.4 Tune FV_min
5.5 Tune ROI參數
5.5.1 Tune CAF ROI
5.5.2 Tune TAF ROI
5.6 Tune 基於軟件的AF統計信息相關
5.7 Tune BAF統計信息
5.7.1 Tune BAF ROI
5.7.2 Tune BAF gamma
5.7.3 Tune Y的轉換
5.7.4 Tune 濾波器係數
5.7.5 BAF統計類型
5.7.6 基於重力的FV重力特性
5.8 Tune點光源條件
5.8.1 Tune點光源場景的低光條件
5.8.1.1 調整AF過濾器
5.8.1.2 調整平坦比例
5.8.2 設置點光源檢測
5.8.3 Tune點光源處理參數
5.8.4 點光源參數指導
5.8.5 解決點光源場景問題
5.8.6 爲ROI中網格賦予權重
5.9 Touch/face PDAF特性
5.10 Face AF問題:未聚焦在臉部而是聚焦在背景
5.11 常見問題:一致性和準確性
5.12 常見問題:AF速度
5.13 執行AE掃描測試
6、AF Tuning用例
6.1 CAF觸發過於靈敏,而且在緩慢panning狀況下容易觸發
6.2 CAF觸發不夠靈敏,觸發時間太長
6.3 AF始終對焦到背景,不對焦前景
6.4 AF和TAF須要針對速度進行優化,但CAF須要針對平滑度進行優化
6.5 在AF搜索階段FOV改變太多
6.6 須要改善AF速度
6.7 AF在中間距離表現較好,macro端和infinity端表現差
6.8 同一場景AF表現不一致
6.9 在夜景/低光/低對比度場景下AF失敗率太高
6.10 對於沒有云的天空場景,圖像一般是模糊的
6.11 PDAF在低紋理場景中作出沒必要要地觸發搜索
6.12 PDAF在具備傾斜邊緣或線條的場景中失敗
6.13 AF搜索未結束拍照就不動了
6.14 手抖致使的FV降低和搜索不許確
6.15 手抖處理消耗太多功率
6.16 當檢測到face時AF進行了沒必要要的從新觸發
7、AF測試程序
7.1 開啓全掃搜索和AF log
7.2 開啓AF log
7.3 在預約的lens位置拍攝圖像
7.4 在當前手動對焦位置拍攝圖像
7.5 確認FV狀態
7.6 進行AF健全測試
1、Autofocus concepts
AF的目的是肯定實現對焦的最佳鏡頭位置,並觸發actuator將鏡頭移動到該位置。通常來講,AF過程以下:算法
- AF算法同時檢測硬件和軟件統計數據,以肯定是否存在場景變化。
- 若是算法檢測到場景變化,則算法觸發搜索。若是啓用了基於深度的算法,則CAF做爲後備算法。
- 算法的粗搜索肯定下一個鏡頭位置。
- actuator逐漸將鏡頭移動到下一個位置。
- 精搜索找到最終的鏡頭位置。
- actuator將鏡頭移動到最終位置。
AF算法包含在HAF中,同時它是可擴展的,默認狀況下了實現三種基於深度的算法(即PDAF,TOF,DCIAF)以及對比度AF(CAF)。每種算法都實現了檢測和搜索功能。
使用HAF,能夠集成新算法,修改現有算法的行爲,甚至在組合多個算法時更改混合邏輯。
1.1 AF monitor
AF monitor的主要功能是場景變化檢測。直觀地說,場景變化意味着當前場景不在焦點上,這將致使算法觸發搜索以找到焦點的最佳鏡頭位置。
每種算法都有本身的標準來檢測場景變化。例如,CAF依賴於參考幀的Gyro參數,絕對差值之和(SAD)參數和參考SAD
(SADR)參數檢測場景變化。相比之下,PDAF依賴於當前幀的defocus值,算法的置信度和場景的穩定性的組合。
AF monitor還負責場景平移檢測。爲避免沒必要要的搜索,算法區分場景變化和場景平移。搜索算法在場景穩定以前不會開始搜索,即不進行panning。簡而言之,scene change和panning檢測是AF monitor狀態中的兩個基本功能。shell
1.1.1 Value monitor
Value monitor是3A版本6.0中的新增功能。雖然它最終將應用於其餘monitor算法,但Value monitor此時僅適用於CAF。其餘監控算法(PDAF,TOF和DCIAF)配置如3A版本5.1。架構
- Monitor algo config
包含CAF,PDAF,TOF和DCIAFmonitor算法中使用的每種統計類型的靈敏度設置(在此版本的AF中只有CAF可用,其餘算法在3A版本5.1中配置爲AF) 。 - Value monitor bank
包含每種類型的stat的三組參數(低,中和高)。
1.1.1.2 靈敏度參數如何與參數表交互
- GyRo Sensitivity的值爲50,這是全部靈敏度參數的默認值。全部靈敏度參數的範圍是1到100(0關閉)。 1-100之間的全部靈敏度都是有效的,而且會有一個合理的檢測行爲。
- 因爲靈敏度爲50,所以選擇中等靈敏度參數。若是靈敏度參數爲1,則選擇低靈敏度參數。若是靈敏度爲100,則選擇高靈敏度參數。若是靈敏度在1到50或50和100之間,則分別使用低和中或中和高之間的線性插值。每一個配置文件中的參數(低,中,高)是相同的。可是,它們的值已預先配置爲根據monitor算法配置中的靈敏度參數提供不一樣級別的靈敏度。
- 根據做爲1和2的結果生成的配置,實例化CAF和使用
VM_SET_TYPE_GYRO
配置的任何其餘監控算法。
若是想要使GYRO靈敏度比中等靈敏度配置文件更敏感,那麼最簡單的方法是將GYRO靈敏度修改成大於50。若是想要使GYRO靈敏度不如中等靈敏度敏感配置文件,而後將靈敏度修改成小於50。
在tuning過程當中使用邏輯靈敏度參數時,value monitor bank中的參數不會更改。
1.1.2 Monitor algo config paremeters
默認狀況下有4個monitor算法配置(CAF, PDFA, TOF, DCIAF),每一個算法可能依賴於不一樣的數據,有着不一樣的靈敏度參數。ide
1.1.3 Value monitor decision logic
爲了檢測和區分場景變化和panning,value monitor分析多個輸入信號,而後輸出二進制決策。應用指定的決策邏輯來肯定當前場景是否正在panning。所以,在AFmonitor中使用特定拓撲(斷定邏輯)。爲簡化設計,拓撲僅採用二進制輸入(0或1)。僅在拓撲中指定決策邏輯。
CAFmonitor拓撲的示例以下圖所示。它說明了value monitor的二進制輸出如何經過簡單的邏輯組合啓用場景更改/平移檢測。
工具
1.1.4 Value monitor components
Meta Filter包含一系列濾波過程,例如中值濾波器,移動平均值(MVAVG)濾波器和無限脈衝響應(lIR)濾波器。當啓用這些濾波過程時,Meta Filter可以處理有噪聲的輸入信號。
Basic monitor是具備兩種檢測類型的monitor:性能
- VM_DETECTOR_STABLE-檢測信號是否高於 threshold
- VM_DETECTOR_UNSTABLE-檢測信號是否低於 threshold
高於或低於 threshold的決策的連續計數被保持而且在檢測邏輯中使用。
參數集經過value monitor bank中的value monitor集類型實現。每種類型包含三種靈敏度配置文件(低,中,高)。給定集類型(例如,GYRO)的配置文件包含相同的參數,但值隨配置文件而變化。例如,GYRO的高靈敏度配置文件包含與中等和低配置文件相同的參數。可是,高配置文件的值致使對檢測到的信號穩定性有着更高靈敏度。
應該在設計階段肯定與靈敏度無關的參數。
1.1.5 Value monitor bank
使用value monitor的主要目的之一是隔離不一樣算法之間的依賴關係。Chromatix中的value monitor bank設計用於在不一樣算法之間共享value monitor設置(即VMSET_TYPE)。這使得一個值monitor設置能夠在許多算法中使用。下圖說明了如何在不一樣算法之間共享VM SET_TYPE以及如何使用自定義設置。
測試
1.2 AFserach
在自動對焦的搜索階段,算法使用各類方法來肯定最佳鏡頭位置以實現聚焦並觸發actuator將鏡頭移動到該位置。搜索階段分爲粗搜索和精搜。
粗搜索的目標是將鏡頭移向精搜的近界限。下圖說明了DCIAF算法中粗搜索和精搜的基本操做。
粗搜快速將鏡頭移動到適當的位置以開始精搜。精搜而後將鏡頭移動到具備最高FV值的位置。粗搜索和精搜的邊界,threshold,步長和limit是可配置的。能夠調整搜索參數以平衡速度和準確性,或者強調速度或準確性。粗搜有時也被稱爲焦點收斂。
每種算法使用不一樣的方法計算搜索的鏡頭位置。優化
1.3 Contrast AF(CAF)
Constrast AF(CAF) 檢測來自陀螺儀傳感器的運動值和luma的絕對差值之和(SAD),以檢測場景變化並觸發搜索。若是符合穩定性和置信度標準,則CAF會觸發搜索達到最高FV的鏡頭位置。
默認的AF搜索算法是single AF,這是一種基於對比度的算法。
如下是CAF和Single AF的關鍵點:ui
- CAF包含默認監測和搜索算法
- CAF monitor依賴於Gyro值和SAD的變化來檢測場景變化
- CAF search也稱爲single AF,是一種基於對比度的算法
- single AF搜索FV中的峯值以肯定鏡頭位置
- 若是啓用了任何基於深度的算法,則CAF僅被當作備用
1.4 Phase detection AF(PDAF)
PDAF是經過測量由圖像傳感器中的相位檢測像素捕獲的圖像對之間的視差來工做的。視差的大小和符號與defocus相關,並用於估計最佳焦點的最佳鏡頭位置。
在手機上,像素級設計可爲左右像素建立有效光圈,像人眼同樣,左右像素獨立地捕捉光線。若是場景中的光收斂到相鄰的左和右相位檢測像素,則沒有視差而且鏡頭處於正確位置。若是光線沒有收斂在相鄰的左右相位檢測像素上,則存在視差而且鏡頭不在正確的位置。
下圖表示了收斂在相鄰和非相鄰相位檢測像素上的光以及基於視差的所得聚焦條件。
有三種用於生成左和右像素的常見像素設計方法:spa
- Sparse PDAF with metal shielding
- Dual photo diodes PDAF/2PD
- Sparse PDAF with 2x1 OCL
Sparse PDAF with metal shielding
Sparse PDAF是傳統的PDAF方法。在Sparse PDAF中,存在像素對,其中每一個像素被半遮蔽,使得每一個像素經過透鏡的不一樣部分接收光。在該方法中,使用1%至3%的傳感器像素。在這些像素上,u-lens下方的金屬屏蔽物經過在某些角度阻擋光線而產生有效的不對稱光圈。
出於成像目的,PD像素的值被周圍像素的內插值替換,與缺陷像素如何被校訂的方式相似。
Dual photo diodes PDAF/2PD
在雙二極管PDAF(也稱爲2PD)中,每一個傳感器像素由兩個光電二極管組成,頂部是單個u-lens。光電二極管相對於u-lens的位置產生有效的不對稱孔徑。左右光電二極管電平相加以重建常規拜耳模式
較高密度的PDAF像素提供了幾個優勢: - No artifacts(defect) compensation required(無需人工補償)
- No light loss
Sparse PDAF with 2x1 OCL
該方法相似於2PD,由於L/R像素的有效孔徑是從像素和u-lens的相對位置導出的。由於使用了約3%的傳感器像素因此比較稀疏。然而,沒有金屬屏蔽容許PD像素收集更多光,從而產生2x1採用屏蔽設計,優於Sparse PDAF。
1.4.1 Region of interest (ROI) configuration
ROI配置參數設置ROI位置和用於計算PD結果的ROI網格數,這些信息對於PDAF算法是必不可少的。設置太大的AF ROI可能會混淆PD結果和PDAF最終決策。這是由於不一樣距離的物體進入PD ROI並使最終的PD保持在遠物體和近物體之間的折中位置。
對全部狀況使用中心2x2ROI網格。下圖是中心2x2網格的示例。以IMX230爲例,當傳感器圖像的area_mode用做fixed_window(8x6)時,傳感器圖像被分爲H8 * V6 ROI網格。
1.4.2 PDAF monitor:defocused,confident,and stable
一般,PDAF檢測場景的變化並在知足如下條件時觸發搜索:
- 當前幀的defocus值大於defocus threshold
- 算法confident
- 場景穩定
若是知足這些條件,則PDAF觸發搜索。若是沒有,則PDAF繼續檢測場景,或者在某些狀況下,切換到CAF。
1.4.2.1 Defocus
計算相位差並將其轉換爲defocus值,以指示實現聚焦所需的鏡頭移動的大小和方向。正defocus值意味着運動由近到遠,負defocus值意味着運動從遠到近。當defocus值接近零時,表示目標處於焦點。
defocus的計算方法以下:
Final PD value - 每一個ROI PD的加權平均值和置信度值,僅包括置信度值大於最小置信度 threshold的ROI。
DCC - Defocus轉換系數,由模組供應商校準。
VCM sensitivity - AF校準結果,來自模組供應商。
1.4.2.2 Confident
置信水平是在相位差估計中使用的場景中的線條數量(例如,垂直邊緣,場景亮度)的功能。高置信度意味着ROI中的PD具備小的差別和更高的邊緣強度。置信表用於定義相對於sensor gain的最小置信度 threshold。
1.4.2.3 Stable
經過評估deocus值歷史來計算穩定性,若是值在可調threshold內,則認爲場景穩定。
1.4.2.4 How the confidence table works
- 當噪聲增益<第一個噪聲增益時,徹底應用第一個min_conf。
- 當噪聲增益>最後噪聲增益時,徹底應用最後一個min_conf。
- 根據噪聲增益位於第一個和最後一個entry的增益之間的位置,對第一個和最後一個entry之間的min _conf進行線性插值。
- 僅當ROI PD置信度值超過最小置信度 threshold時才考慮ROI PD置信度值。
1.4.2.5 How the stable table and sence monitor table works
- 若是defocus值(a)大於defocus threshold,則PDAF進入搜索狀態並重置穩定計數。
- 若是與前一幀的defocus值相比,defocus值(b)在深度穩定 threshold的範圍內,則穩定計數遞增。
- 若是穩定計數(c)大於min_stablecnt,則PDAF觸發搜索。
1.4.2.6 How the confidence recover count parameter works
在忽然的深度變化期間,PD library暫時下降兩幀或三幀的置信水平。wait_conf_recover
參數有助於PDAF區分置信水平的持續降低(例如,沒有垂直邊緣)與臨時降低(例如,忽然的深度變化)。這避免了每次在場景深度的忽然變化期間過早觸發CAF。
在下面的示例中,若是not_conf_cnt
大於wait_conf_recover_cnt
,則因爲置信水平的持續降低,算法會切換到CAF。
1.4.2.7 How the noise gain table works
當應用更高的增益時,來自傳感器的PD信息可能變得有噪聲。當噪聲增益較高時,PDAF可能會獲得不可靠的defocus值,這可能致使聚焦失敗。要適應更高的增益並保持精度,能夠經過調整噪聲表來增長精細掃描範圍。
經過將適當的乘數從噪聲增益表應用於精細掃描步長來計算精細掃描範圍。
1.4.3 PDAF 粗搜(焦點收斂)
在PDAF中,粗搜控制鏡頭移動到焦點位置。相位差越大,視差越大、意味着defocus值越大。以下圖所示,當相位差較大時,則相應的噪聲水平越高;當相位差小時,噪聲水平也很小。隨着鏡頭移近最佳焦點,噪音更小。
所以,有必要將自動聚焦做爲迭代過程進行,其中鏡頭逐漸移動以實現最佳對焦。迭代過程致使平滑的AF收斂並防止過沖行爲。
爲了使AF平滑,PDAF使用迭代運動來提供良好的AF收斂用戶體驗並防止過沖行爲。PDAF Focus table(focus_tb1)包含根據相位差估計指定所需鏡頭移動百分比的entry。move_pcnt
tuning參數根據原始defocus距離將一個大鏡頭移動分解爲小鏡頭移動。
更高的百分比意味着更少的迭代鏡頭移動、更快的AF速度和焦點跟蹤。可是,這可能致使調整過分。校訂過沖所需的鏡頭移動會產生不平滑的AF收斂和較差的用戶體驗。
1.4.3.1 何時結束粗搜?
focus_done_threshold
參數決定PDAF是否收斂,若是defocus小於focus_done_threshold
則PDAF結束coarse search而且進入fine serach(若是禁用了fine search則本次直接搜索完成)。若是defocus大於focus_done_threshold
則PDAF保持粗搜。
focus_done_threshold
設置的越大,則完成coars search進入fine search的速度就越容易,對於2PD來講,focus_done_threshold
一般使用較小的值(例如,6)
默認的focus_scan表以下:
1.4.4 PDAF精搜
因爲相位差計算在某些條件下不夠準確,所以PDAF算法切換到CAF以進行精搜並確認最終峯值位置。影響相位差精度的因素包括場景條件(例如,低光,圖像紋理,顏色和距離)和鏡頭/傳感器製造問題。
若是使用2PD並依賴PD來找到最終的目標,則禁用精搜。
1.4.5 2PD與精搜
在大多數狀況下,2PD找到焦點位置無需精搜。然而,在一些具備挑戰性的場景中,來自精搜的FV用於定位最終焦點位置。此行爲可經過參數pdaf.reserve[50-60] conf_table_high
進行配置。
基於conf_table_high中的noise_gain和min_conf參數,2PD過程計算high_conf的值。若是來自PD_lib的置信度值大於high_conf,那麼2PD依賴於PD信息來到達AF目標而且不須要精搜。若是PD_lib
的置信度小於high_conf,則2PD會調用精搜。
1.5 Time-of-flight(TOF) AF
在TOF AF中,激光傳感器經過計算向目標發射紅外光和在接收器處接收紅外光之間的時間來測量到目標的距離。基於光子行進時間和光速來計算相機與目標之間的距離。計算的準確性取決於基於對比度的AF調整的準確性。
與常規CAF相比,TOF對焦速度明顯更快。在低光至正常光照條件下,TOF性能最佳。但在室外條件下,傳感器難以區分激光發射器發出的光和來自太陽光的光。
1.5.1 TOF monitor
TOF經過評估激光傳感器報告的距離來檢測場景的變化。激光傳感器還會生成一個錯誤代碼,表示報告距離的置信度。
若是算法對報告的距離有信心,則觸發激光輔助粗搜索。搜索將鏡頭移動到精搜的近界限被稱爲焦點收斂。若是算法不自信,它能夠:
- 將鏡頭移動到超焦距位置並從那裏開始精搜(若是錯誤代碼指示對象超出60釐米,則執行此操做)。
- 若是錯誤代碼代表環境光線太多,則回退到CAF。
一般TOF經過如下邏輯檢測場景變化: - 在檢測階段開始期間記錄參考距離。
- 距離分爲五個region(distance_region)。
- 每一個區域都有本身的場景變化 threshold(scene_change_distance_thres)。
- 激光器報告的平均距離是在多個幀上計算的(num_monitor_samples)。
- 在樣本數量上計算距離的標準誤差。
- TOF檢測到場景變化並在知足如下條件時觸發搜索:
- 參考距離和平均距離之間的差別大於scene_change_distance_thres,大於normal_light_cnt或low_light_cnt中指定的幀數。
- 標準誤差小於scene_change_distance_std_dev_thres。
注意該算法還監測來自陀螺儀的統計數據,並在較小程度上監測SAD以檢測場景變化並觸發焦點收斂。
1.5.2 TOF coarse search(焦點收斂)
焦點收斂狀態的目標是將鏡頭移動到精搜的近界限。
1.5.2.1 當鏡頭向near方向移動時如何計算聚焦收斂點
假設當前鏡頭位置是180,在20cm處檢測到物體,而且其相應的計算鏡頭位置是60。所以,焦點收斂點和精搜的起點是60+(6*3)= 78。
鏡頭在jump_to_start_limit中指定的跳躍中移動到計算的鏡頭位置。在上圖中,jump_to_start_limit是40。所以,鏡頭首先從180-40 = 140移動,而後從140-40 = 100移動,而後從100-22 = 78移動。在最後一幀中,鏡頭移動22,由於目的地小於jump_to_start_limit的值。整個lens的移動過程能夠用下圖表示:
虛線對應的點就是焦點收斂點和精搜的起始點。
1.5.2.1 當鏡頭向far方向移動時如何計算聚焦收斂點
若是lens向far端移動,則有以下公式:
對TOF焦點收斂中涉及的參數進行Tuning時,應在速度和準確度之間取得平衡,以得到適當的用戶體驗。經過增長jump_to_start_limit能夠經過更少的跳躍快速進行移動。較高的值能夠在較少的幀中移動鏡頭,但預覽可能會有鏡頭移動的跳躍。較小的值會使鏡頭移動更平滑,但消耗更多的幀和所以致使更多的延遲。
此外,num_near_steps_near_direction和num_near_steps_farr_direction也會影響速度、準確度和用戶體驗。這些參數頗有可能使焦點收斂提早退出並提早進入精搜,致使增長的靈活性但增長了準確度。也可能致使稍後的收斂退出和增長的速度,可是可能致使沒有對焦和鏡頭的過沖。
在低光條件下,算法使用
jump_to_start_limit_low_light
而不是
jump_to_start_limit
。
1.5.3 TOF fine search
TOF算法中的精搜是基於對比度的。精搜的邊界是近側的焦點收斂點,遠側的邊界使用num_far_steps_near_direction
或num_far_steps_far_direction
來設置。取決於鏡頭移動方向的方向。
1.5.3.1 當鏡頭移動到Macro側時參數如何用於設置精搜邊界
1.5.3.2 當鏡頭移動到Infinitity側時參數如何用於設置精搜邊界
理想狀況下,對於num_near_steps參數有一個更大的數字,對於num_far_steps參數有一個更小的數字。這是由於最好退出焦點收斂並儘早開始精搜以減小焦點缺失和過沖。 num_far_steps參數保持較小,由於若是在最後沒有找到焦點,則精搜將繼續,直到找到峯值。
1.6 Dual camera instant AF(DCIAF)
DCIAF經過基於兩個相機之間的差異/視差估計物體的距離來顯着減小AF.DCIAF工做所需的時間。DCIAF匹配相同物體的突出特徵以計算立體視差。
在上圖中,一個圖像來自主sensor,另外一個來自副sensor。黃色圓圈(p1和p2)是每一個圖像中的匹配點。使用
若是基於距離的位置和參考lens位置之間的透鏡位置差大於scene_change_lens_pos_th,則檢測到場景變化並觸發搜索。參考lens位置就是最後聚焦框的位置。
- DCIAF還可使用陀螺儀數據來檢測場景變化並觸發搜索。
1.7 Bayer AF(BAF) stats engine
2、AF tuning overview
AF能夠在PLD gating完成後開始,而且主要與ISP,AWB和AEC tuning並行發生。其中特別是AEC和ISP,可能會對AFtuning產生影響。
AF Tuning流程
2.1.1 AF Tuning須要考慮的因素
Tuning依賴項 描述
actuator類型
(開環/閉環) 閉環actuator一般能夠產生更快的算法收斂時間,還能夠產生更一致的sharpness,輕微/無鏡片下垂和可靠的性能。
actuator穩定時間
(settling time) 若是settle time超過12ms,則AF性能變現不會很好
模組不一樣 若是有OTP數據,模組數據能夠被抽象話。若是沒有OTP數據且模組差別較大,可能沒法cover這樣異常的模組
AEC Exposure table
曝光表 曝光表影響actuator根據FV移動lens的時間,應在大多數場景下(室內/室外照明)保持低曝光時間
軟硬件統計類型
calibration
(OTP數據的可用性)
AF算法在actuatorDAC範圍的線性區域上操做,若是OTP數據不可用,則調諧的線性範圍對於某些模組可能不可靠。可能致使某些場景的搜索算法失敗。
3、initial tuning
3.1 actuator相關的tuning參數
參數 | 搜索行爲 | 描述 |
---|---|---|
CAF_far_end CAF_near_end TAF_far_end TAF_near_end | 搜索邊界 | 對於lens的位置範圍一般設置爲相同的far_end和near_end。可是因爲defocus和其餘限制,應適量縮小範圍以免搜索失敗。對於video來講,因爲小步長相關的限制,CAF_near_end默認設置爲14cm |
srch_rgn_1 srch_rgn_2 srch_rgn_3 | 搜索區域 | 用於獲取步長,當選擇步長搜索區域後,將查找響應的條目。使用step table可使搜索更加靈活。默認狀況下,區域邊界設置爲超焦距、50cm、20cm和14cm來映射 fine_srch_rgn 精搜邊界 精搜可提升圖像的準確性,但須要提供額外的幀。爲了平衡權衡,一般將精細srch_rgn設置爲SINGLE_50CM_INDEX的值做爲初始調整值。爲了提升速度,能夠增長邊界以減小使用精搜。爲了提升精度,請將精搜範圍向下擴展到Macro對象距離。要禁用精確搜索,請將其設置爲Infinity index。 |
fine_srch_rgn | 精搜邊界 | 精搜可提升圖像的準確性,但須要提供額外的幀。爲了平衡權衡,一般將精細srch_rgn設置爲SINGLE_50CM_INDEX的值做爲初始調整值。爲了提升速度,能夠增長邊界以減小使用精搜。爲了提升精度,請將精搜範圍向下擴展到Macro對象距離。要禁用精確搜索,請將其設置爲Infinity index |
far_zone near_zone | 近遠區域 | 用於限制範圍兩端的defocus。若是defocus致使AF接近搜索的近端和遠端失敗,則減少遠區邊界(或增長近區)以提升成功率。 |
init_pos | 初始位置 | 此參數指定在攝像機啓動時第一次AF搜索時鏡頭位置的位置,默認設置爲超焦距。 爲了適應某些開環執行器中的鏡頭下垂,它必須能移回infinity limit位置。 |
mid_zone | 中間區域 | 此參數定義鏡頭的起始方向,由於鏡頭向中間區域移動。 |
3.2 測試actuator driver
用來測試actuator和lens模組通過設置AF tuning參數後的狀況,測試良好一般有如下這些:
- actuator和lens模組的性能達到預期
- actuator設置和OTP數據是正確的
- AF tuning中生成的參數是有效的
3.2.1 CAF掃描測試
在高級tuning前執行CAF掃描測試,分析結果並執行一些必要的動做。
在Tuning過程的這些階段執行CAF掃描測試:
- 雙向全掃
- 閉環actuatorrange
- 開環actuatorrange
- actuatorsettle time
- Focus curve contrast and tail
- lens映射的距離
3.2.1.1 雙向全掃測試
這項測試檢測lens模組的滯後性。Lens先從遠端到近端全掃,而後從近端到遠端全掃。兩次不一樣方向全掃的FV曲線的峯值應該重合,若是沒有重合則說明這個lens模組有嚴重的滯後,這個問題須要解決。
3.2.1.1.1 測試過程
在500lux照度以上使用三腳架在30cm距離拍攝分辨率12233的ISO卡。
3.2.1.1.2 分析並糾正
若是兩個方向全掃的FV曲線峯值重合,則說明模組是好的。若是峯值誤差超過了10%,則說明模組有滯後,對於這種狀況應該再驗證最少兩次以上,若是這個現象仍能復現,須要告知模組廠是否可接受,若是不接收只能更換好的模組。
3.2.1.2 actuator範圍測試
這項測試檢測了infinity到macro的boundary範圍,檢測lens在macro到infinity並正確對焦的移動範圍是否足夠。
3.2.1.2.1 測試過程
在500lux照度以上使用三腳架在macro端10cm距離拍攝分辨率12233的ISO卡。在200cm的infinity端重複測試一遍。
若是是開環actuator,還須要作以下測試:
- 將設備安裝在三角架上,鏡頭朝下
- 將設備安裝在三腳架上,鏡頭朝上
3.2.1.2.2 分析並糾正
3.2.1.3 actuatorsettle time
該測試經過多幀的相同鏡頭位置處FV值的一致性來檢查鏡頭移動命令發出後鏡頭是否設置。
3.2.1.3.1 測試過程
在500lux照度以上使用三腳架在30cm距離拍攝分辨率12233的ISO卡。
3.2.1.3.2 分析並糾正
圖A說明damping/ringing配置正確,圖B則說明有如下狀況:
- damping/ringing設置錯誤
- 在ISP中解析統計數據並將其發送到AF核心之間存在時間問題
3.2.1.4 FV值對比和tail
該測試經過檢查其對比度(最大值FV/最小值FV)來檢查FV值圖的質量。較大的比率表示AF算法有良好對比度。
3.2.1.4.1 測試過程
在500lux照度以上使用三腳架在30cm距離拍攝分辨率12233的ISO卡。
3.2.1.4.2 分析並糾正
圖A說明BAF配置正確,圖B、C說明BAF配置錯誤,或者ISP解析BAF統計數據時存在錯誤,重複測試兩次以確認問題。
能夠嘗試tune BAF設置不一樣參數,例如kernel coefficients來看對比度比率是否改善。
3.2.1.5 Lens映射距離
此測試檢查在AF Tuning選項卡中計算的鏡頭位置調整值,並在全掃描測試中捕獲鏡頭位置。若是鏡頭位置映射與測試結果不匹配,則調整鏡頭位置調整值。這些值位於AF Tuning選項卡以及3A頭文件中的single_optic
結構體中。
3.2.1.5.1 測試過程
在500lux照度以上使用三腳架在14cm距離拍攝分辨率12233的ISO卡。在20cm,60cm,200cm處重複測試。
3.2.1.5.2 分析並糾正
圖A說明step table設置正確,圖B說明在測試中測量的鏡頭位置與標題中的鏡頭位置之間存在太多的誤差。返回AF Tuning選項卡並檢查輸入值。若是更新值,請單擊「計算」以從新計算鏡頭位置調整值,而後重複測試。若是輸入值準確,請調整適當的鏡頭位置tune值,而後重複測試。
3.3採集並確認golden模組的lens位置數據
3.4 測試清晰度,一致性和速度
3.4.1 測試給定場景的清晰度和準確度
3.4.2 測試AF速度
4、HAF tuning
HAF提供了基於深度算法(TOF/PDAF/DCIAF)和CAF的AF接口,它也提供了這些算法的通用架構。
若是你的設備硬件必須支持基於深度的算法,使用enable
參數來使能HAF,使用algo_enable
參數來使能 基於深度的算法。
4.1 HAF參數
參數名稱 | 描述 | Tuning設置 | 默認值 |
---|---|---|---|
enable | HAF主要啓用標誌 | 設置爲「1」開啓HAF | 0 |
algo_enable[4] | 每一個算法的使能標誌(TOF, PDAF, DCIAF, and Test) | 設置爲「1」開啓相應基於深度的算法 | |
stats_enable[3] | |||
stats_select | |||
fine_srch_drop_thres |
4.1.1 用於fine search擴展的HAF參數
精搜擴展功能容許在一個基於深度(PDAF, TOF, DCIAF)的算法提供的搜索範圍以外找到peak。一般算法進行粗搜後會給基於對比度的精搜提供搜索範圍。在大多數狀況下,精搜的範圍在找到真正的FV peak以前就結束了。
精搜擴展參數擴展了基於深度的算法的精搜範圍,若是啓用了擴展,精搜將評估FV曲線趨勢以肯定是否找到峯值。若是FV趨勢指示還沒有找到峯值,則搜索將繼續按照精搜擴展參數指定。
當使用TOF或者PDAF type3時推薦開啓精搜
4.2 Tune PDAF
4.2.1 驗證PDAF對焦標準
當目標處於焦點時驗證PDAF功能:
- 開啓HAF和PDAF算法
- 若是sensor是2PD sensor,使能
pdaf.reserve[30] is_2PD_enable
. - 肯定在標準測試條件下lens準確對焦
- 使用touch AF
- 5000K點光源(>150lux)
- 使用垂直條紋圖
- 物距20cm
- 當lens聚焦到測試目標,從log中得到每一個ROI的這些信息:Log:
af_pdaf_proc_pd:grid[0-47]: pd=0.06, defocus=5, conf=286, weight=0.34
- 來自log的信息每一個ROI(ROI0~ROI47)應知足如下標準:
- 相差的絕對值小於1
- defocus小於10
- 置信值水平應該超過最小 threshold
- 若是日誌中的信息不符合上一步中指定的條件,則PD庫存在問題。聯繫PD庫的供應商獲取幫助。
4.2.2 驗證PDAF的觸發
- 確保以下條件:
- 5000K點光源(>150lux)
- 使用垂直條紋卡
- 物距50cm
- 將AF的焦點對焦在近處物體上,而後快速移除物體使相機聚焦在測試圖上
- 在AF過程當中的獲取如下信息:
Log: af_pdaf_proc_pd: roi[0]: pos252 index=49, pd=0.19, defocus=1, conf roi=833, is_conf=1
- 移除近物後,應當即從log中觀察到如下狀況:
- PD是正值,而且在鏡頭聚焦時朝向0逐漸減少。
- defocus是正值,而且隨着鏡頭聚焦,朝向0逐漸減少。
- 置信水平應保持高於最小置信度 threshold,當它顯示is_conf = 1時,意味着ROI PD是自信且可靠的。
- 若是日誌中的信息不符合上一步中指定的條件,則PD庫存在問題。聯繫PD庫的供應商獲取幫助。
4.2.3 執行HAF中的PDAF測試
主要測試PD值和FV值的質量,這兩個值應該對齊。
4.2.3.1 測試方式
使用垂直條紋圖表(500+lux光照條件),將設備橫向放置在三腳架上,並將圖表放置在不一樣的距離(10釐米,20釐米和100釐米)
從設備。
4.2.3.2 分析並校訂
若是圖形看起來像圖A,則PD庫輸出相位差正確。若是看起來像圖B,則聯繫庫供應商(例如,索尼)以肯定PD校準是否有故障。
4.2.4 測試圖片清晰度與一致性
在這個測試中,比較不一樣距離的兩組圖像的清晰度,同時還比較一些AF參數的精度。一組圖像使用全掃描搜索,而另外一組使用TOF算法。
4.2.4.1 測試過程
將分辨率12233的ISO卡放置在指定位置,將手機橫向放置在三腳架上,使用500+lux光照條件。
- 開啓全掃和AF核心log記錄
- 打開相機並在10,14,20,40,50,60,120和200cm處拍攝圖片
- 搜索log並記錄每一個距離的FV值和最終lens位置
- 關閉全掃
- 開啓HAF和PDAF
- 打開相機並在10,14,20,40,50,60,120和200cm處拍攝圖片
- 搜索log並記錄每一個距離的FV值和最終lens位置
- 經過比較兩組圖像記錄的FV值來比較清晰度
- 經過使用下面的公式來比較兩組圖像的最終lens位置來檢查清晰度
(positionformstep3−positioformstep7)<=2∗finestepsize - 若是清晰度和精度不符合預期,則調整合適的PDAF參數
4.2.5 測試AF速度
- 啓用並抓log
- 執行下列ADB命令
adb root adb remount adb shell setprop persist.camera.stats.debug.mask 48
- 將手機放到三腳架上並對焦到遠處物體
- 放入卡片遮擋等待對焦,移除卡片再等待對焦到遠處物體
- 在log中搜索
ALGO Complete
,應該能夠看到:
ALGO Complete finalpos 92 totaltime: 330 fine_search_time 265 focus_converge_time 65
- 當物距在每一個焦點之間變化而且在預期範圍內時,驗證AF速度是否變化。若是速度不符合預期,調整適當的PDAF參數。
4.2.6 PDAF參數、
PDAF參數的默認值可能適用於大多數狀況,可是在某些場景中還須要進行一些調整才能達到特定目標。這些能夠調整的參數在PDAF中的幾個表(例如Focus table, noise table)中。
4.2.7 2PD參數
2PD參數的默認值可能適用於大多數狀況,可是在某些場景中還須要進行一些調整才能達到特定目標。這些能夠調整的參數是pdaf.reserve[30]~pdaf.reserve[48]
和pdaf.reserve[50]~pdaf.reserve[60]
。
4.3 Tune TOF AF
TOF AF是一項有助於提高AF速度的特性。在TOF Af中,激光傳感器根據發出的光線和接收光線的時間來測量距離。計算的準確性取決於基於對比度AFtuning的準確性。TOFtuning的先決條件是初始化tuning已完成。
4.3.1 Tune TOF前的注意事項
- Gyro對於實現最佳TOF性能相當重要,若是設備沒有Gyro,就必需要依賴SAD參數來進行場景變化檢測和panning檢測。這使得TOF的觸發稍微變慢了。
- 安裝在laser sensor頂部的玻璃蓋必須是高質量的不能夠是高反射的材料,而且必須防塵。若是沒有這些特性,laser sensor可能會反饋錯誤的距離。在大多數狀況下,基於用於增長信號強度的玻璃材料應用串擾校準。
- 對於任何基於深度的算法,推薦使用閉環actuator,由於它受重力和滯後的影響較小。可是閉環actuator成本高,有些也使用開環的VCMactuator。若是使用了開環的VCMactuator,應該開啓lens sag補償功能,請模組廠提供向下、向上、水平的DAC值,建議每一個模組都有這些校準值。
- TOF AF算法目前不支持touch AF和face AF。若是檢測到了touch AF和face AF,則使用CAF。
4.3.2 驗證TOF sensor
在TOF tuning前要確認TOF sensor正確啓動而且報告一個正確的距離。
- 使用下列命令開啓laser sensor log
adb root adb remount adb shell setprop persist.camera.stats.haf.debug 3 adb shell setprop persist.camera.global.debug 1
- 在不一樣距離拍攝分辨率爲12233的ISO卡並查看log,推薦距離爲10,14,20,40,50,60,120,200cm
- 在下列參數中搜索log來獲得距離:
DEPTH_SERVICE
:打印sensor給出的全部信息af_tof_set_data: Calculated_lens position
:給出傳感器報告的距離和算法計算的相應鏡頭位置。
- log中的距離要與測試的物距匹配
4.3.3 使能TOF AF
在AF tuning頭文件中,設置使能
4.3.4 執行HAF中的TOF測試
測試CAF的laser sensor驅動返回的質量距離
4.3.4.1 測試方法
使用三腳架在不一樣距離重複測試(10,20,100cm)
4.3.4.2 分析並校訂
圖A的傳感器返回的距離對於測試距離是正確的,圖B返回的距離與指望的有較大誤差。聯繫廠商肯定返回錯誤距離的緣由。在大多數狀況下,是由於laser sensor的蓋玻片須要校準,若是校準不許確,則可能輸出不一致的距離。
4.3.5 測試圖像清晰度與一致性
在這個測試中,比較不一樣距離的兩組圖像的清晰度,同時還比較一些AF參數的精度。對一組圖像使用全掃,對另外一組使用TOF算法。
4.3.4.1 測試方法
將分辨率12233的ISO卡放置在指定位置,將手機橫向放置在三腳架上,使用500+lux光照條件。
- 開啓全掃和AF核心log記錄
- 打開相機並在10,14,20,40,50,60,120和200cm處拍攝圖片
- 搜索log並記錄每一個距離的FV值和最終lens位置
- 關閉全掃
- 開啓HAF和TOF
- 打開相機並在10,14,20,40,50,60,120和200cm處拍攝圖片
- 搜索log並記錄每一個距離的FV值和最終lens位置
- 經過比較兩組圖像記錄的FV值來比較清晰度
- 經過使用下面的公式來比較兩組圖像的最終lens位置來檢查清晰度
(positionformstep3−positionformstep7)<=2∗finestepsize - 若是清晰度和精度不符合預期,則調整合適的TOF參數
4.3.6 測試AF速度
- 啓用並抓log
- 執行下列ADB命令
adb root adb remount adb shell setprop persist.camera.stats.debug.mask 48
- 將手機放到三腳架上並對焦到遠處物體
- 放入卡片遮擋等待對焦,移除卡片再等待對焦到遠處物體
- 在log中搜索
ALGO Complete
,應該能夠看到:
ALGO Complete finalpos 92 totaltime: 330 fine_search_time 265 focus_converge_time 65
- 當物距在每一個焦點之間變化而且在預期範圍內時,驗證AF速度是否變化。若是速度不符合預期,調整適當的TOF參數。
4.3.7 TOF參數
4.3.8 Tune AF SAD參數 threshold最小值與最大值
threshold_min
與threshold_max
是用於CAF的相同AF SAD參數。一般來講,當laser sensor在遠距離(60cm及以上)不能檢測場景變化時用SAD檢測場景變化。
4.4 Tune DCAF
4.4.1 驗證lens位置映射距離
DCIAF依賴於估計距離與相應AF鏡頭位置之間的準確映射。這個鏡頭位置映射的距離基於single AF tuning,DCIAF對這個映射是很是敏感的。
4.4.1.1 面向正常方向
- 在14cm距離採集全掃測量值
- 驗證全掃描最終鏡頭位置是否接近於14cm處的映射
- 在不一樣距離重複步驟1和步驟2
4.4.1.2 方向面向上/下
- 在14cm距離採集全掃測量值
- 驗證全掃描最終鏡頭位置是否接近於14cm處的映射
- 在不一樣距離重複步驟1和步驟2
4.4.1.3 排除鏡頭位置映射
若是鏡頭位置映射與正常方向的全掃描位置不匹配,則在調整DCIAF以前從新訪問CAF tuning(AFactuator和single AF)。
若是鏡頭位置映射與面朝上或面朝下方向的全掃描位置不匹配,則在調整DCIAF以前從新檢查鏡頭下垂補償。
4.4.2 測試圖像清晰度與一致性
在這個測試中,比較不一樣距離的兩組圖像的清晰度,同時還比較一些AF參數的精度。對一組圖像使用全掃,對另外一組使用DCIAF算法。
4.4.2.1 測試方法
- 開啓全掃和AF核心log記錄
- 打開相機並在10,14,20,40,50,60,120和200cm處拍攝圖片
- 搜索log並記錄每一個距離的FV值和最終lens位置
- 關閉全掃
- 開啓HAF和TOF
- 打開相機並在10,14,20,40,50,60,120和200cm處拍攝圖片
- 搜索log並記錄每一個距離的FV值和最終lens位置
- 經過比較兩組圖像記錄的FV值來比較清晰度
- 經過使用下面的公式來比較兩組圖像的最終lens位置來檢查清晰度
(positionformstep3−positionformstep7)<=2∗finestepsize - 若是清晰度和精度不符合預期,則調整合適的TOF參數
4.4.3 測試AF速度
- 啓用並抓log
- 執行下列ADB命令
adb root adb remount adb shell setprop persist.camera.stats.debug.mask 48
- 將手機放到三腳架上並對焦到遠處物體
- 放入卡片遮擋等待對焦,移除卡片再等待對焦到遠處物體
- 在log中搜索
ALGO Complete
,應該能夠看到:
ALGO Complete finalpos 92 totaltime: 330 fine_search_time 265 focus_converge_time 65
- 當物距在每一個焦點之間變化而且在預期範圍內時,驗證AF速度是否變化。若是速度不符合預期,調整適當的DCIAF參數。
4.4.4 DCIAF參數
5、高級AF tuning流程
高級AF tuning能夠改善AF性能,包括搜索速度,精度和健壯性。全部的高級tuning流程都是按需可選的。在高級AF tuning前應該完成初始化AF tuning。
5.1 Tune CAF triggering
CAF監測來自陀螺儀傳感器的運動值和亮度值中的絕對差之和(SAD),以檢測場景變化並觸發搜索。
CAF負責如下事項:
- 檢測場景變化
- 觸發搜索前確保場景穩定
- 觸發搜索
經過調整Topo_CAF
中的靈敏度參數來調整CAF。這些參數與關聯值監視器中的參數一塊兒使用,以配置算法的行爲。
5.2 Tune 初始lens位置
初始默認鏡頭位置爲無限遠。默認鏡頭位置會影響相機啓動期間的延遲。例如,若是鏡頭處於無限遠處,則相機啓動期間10cm的延遲高於鏡頭位於中間的延遲。可是,正常使用狀況則是用戶在啓動相機時將注意力集中在無限遠物體上。
根據每一個參數的描述調整haf.reserve[5]和[6]以改變初始鏡頭位置。
5.3 手動調整AF步長
AF Tuning選項根據在Lens Position Tuning Input組中指定的值計算CAF/TAF步長表。能夠經過選擇Search Preference預設之一或輸入新值來調整表格。
若是自定義步長值時,請按照以下步驟:
- 算法步驟單元與DAC相同。這意味着一步等於一個DAC。
- macro和infinity物體的鏡頭位移是不一樣的。在macro範圍內,能夠在保持重疊DOF的同時增長步長。若是步驟設置得太大,則DOF可能會錯過一些物距,而且actuator可能沒法處理移動。
- 步長表有五個區域,由四個邊界分隔。第一個邊界設置爲超焦位置,其他邊界可配置。默認狀況下,因爲非線性特徵,邊界設置爲50釐米,20釐米和14釐米。
- 有五個參數定義lens移動範圍
- Region 0:從
far_end_position
到normal_hyperfocal_position
- Region 1:從
normal_hyperfoc
到srch_rgn_1
(默認50cm) - Region 2:從
srch_rgn_1
到srch_rgn_2
(默認20cm) - Region 3:從
srch_rgn_2
到srch_rgn_3
(默認14cm) - Region 4:從
srch_rgn_3
到near_end
- Region 0:從
- 較大的步長能夠提升AF速度,但可能致使FV曲線錯過該DOF的峯值。一般,Macro區域具備較大的步長,infinity區域具備較小的步長。
- 一般,正常光區域具備較小的步長,而低光區域具備較大的步長。在低光照條件下,幀速率降低,爲了保持AF速度,與正常光線相比,步長略有增長。
5.4 Tune FV_min
較低的FV_min包含更多的弱邊緣,但可能會下降FV曲線的對比度,並增長失敗率。
1.經過ADB命令啓用AF log。
2.編輯頭文件並將FV_min值設置爲零,而後將新庫推送到設備。
3.將擴散器放在傳感器蓋上(以從場景中移除全部紋理)。
4.關閉全部燈並捕獲日誌。
5.計算ROl中的像素數。 FV_min =全掃搜索中的FV值* / RO1中的像素數。
6.對於明亮的光線條件,重複步驟2到5。
7.使用計算值替換標題中的FV min。
注意因爲硬件和軟件統計信息的記錄方式不一樣,所以硬件統計信息中的FV和軟件統計信息中的FV可能因同一場景而異。
5.5 Tune ROI參數
若是要修改ROI參數,可使用AF Tuning
選項中提供的一個可用ROI預設進行選擇和測試。對預設進行配置和測試以知足其預期目標,執行必要的測試以肯定是否須要增長或減小ROI大小,而後調整ROI參數。
ROI Tuning注意事項:
- 對焦窗口太大可能會致使ROI中不一樣距離的物體對比度降低
- 對焦窗口過小可能會有噪聲影響精度和成功率
- 低光條件須要較大的ROI尺寸來對抗噪聲
- Touch對焦ROI每每較小以強調較小的物體
5.5.1 Tune CAF ROI
要tune CAF ROI,從默認CAF設置開始,而後執行如下操做:
- 居中並在20釐米左右放置一個小物體。
- 觀察AF聚焦在物體上的次數。
- 從新觸發CAF。
- 記錄lens位置。
- 重複步驟3和4 十次。
- 確認lens位置始終相同。
- 執行如下操做之一:
- 若是失敗率很高,則下降ROI大小。下降CAF ROI大小可能會致使正常場景失敗。
- 若是正常場景的失敗率不可接受,請以來自默認值0.1的增量爲單位增長ROI大小。
5.5.2 Tune TAF ROI
Tune CAF ROI後,tune TAF ROI以對焦到較小的物體,TAF的ROI應該比CAF的ROI要小。爲了不依賴於算法,能夠在tuning ROI時啓用全掃。
5.6 Tune 基於軟件的AF統計信息相關
根據要使用的統計信息的優先級,設置標誌PAAF_enable
(in af_tuning_single_t)以使用軟件統計信息或禁用它以使用硬件統計信息。若是軟件AF統計信息常常丟失,則禁用此變量並使用硬件統計信息。
在AF中有一個軟件(基於ARM)AF統計信息功能,這個統計功能用於統計預覽流來計算FV值。這種方法的缺點就是FV的峯值不夠sharp,可使用fine search來定位實際的峯值。
軟件版本的ROI使用了和基於硬件AF同樣的ROI,硬件ROI映射到軟件使用的預覽大小。
軟件統計引擎有三種配置:正常(默認),低光和fafce ROI濾波器係數集。
5.7 Tune BAF統計信息
在大多數狀況下BAF是不須要進行tuning的,可是某些狀況仍是要進行適當的調整。
5.7.1 Tune BAF ROI
默認的BAF ROI參數能夠知足大多數狀況,若是是想修改BAF ROI參數或者想實現自定義ROI,就須要聯繫CE。
參數preset_id
定義了ROI形狀首選項,下圖說明了支持的ROI形狀:
默認的形狀是矩形,支持自定義ROI形狀。若是自定義了,那麼自定義的ROI會繞過ROI配置,並會傳到AF端口進行硬件配置。
5.7.2 Tune BAF gamma
可選的gamma tuning的目的是在不一樣亮度級下提高像素對比度。
- 找到BAF中的gamma參數,對於普通光、低光和face有不一樣的過濾參數
- 在30cm距離拍攝低對比度條件下測試場景
- 將
LUT Enable
參數設置爲0關閉gamma表 - 進行全掃並記錄下FV曲線
- 生成並更新LUT,以便在所需的亮度級別上提高FV,建議從1/2.2的默認表開始
- 觀察FV曲線的變化並根據須要來進行調整
- 對不一樣亮度級重複此過程
5.7.3 Tune Y的轉換
若是使用多通道的Y通道,能夠按以下方式tune Y的轉換:
- 找到BAF中的gamma參數,對於普通光、低光和face有不一樣的過濾參數
- 從默認轉換因子開始:0.213(red), 0.715(green), 0.072(blue)
- 在一些顏色條件下測試場景
- 使用全掃捕獲FV曲線
- 調整每一個顏色通道的比例,觀察曲線的改善狀況,確保能表示多種顏色
- 使用單色測試其餘場景
5.7.4 Tune 濾波器係數
爲下列場景類型提供了默認的BAF濾波器
- 正常光
- 低光
- face
- 點光源
5.7.5 BAF統計類型
默認值爲AF_STATS_HV
。
5.7.6 基於重力的FV重力特性
BAF統計具備垂直和水平內核濾波器係數。在一些芯片組中,濾波器係數是不對稱的。例如,MSM8996具備用於水平統計的四階IIR濾波器和具備用於垂直統計的二階LIR濾波器。因爲不對稱性,在某些場景中,統計數據可能在不一樣方向上具備不一樣的值,並致使在最終位於錯誤的鏡頭位置對焦。
下列這些就可能發生這種狀況:
- 水平統計給出了正確的值,可是垂直統計給出了錯誤的值
- 垂直統計給出了正確的值,可是水平統計給出了錯誤的值
若是出現上述任一狀況,則最終統計數據的總和不正確,可能會產生不許確的FV曲線並致使lens位置不正確。
5.8 Tune點光源條件
點光源是當圖像的暗區中出現很是亮的光或曝光的物體在FV中引發假的peak時,若是沒有考慮到這種狀況,可能致使圖像失焦或模糊。
Tuning點光源問題有兩個基礎部分:
- 經過調整用於弱光條件下的AF參數來防止false peak
- 若是須要作更多地調整,開啓點光源檢測輔助AF
5.8.1 Tune點光源場景的低光條件
5.8.1.1 調整AF過濾器
爲了防止false peak,在低光條件下使用高頻帶通濾波器[0.2,0.35]來是FV曲線平坦,步驟以下:
- 在BAF Filter中Lowght裏的Custom Filter配置中進行設置
- 開啓FIR Enable和IIR Enable
- 設置FIR Filter和IIR Filter
5.8.1.2 調整平坦比例
若是更改AF濾波器沒有產生真正的peak,則使用如下步驟來調整平坦比例以使點光源視爲平坦場景,這種調整能夠得到更準確而且一直的AF結果。
- 修改BV Threshold中的Flat Threshold參數
- 檢查平坦場景是否在超焦點位置
- 若是這些調整沒有解決,則須要看點光源檢測輔助Af特性
5.8.2 設置點光源檢測
使用參數來調整點光源的檢測
5.8.3 Tune點光源處理參數
設置能夠檢測點光源場景的參數後,調整處理點光源的參數
- 在AF Spotlight參數中進行調整
- 設置
AF Cont Spotlight Enable
爲1,這會強制HAF PDAF置信度指示爲錯誤。當檢測到點光源場景時,使用AF點光源特徵來處理場景。這樣能夠防止在HAF收斂期間PD值不可靠,同時也防止了在false peak位置時結束FV - 設置AF點光源的條件處理
5.8.4 點光源參數指導
調整AF點光源 threshold參數以防止FV在false peak位置結束並將點光源場景識別爲平坦曲線。這些調整可致使:
- 粗搜期間峯值識別更嚴格
- 開始時容易識別爲平坦曲線
- 在AF搜索結束時峯值識別更嚴格
5.8.5 解決點光源場景問題
點光源場景對於CAF來講很是具備挑戰性,它們具備飽和像素而沒有邊緣信息。解決此問題的第一步,請確保調整點光源檢測功能,以便檢測點光源場景。
5.8.6 爲ROI中網格賦予權重
在某些場景中,如點光源場景,但願爲ROI中的每一個網格賦予權重。若是要啓用此功能,請調整af_algo.reserve[96]
到af_algo.reserve[97]
。它能夠基於區域(即窗口位置)或亮度值給出權重。此功能在大多數像素飽和的點光源場景中頗有用。在這種狀況下,咱們想要提取具備高頻內容的像素並抑制飽和像素。在調整這些參數時要當心,由於賦予權重可能會致使某些簡單場景的FV不正確。
5.9 Touch/face PDAF特性
Touch/face功能的基本驗證設計到了PD庫返回的PD值,若是要tune touch/face PDAF功能,請執行一下操做:
- 開啓
pdaf.reserve[40]
- 讓物體處於多個深度的場景中,物體在前景而不是在中心,以下圖所示
- Touch前景對象,在上圖中是花
- 查看log確保ROI配置正確,log應該指定ROI類型和觸摸事件的座標,在log中應該能看到以下內容:
af_util_adjust_roi: TOUCH ROI af_util_adjust_roi: Calculated new ROI: (1068, 736, 534 534)
- 在touch以後確保PD庫返回的PD值是正確的
- 按照以下評估結果:
- 若是ROI配置和PD值正確,PDAF應該準確的對焦在前景的物體
- 若是ROI和PD正確,而且PDAF沒有很好地對焦,請排除影響一致性和準確性的常見問題
- 若是沒法看到ROI配置或者PD值錯誤,這是ROI軟件配置問題或者是PD庫配置問題,請聯繫CE
5.10 Face AF問題:未聚焦在臉部而是聚焦在背景
對焦到臉部是由於臉部的紋理感較低,獲得的FV曲線是平坦的,這致使在CAF中難以聚焦。若是出現此問題,請tuneaf_algo.reserve[91]
到af_algo.reserve[95]
來擴展FD給出的ROI大小,以便ROI有更多的細節,這樣能夠改善FV曲線。
5.11 常見問題:一致性和準確性
FV的一致性和準確性彼此密切相關。一般,在驚醒精度優化以前應在固定場景下優化AF搜索的一致性。
5.12 常見問題:AF速度
瞭解影響AF速度的問題和權衡是很是重要的,在tuning以前要肯定產生問題的主要緣由。
5.13 執行AE掃描測試
使用AE掃描工具測試對不一樣曝光級別的亮度響應,AE掃描輸出一下測試經過與否的結果:
- 延時測試
- 同步測試
- 線性測試-增益掃描
- 線性測試-線掃描
6、AF Tuning用例
6.1 CAF觸發過於靈敏,而且在緩慢panning狀況下容易觸發
當SAD被禁用時,觸發不該該那麼靈敏,而且僅由大幅度運動時才觸發。理想狀況下,gyro僅用於大幅度動做觸發而不是輕微動做觸發。若是這樣的問題仍然存在,則調整gyro參數。有多重參數能夠解決問題:
- Tune gyro參數
- Tune SAD參數
6.2 CAF觸發不夠靈敏,觸發時間太長
若是在場景變化後(已穩定)過了很長時間才觸發,則tune SAD。若是SAD和SADR敏感度過小可能會致使這個問題,調整靈敏度並從新測試。
瞭解觸發延遲的緣由很重要,兩個常見緣由以下:
- SAD/SADR觸發不正確
- 低光或者低對比度的特定場景
若是問題存在且在弱光環境下發生,則經過如下步驟來調整SADR靈敏度:
- 經過設置
GYRO_Sensitivity
和GYRO_PANNING_Sensitivity
爲0來禁用gyro相關聯的值 - 經過設置
SAD_PANNING_Sensitivity
爲0來禁用SAD - 增長
SADR_Sensitivity
(一般高於50) - 從新測試並檢查場景改變靈敏度性能是否獲得改善。若是沒有,則再次增長
SADR_Sensitivity
。 - 在SADR觸發器達到滿意性能後,將
SAD_PANNING_Sensitivity
從0改回原始值 - 修改
SAD_PANNING_Sensitivity
(變小或變大) - 從新測試並檢查總體場景變化性能是否達到預期
- 若是沒有,重複步驟6
- 若是達到了,設置
GYRO_Sensitivity
和GYRO_PANNING_Sensitivity
爲初始值
6.3 AF始終對焦到背景,不對焦前景
若是觸摸前景中的物體具備更高的觸發焦點的成功率,則調整ROI,多是ROI設置的太多了。
6.4 AF和TAF須要針對速度進行優化,但CAF須要針對平滑度進行優化
分別調整TAF和CAF的step table。
6.5 在AF搜索階段FOV改變太多
若是AF速度調整的很快,可能會致使沒必要要的FOV行爲。
記錄當前step table並與AF Tuning選項卡中的值進行比較,若是當前值與選項卡中的值相同或大於此值,則多是縮放效果的緣由。
有些狀況,當鏡頭從infinity到macro時,FOV會發生顯着變化。若是AF速度最大化,則預計會有更多的縮放效果。要減少縮放效果,請減小搜索期間的step以改善FOV的縮放。
6.6 須要改善AF速度
要調整AF速度,瞭解影響AF速度的問題和權衡很是重要。在進行更改以前肯定影響速度的主要緣由。
6.7 AF在中間距離表現較好,macro端和infinity端表現差
- 使用log記錄有問題場景的最終lens位置
- 啓用全掃並記錄最終鏡頭位置
- 比較兩次測量的最終位置
- 運行AF健全性測試以檢查鏡頭DAC範圍的有效性。若是測試失敗,請查看AF Tuning tab。
- 驗證是否正確傳遞了全部參數。
- 對於無窮遠物體,請跳至最後一步。對於微距物體,請繼續執行下一步。
- 對於微距物體,若是經過完整性測試,則經過將
fine_srch_rgn
設置爲SINGLE_NEAR_LIMIT_IDX
,將執行精搜以得到最佳精度 - 對於無窮遠物體,將每次迭代的步長減少10%,以測試精度,直到獲得目標或達到限制。
6.8 同一場景AF表現不一致
當場景沒有紋理或者低對比度時,一般會發現此問題。
有兩種方法能夠解決此問題:
- 調整
mid_zone
- 調整算法 threshold
6.9 在夜景/低光/低對比度場景下AF失敗率太高
若是總體失敗率與對比機相比太高,則在tuning工做和影響/權衡方面,大體能夠列出如下幾項:
- 經過調整
FV_min
增長FV曲線 - 爲低光調整ROI
6.10 對於沒有云的天空場景,圖像一般是模糊的
當天空場景對焦失敗時,鏡頭移動到infinity位置,在大多數狀況下,應該聚焦成功。然而,對於開環來講因爲鏡頭下垂,物理鏡頭位置會下垂,這會致使圖像模糊。
檢查log中的AF失敗。若是AF失敗,鏡頭移動到默認位置。
6.11 PDAF在低紋理場景中作出沒必要要地觸發搜索
在低紋理場景中,PDAF可能會沒必要要地觸發搜索或聚焦。當PDAF庫信號高或低置信度以及連續幀的高波動PD值時, PDAF將這些條件評估爲場景變化並當即觸發。而後PD庫經過給出正確的PD值來嘗試自我校訂,這會觸發又一次搜索,而且因爲PD值的波動致使鏡頭來回移動。這種狀況稱爲focus hunting。
6.12 PDAF在具備傾斜邊緣或線條的場景中失敗
在這種狀況下可能沒法正常對焦,根據每一個參數的描述來tunepdaf.reserve[19]~[20]
。啓動此功能後,PDAF會考慮水平和垂直的統計數據以肯定是否將場景設置爲低置信度。若是置信度低,則PDAF控制CAF以執行搜索。
6.13 AF搜索未結束拍照就不動了
大多數狀況下,AF會繼續搜索或保持對焦,而且沒法及時完成搜索。如今只能在搜索完成後拍照,若是在搜索期間點擊拍照,則應用程序將暫停快照,直到搜索完成。
6.14 手抖致使的FV降低和搜索不許確
因爲手抖動引發的模糊,針對場景計算的FV可能降低,保持在很是高峯,並致使AF搜索不許確。因爲曝光時間較長,在低光照條件下更嚴重。若是手持設備在低光條件下搜索不許確,則啓用和調整手抖動參數。
6.15 手抖處理消耗太多功率
手抖過程使用多個陀螺儀樣原本基於設備運動來校訂FV值,可是這可能會影響功耗。若是發生這種狀況,調整haf.reserve[80]~[83]
來設置gyro的採樣率。下降採樣率可能會影響精度,由於手抖過程須要多個陀螺儀樣本,以便在搜索過程當中有運動時校訂焦點值。
6.16 當檢測到face時AF進行了沒必要要的從新觸發
Face檢測對面部大小和位置的變化敏感,會根據這些更改生成新的FD標記,AF每次收到標記時都會觸發新的搜索。
7、AF測試程序
7.1 開啓全掃搜索和AF log
- 使用命令開啓全掃
- 打開AF log
- 打開相機前捕獲log
- 使相機對準場景
- 在日誌運行期間對焦完成
- 關閉相機,關閉log
- 在log中搜索關鍵字
7.2 開啓AF log
- 使用命令開啓AF log
- 打開相機前捕獲log
7.3 在預約的lens位置拍攝圖像
- 關閉相機而且開啓手動調整lens位置特性
- 捕獲RAW圖
- 開啓相機,因爲CAF沒有開啓,lens不會移動
- 指定lens移動位置
- 按拍照鍵來捕獲RAW圖和JPEG圖
- 從手機上提取圖像
7.4 在當前手動對焦位置拍攝圖像
- 將對焦模式設置爲無窮遠
- 選擇 Live->Utilities->Focus Tuning
- 選擇適當的拍照模式(raw或JPEG)
- 檢查AEC Lock框鎖定AEC曝光決策
- 將手動對焦設置到首選位置
- 在所選位置捕獲位置
7.5 確認FV狀態
- 記下使用的統計方式
- 開啓AF log
- 開始記錄
- 打開並穩定相機,完成對焦後,將手擋住相機,重複5次
- 觀察FV值
- 驗證它們是大於零的值而且是單調變化的
- 在對焦和失焦時驗證FV的對比度是否足夠大
7.6 進行AF健全測試
- 進行全掃搜索
- 捕獲測試圖像
- 確保全部圖像都對焦上
- 若是都對上焦,關閉全掃
- 啓用響應的AF算法重複步驟2~3
- 比較兩組圖片
- 若是全部來自全掃的圖像都聚焦,可是算法得到的不是,則重複清晰度、一致性和速度測試