AF的目的是肯定實現對焦的最佳鏡頭位置,並觸發actuator將鏡頭移動到該位置。通常來講,AF過程以下:算法
AF monitor的主要功能是場景變化檢測。直觀地說,場景變化意味着當前場景不在焦點上,這將致使算法觸發搜索以找到焦點的最佳鏡頭位置。
每種算法都有本身的標準來檢測場景變化。例如,CAF依賴於參考幀的Gyro參數,絕對差值之和(SAD)參數和參考SAD
(SADR)參數檢測場景變化。相比之下,PDAF依賴於當前幀的defocus值,算法的置信度和場景的穩定性的組合。
AF monitor還負責場景平移檢測。爲避免沒必要要的搜索,算法區分場景變化和場景平移。搜索算法在場景穩定以前不會開始搜索,即不進行panning。簡而言之,scene change和panning檢測是AF monitor狀態中的兩個基本功能。shell
Value monitor是3A版本6.0中的新增功能。雖然它最終將應用於其餘monitor算法,但Value monitor此時僅適用於CAF。其餘監控算法(PDAF,TOF和DCIAF)配置如3A版本5.1。架構
VM_SET_TYPE_GYRO
配置的任何其餘監控算法。 默認狀況下有4個monitor算法配置(CAF, PDFA, TOF, DCIAF),每一個算法可能依賴於不一樣的數據,有着不一樣的靈敏度參數。ide
爲了檢測和區分場景變化和panning,value monitor分析多個輸入信號,而後輸出二進制決策。應用指定的決策邏輯來肯定當前場景是否正在panning。所以,在AFmonitor中使用特定拓撲(斷定邏輯)。爲簡化設計,拓撲僅採用二進制輸入(0或1)。僅在拓撲中指定決策邏輯。
CAFmonitor拓撲的示例以下圖所示。它說明了value monitor的二進制輸出如何經過簡單的邏輯組合啓用場景更改/平移檢測。
svg
Meta Filter包含一系列濾波過程,例如中值濾波器,移動平均值(MVAVG)濾波器和無限脈衝響應(lIR)濾波器。當啓用這些濾波過程時,Meta Filter可以處理有噪聲的輸入信號。
Basic monitor是具備兩種檢測類型的monitor:工具
使用value monitor的主要目的之一是隔離不一樣算法之間的依賴關係。Chromatix中的value monitor bank設計用於在不一樣算法之間共享value monitor設置(即VMSET_TYPE)。這使得一個值monitor設置能夠在許多算法中使用。下圖說明了如何在不一樣算法之間共享VM SET_TYPE以及如何使用自定義設置。
性能
在自動對焦的搜索階段,算法使用各類方法來肯定最佳鏡頭位置以實現聚焦並觸發actuator將鏡頭移動到該位置。搜索階段分爲粗搜索和精搜。
粗搜索的目標是將鏡頭移向精搜的近界限。下圖說明了DCIAF算法中粗搜索和精搜的基本操做。
粗搜快速將鏡頭移動到適當的位置以開始精搜。精搜而後將鏡頭移動到具備最高FV值的位置。粗搜索和精搜的邊界,threshold,步長和limit是可配置的。能夠調整搜索參數以平衡速度和準確性,或者強調速度或準確性。粗搜有時也被稱爲焦點收斂。
每種算法使用不一樣的方法計算搜索的鏡頭位置。測試
Constrast AF(CAF) 檢測來自陀螺儀傳感器的運動值和luma的絕對差值之和(SAD),以檢測場景變化並觸發搜索。若是符合穩定性和置信度標準,則CAF會觸發搜索達到最高FV的鏡頭位置。
默認的AF搜索算法是single AF,這是一種基於對比度的算法。
如下是CAF和Single AF的關鍵點:優化
PDAF是經過測量由圖像傳感器中的相位檢測像素捕獲的圖像對之間的視差來工做的。視差的大小和符號與defocus相關,並用於估計最佳焦點的最佳鏡頭位置。
在手機上,像素級設計可爲左右像素建立有效光圈,像人眼同樣,左右像素獨立地捕捉光線。若是場景中的光收斂到相鄰的左和右相位檢測像素,則沒有視差而且鏡頭處於正確位置。若是光線沒有收斂在相鄰的左右相位檢測像素上,則存在視差而且鏡頭不在正確的位置。
下圖表示了收斂在相鄰和非相鄰相位檢測像素上的光以及基於視差的所得聚焦條件。
有三種用於生成左和右像素的常見像素設計方法:ui
ROI配置參數設置ROI位置和用於計算PD結果的ROI網格數,這些信息對於PDAF算法是必不可少的。設置太大的AF ROI可能會混淆PD結果和PDAF最終決策。這是由於不一樣距離的物體進入PD ROI並使最終的PD保持在遠物體和近物體之間的折中位置。
對全部狀況使用中心2x2ROI網格。下圖是中心2x2網格的示例。以IMX230爲例,當傳感器圖像的area_mode用做fixed_window(8x6)時,傳感器圖像被分爲H8 * V6 ROI網格。
一般,PDAF檢測場景的變化並在知足如下條件時觸發搜索:
計算相位差並將其轉換爲defocus值,以指示實現聚焦所需的鏡頭移動的大小和方向。正defocus值意味着運動由近到遠,負defocus值意味着運動從遠到近。當defocus值接近零時,表示目標處於焦點。
defocus的計算方法以下:
Final PD value - 每一個ROI PD的加權平均值和置信度值,僅包括置信度值大於最小置信度 threshold的ROI。
DCC - Defocus轉換系數,由模組供應商校準。
VCM sensitivity - AF校準結果,來自模組供應商。
置信水平是在相位差估計中使用的場景中的線條數量(例如,垂直邊緣,場景亮度)的功能。高置信度意味着ROI中的PD具備小的差別和更高的邊緣強度。置信表用於定義相對於sensor gain的最小置信度 threshold。
經過評估deocus值歷史來計算穩定性,若是值在可調threshold內,則認爲場景穩定。
在忽然的深度變化期間,PD library暫時下降兩幀或三幀的置信水平。wait_conf_recover
參數有助於PDAF區分置信水平的持續降低(例如,沒有垂直邊緣)與臨時降低(例如,忽然的深度變化)。這避免了每次在場景深度的忽然變化期間過早觸發CAF。
在下面的示例中,若是not_conf_cnt
大於wait_conf_recover_cnt
,則因爲置信水平的持續降低,算法會切換到CAF。
當應用更高的增益時,來自傳感器的PD信息可能變得有噪聲。當噪聲增益較高時,PDAF可能會獲得不可靠的defocus值,這可能致使聚焦失敗。要適應更高的增益並保持精度,能夠經過調整噪聲表來增長精細掃描範圍。
經過將適當的乘數從噪聲增益表應用於精細掃描步長來計算精細掃描範圍。
在PDAF中,粗搜控制鏡頭移動到焦點位置。相位差越大,視差越大、意味着defocus值越大。以下圖所示,當相位差較大時,則相應的噪聲水平越高;當相位差小時,噪聲水平也很小。隨着鏡頭移近最佳焦點,噪音更小。
所以,有必要將自動聚焦做爲迭代過程進行,其中鏡頭逐漸移動以實現最佳對焦。迭代過程致使平滑的AF收斂並防止過沖行爲。
爲了使AF平滑,PDAF使用迭代運動來提供良好的AF收斂用戶體驗並防止過沖行爲。PDAF Focus table(focus_tb1)包含根據相位差估計指定所需鏡頭移動百分比的entry。move_pcnt
tuning參數根據原始defocus距離將一個大鏡頭移動分解爲小鏡頭移動。
更高的百分比意味着更少的迭代鏡頭移動、更快的AF速度和焦點跟蹤。可是,這可能致使調整過分。校訂過沖所需的鏡頭移動會產生不平滑的AF收斂和較差的用戶體驗。
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表以下:
因爲相位差計算在某些條件下不夠準確,所以PDAF算法切換到CAF以進行精搜並確認最終峯值位置。影響相位差精度的因素包括場景條件(例如,低光,圖像紋理,顏色和距離)和鏡頭/傳感器製造問題。
若是使用2PD並依賴PD來找到最終的目標,則禁用精搜。
在大多數狀況下,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會調用精搜。
在TOF AF中,激光傳感器經過計算向目標發射紅外光和在接收器處接收紅外光之間的時間來測量到目標的距離。基於光子行進時間和光速來計算相機與目標之間的距離。計算的準確性取決於基於對比度的AF調整的準確性。
與常規CAF相比,TOF對焦速度明顯更快。在低光至正常光照條件下,TOF性能最佳。但在室外條件下,傳感器難以區分激光發射器發出的光和來自太陽光的光。
TOF經過評估激光傳感器報告的距離來檢測場景的變化。激光傳感器還會生成一個錯誤代碼,表示報告距離的置信度。
若是算法對報告的距離有信心,則觸發激光輔助粗搜索。搜索將鏡頭移動到精搜的近界限被稱爲焦點收斂。若是算法不自信,它能夠:
焦點收斂狀態的目標是將鏡頭移動到精搜的近界限。
假設當前鏡頭位置是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的移動過程能夠用下圖表示:
虛線對應的點就是焦點收斂點和精搜的起始點。
若是lens向far端移動,則有以下公式:
jump_to_start_limit_low_light
而不是
jump_to_start_limit
。
TOF算法中的精搜是基於對比度的。精搜的邊界是近側的焦點收斂點,遠側的邊界使用num_far_steps_near_direction
或num_far_steps_far_direction
來設置。取決於鏡頭移動方向的方向。
理想狀況下,對於num_near_steps參數有一個更大的數字,對於num_far_steps參數有一個更小的數字。這是由於最好退出焦點收斂並儘早開始精搜以減小焦點缺失和過沖。 num_far_steps參數保持較小,由於若是在最後沒有找到焦點,則精搜將繼續,直到找到峯值。
DCIAF經過基於兩個相機之間的差異/視差估計物體的距離來顯着減小AF.DCIAF工做所需的時間。DCIAF匹配相同物體的突出特徵以計算立體視差。
在上圖中,一個圖像來自主sensor,另外一個來自副sensor。黃色圓圈(p1和p2)是每一個圖像中的匹配點。使用
AF能夠在PLD gating完成後開始,而且主要與ISP,AWB和AEC tuning並行發生。其中特別是AEC和ISP,可能會對AFtuning產生影響。
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數據不可用,則調諧的線性範圍對於某些模組可能不可靠。可能致使某些場景的搜索算法失敗。
參數 | 搜索行爲 | 描述 |
---|---|---|
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 | 中間區域 | 此參數定義鏡頭的起始方向,由於鏡頭向中間區域移動。 |
用來測試actuator和lens模組通過設置AF tuning參數後的狀況,測試良好一般有如下這些:
在高級tuning前執行CAF掃描測試,分析結果並執行一些必要的動做。
在Tuning過程的這些階段執行CAF掃描測試:
這項測試檢測lens模組的滯後性。Lens先從遠端到近端全掃,而後從近端到遠端全掃。兩次不一樣方向全掃的FV曲線的峯值應該重合,若是沒有重合則說明這個lens模組有嚴重的滯後,這個問題須要解決。
在500lux照度以上使用三腳架在30cm距離拍攝分辨率12233的ISO卡。
若是兩個方向全掃的FV曲線峯值重合,則說明模組是好的。若是峯值誤差超過了10%,則說明模組有滯後,對於這種狀況應該再驗證最少兩次以上,若是這個現象仍能復現,須要告知模組廠是否可接受,若是不接收只能更換好的模組。
這項測試檢測了infinity到macro的boundary範圍,檢測lens在macro到infinity並正確對焦的移動範圍是否足夠。
在500lux照度以上使用三腳架在macro端10cm距離拍攝分辨率12233的ISO卡。在200cm的infinity端重複測試一遍。
若是是開環actuator,還須要作以下測試:
該測試經過多幀的相同鏡頭位置處FV值的一致性來檢查鏡頭移動命令發出後鏡頭是否設置。
在500lux照度以上使用三腳架在30cm距離拍攝分辨率12233的ISO卡。
圖A說明damping/ringing配置正確,圖B則說明有如下狀況:
該測試經過檢查其對比度(最大值FV/最小值FV)來檢查FV值圖的質量。較大的比率表示AF算法有良好對比度。
在500lux照度以上使用三腳架在30cm距離拍攝分辨率12233的ISO卡。
圖A說明BAF配置正確,圖B、C說明BAF配置錯誤,或者ISP解析BAF統計數據時存在錯誤,重複測試兩次以確認問題。
能夠嘗試tune BAF設置不一樣參數,例如kernel coefficients來看對比度比率是否改善。
此測試檢查在AF Tuning選項卡中計算的鏡頭位置調整值,並在全掃描測試中捕獲鏡頭位置。若是鏡頭位置映射與測試結果不匹配,則調整鏡頭位置調整值。這些值位於AF Tuning選項卡以及3A頭文件中的single_optic
結構體中。
在500lux照度以上使用三腳架在14cm距離拍攝分辨率12233的ISO卡。在20cm,60cm,200cm處重複測試。
圖A說明step table設置正確,圖B說明在測試中測量的鏡頭位置與標題中的鏡頭位置之間存在太多的誤差。返回AF Tuning選項卡並檢查輸入值。若是更新值,請單擊「計算」以從新計算鏡頭位置調整值,而後重複測試。若是輸入值準確,請調整適當的鏡頭位置tune值,而後重複測試。
HAF提供了基於深度算法(TOF/PDAF/DCIAF)和CAF的AF接口,它也提供了這些算法的通用架構。
若是你的設備硬件必須支持基於深度的算法,使用enable
參數來使能HAF,使用algo_enable
參數來使能 基於深度的算法。
參數名稱 | 描述 | Tuning設置 | 默認值 |
---|---|---|---|
enable | HAF主要啓用標誌 | 設置爲「1」開啓HAF | 0 |
algo_enable[4] | 每一個算法的使能標誌(TOF, PDAF, DCIAF, and Test) | 設置爲「1」開啓相應基於深度的算法 | |
stats_enable[3] | |||
stats_select | |||
fine_srch_drop_thres |
精搜擴展功能容許在一個基於深度(PDAF, TOF, DCIAF)的算法提供的搜索範圍以外找到peak。一般算法進行粗搜後會給基於對比度的精搜提供搜索範圍。在大多數狀況下,精搜的範圍在找到真正的FV peak以前就結束了。
精搜擴展參數擴展了基於深度的算法的精搜範圍,若是啓用了擴展,精搜將評估FV曲線趨勢以肯定是否找到峯值。若是FV趨勢指示還沒有找到峯值,則搜索將繼續按照精搜擴展參數指定。
當使用TOF或者PDAF type3時推薦開啓精搜
當目標處於焦點時驗證PDAF功能:
pdaf.reserve[30] is_2PD_enable
.af_pdaf_proc_pd:grid[0-47]: pd=0.06, defocus=5, conf=286, weight=0.34
Log: af_pdaf_proc_pd: roi[0]: pos252 index=49, pd=0.19, defocus=1, conf roi=833, is_conf=1
主要測試PD值和FV值的質量,這兩個值應該對齊。
使用垂直條紋圖表(500+lux光照條件),將設備橫向放置在三腳架上,並將圖表放置在不一樣的距離(10釐米,20釐米和100釐米)
從設備。
若是圖形看起來像圖A,則PD庫輸出相位差正確。若是看起來像圖B,則聯繫庫供應商(例如,索尼)以肯定PD校準是否有故障。
在這個測試中,比較不一樣距離的兩組圖像的清晰度,同時還比較一些AF參數的精度。一組圖像使用全掃描搜索,而另外一組使用TOF算法。
將分辨率12233的ISO卡放置在指定位置,將手機橫向放置在三腳架上,使用500+lux光照條件。
adb root adb remount adb shell setprop persist.camera.stats.debug.mask 48
ALGO Complete
,應該能夠看到: ALGO Complete finalpos 92 totaltime: 330 fine_search_time 265 focus_converge_time 65
PDAF參數的默認值可能適用於大多數狀況,可是在某些場景中還須要進行一些調整才能達到特定目標。這些能夠調整的參數在PDAF中的幾個表(例如Focus table, noise table)中。
2PD參數的默認值可能適用於大多數狀況,可是在某些場景中還須要進行一些調整才能達到特定目標。這些能夠調整的參數是pdaf.reserve[30]~pdaf.reserve[48]
和pdaf.reserve[50]~pdaf.reserve[60]
。
TOF AF是一項有助於提高AF速度的特性。在TOF Af中,激光傳感器根據發出的光線和接收光線的時間來測量距離。計算的準確性取決於基於對比度AFtuning的準確性。TOFtuning的先決條件是初始化tuning已完成。
在TOF tuning前要確認TOF sensor正確啓動而且報告一個正確的距離。
adb root adb remount adb shell setprop persist.camera.stats.haf.debug 3 adb shell setprop persist.camera.global.debug 1
DEPTH_SERVICE
:打印sensor給出的全部信息af_tof_set_data: Calculated_lens position
:給出傳感器報告的距離和算法計算的相應鏡頭位置。在AF tuning頭文件中,設置使能
測試CAF的laser sensor驅動返回的質量距離
使用三腳架在不一樣距離重複測試(10,20,100cm)
圖A的傳感器返回的距離對於測試距離是正確的,圖B返回的距離與指望的有較大誤差。聯繫廠商肯定返回錯誤距離的緣由。在大多數狀況下,是由於laser sensor的蓋玻片須要校準,若是校準不許確,則可能輸出不一致的距離。
在這個測試中,比較不一樣距離的兩組圖像的清晰度,同時還比較一些AF參數的精度。對一組圖像使用全掃,對另外一組使用TOF算法。
將分辨率12233的ISO卡放置在指定位置,將手機橫向放置在三腳架上,使用500+lux光照條件。
adb root adb remount adb shell setprop persist.camera.stats.debug.mask 48
ALGO Complete
,應該能夠看到: ALGO Complete finalpos 92 totaltime: 330 fine_search_time 265 focus_converge_time 65
threshold_min
與threshold_max
是用於CAF的相同AF SAD參數。一般來講,當laser sensor在遠距離(60cm及以上)不能檢測場景變化時用SAD檢測場景變化。
DCIAF依賴於估計距離與相應AF鏡頭位置之間的準確映射。這個鏡頭位置映射的距離基於single AF tuning,DCIAF對這個映射是很是敏感的。
若是鏡頭位置映射與正常方向的全掃描位置不匹配,則在調整DCIAF以前從新訪問CAF tuning(AFactuator和single AF)。
若是鏡頭位置映射與面朝上或面朝下方向的全掃描位置不匹配,則在調整DCIAF以前從新檢查鏡頭下垂補償。
在這個測試中,比較不一樣距離的兩組圖像的清晰度,同時還比較一些AF參數的精度。對一組圖像使用全掃,對另外一組使用DCIAF算法。
adb root adb remount adb shell setprop persist.camera.stats.debug.mask 48
ALGO Complete
,應該能夠看到: ALGO Complete finalpos 92 totaltime: 330 fine_search_time 265 focus_converge_time 65
高級AF tuning能夠改善AF性能,包括搜索速度,精度和健壯性。全部的高級tuning流程都是按需可選的。在高級AF tuning前應該完成初始化AF tuning。
CAF監測來自陀螺儀傳感器的運動值和亮度值中的絕對差之和(SAD),以檢測場景變化並觸發搜索。
CAF負責如下事項:
Topo_CAF
中的靈敏度參數來調整CAF。這些參數與關聯值監視器中的參數一塊兒使用,以配置算法的行爲。初始默認鏡頭位置爲無限遠。默認鏡頭位置會影響相機啓動期間的延遲。例如,若是鏡頭處於無限遠處,則相機啓動期間10cm的延遲高於鏡頭位於中間的延遲。可是,正常使用狀況則是用戶在啓動相機時將注意力集中在無限遠物體上。
根據每一個參數的描述調整haf.reserve[5]和[6]以改變初始鏡頭位置。
AF Tuning選項根據在Lens Position Tuning Input組中指定的值計算CAF/TAF步長表。能夠經過選擇Search Preference預設之一或輸入新值來調整表格。
若是自定義步長值時,請按照以下步驟:
far_end_position
到normal_hyperfocal_position
normal_hyperfoc
到srch_rgn_1
(默認50cm)srch_rgn_1
到srch_rgn_2
(默認20cm)srch_rgn_2
到srch_rgn_3
(默認14cm)srch_rgn_3
到near_end
較低的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可能因同一場景而異。
若是要修改ROI參數,可使用AF Tuning
選項中提供的一個可用ROI預設進行選擇和測試。對預設進行配置和測試以知足其預期目標,執行必要的測試以肯定是否須要增長或減小ROI大小,而後調整ROI參數。
ROI Tuning注意事項:
要tune CAF ROI,從默認CAF設置開始,而後執行如下操做:
Tune CAF ROI後,tune TAF ROI以對焦到較小的物體,TAF的ROI應該比CAF的ROI要小。爲了不依賴於算法,能夠在tuning ROI時啓用全掃。
根據要使用的統計信息的優先級,設置標誌PAAF_enable
(in af_tuning_single_t)以使用軟件統計信息或禁用它以使用硬件統計信息。若是軟件AF統計信息常常丟失,則禁用此變量並使用硬件統計信息。
在AF中有一個軟件(基於ARM)AF統計信息功能,這個統計功能用於統計預覽流來計算FV值。這種方法的缺點就是FV的峯值不夠sharp,可使用fine search來定位實際的峯值。
軟件版本的ROI使用了和基於硬件AF同樣的ROI,硬件ROI映射到軟件使用的預覽大小。
軟件統計引擎有三種配置:正常(默認),低光和fafce ROI濾波器係數集。
在大多數狀況下BAF是不須要進行tuning的,可是某些狀況仍是要進行適當的調整。
默認的BAF ROI參數能夠知足大多數狀況,若是是想修改BAF ROI參數或者想實現自定義ROI,就須要聯繫CE。
參數preset_id
定義了ROI形狀首選項,下圖說明了支持的ROI形狀:
默認的形狀是矩形,支持自定義ROI形狀。若是自定義了,那麼自定義的ROI會繞過ROI配置,並會傳到AF端口進行硬件配置。
可選的gamma tuning的目的是在不一樣亮度級下提高像素對比度。
LUT Enable
參數設置爲0關閉gamma表若是使用多通道的Y通道,能夠按以下方式tune Y的轉換:
爲下列場景類型提供了默認的BAF濾波器
默認值爲AF_STATS_HV
。
BAF統計具備垂直和水平內核濾波器係數。在一些芯片組中,濾波器係數是不對稱的。例如,MSM8996具備用於水平統計的四階IIR濾波器和具備用於垂直統計的二階LIR濾波器。因爲不對稱性,在某些場景中,統計數據可能在不一樣方向上具備不一樣的值,並致使在最終位於錯誤的鏡頭位置對焦。
下列這些就可能發生這種狀況:
若是出現上述任一狀況,則最終統計數據的總和不正確,可能會產生不許確的FV曲線並致使lens位置不正確。
點光源是當圖像的暗區中出現很是亮的光或曝光的物體在FV中引發假的peak時,若是沒有考慮到這種狀況,可能致使圖像失焦或模糊。
Tuning點光源問題有兩個基礎部分:
爲了防止false peak,在低光條件下使用高頻帶通濾波器[0.2,0.35]來是FV曲線平坦,步驟以下:
若是更改AF濾波器沒有產生真正的peak,則使用如下步驟來調整平坦比例以使點光源視爲平坦場景,這種調整能夠得到更準確而且一直的AF結果。
使用參數來調整點光源的檢測
設置能夠檢測點光源場景的參數後,調整處理點光源的參數
AF Cont Spotlight Enable
爲1,這會強制HAF PDAF置信度指示爲錯誤。當檢測到點光源場景時,使用AF點光源特徵來處理場景。這樣能夠防止在HAF收斂期間PD值不可靠,同時也防止了在false peak位置時結束FV調整AF點光源 threshold參數以防止FV在false peak位置結束並將點光源場景識別爲平坦曲線。這些調整可致使:
點光源場景對於CAF來講很是具備挑戰性,它們具備飽和像素而沒有邊緣信息。解決此問題的第一步,請確保調整點光源檢測功能,以便檢測點光源場景。
在某些場景中,如點光源場景,但願爲ROI中的每一個網格賦予權重。若是要啓用此功能,請調整af_algo.reserve[96]
到af_algo.reserve[97]
。它能夠基於區域(即窗口位置)或亮度值給出權重。此功能在大多數像素飽和的點光源場景中頗有用。在這種狀況下,咱們想要提取具備高頻內容的像素並抑制飽和像素。在調整這些參數時要當心,由於賦予權重可能會致使某些簡單場景的FV不正確。
Touch/face功能的基本驗證設計到了PD庫返回的PD值,若是要tune touch/face PDAF功能,請執行一下操做:
pdaf.reserve[40]
af_util_adjust_roi: TOUCH ROI af_util_adjust_roi: Calculated new ROI: (1068, 736, 534 534)
對焦到臉部是由於臉部的紋理感較低,獲得的FV曲線是平坦的,這致使在CAF中難以聚焦。若是出現此問題,請tuneaf_algo.reserve[91]
到af_algo.reserve[95]
來擴展FD給出的ROI大小,以便ROI有更多的細節,這樣能夠改善FV曲線。
FV的一致性和準確性彼此密切相關。一般,在驚醒精度優化以前應在固定場景下優化AF搜索的一致性。
瞭解影響AF速度的問題和權衡是很是重要的,在tuning以前要肯定產生問題的主要緣由。
使用AE掃描工具測試對不一樣曝光級別的亮度響應,AE掃描輸出一下測試經過與否的結果:
當SAD被禁用時,觸發不該該那麼靈敏,而且僅由大幅度運動時才觸發。理想狀況下,gyro僅用於大幅度動做觸發而不是輕微動做觸發。若是這樣的問題仍然存在,則調整gyro參數。有多重參數能夠解決問題:
若是在場景變化後(已穩定)過了很長時間才觸發,則tune SAD。若是SAD和SADR敏感度過小可能會致使這個問題,調整靈敏度並從新測試。
瞭解觸發延遲的緣由很重要,兩個常見緣由以下:
若是問題存在且在弱光環境下發生,則經過如下步驟來調整SADR靈敏度:
GYRO_Sensitivity
和GYRO_PANNING_Sensitivity
爲0來禁用gyro相關聯的值SAD_PANNING_Sensitivity
爲0來禁用SADSADR_Sensitivity
(一般高於50)SADR_Sensitivity
。SAD_PANNING_Sensitivity
從0改回原始值SAD_PANNING_Sensitivity
(變小或變大)GYRO_Sensitivity
和GYRO_PANNING_Sensitivity
爲初始值若是觸摸前景中的物體具備更高的觸發焦點的成功率,則調整ROI,多是ROI設置的太多了。
分別調整TAF和CAF的step table。
若是AF速度調整的很快,可能會致使沒必要要的FOV行爲。
記錄當前step table並與AF Tuning選項卡中的值進行比較,若是當前值與選項卡中的值相同或大於此值,則多是縮放效果的緣由。
有些狀況,當鏡頭從infinity到macro時,FOV會發生顯着變化。若是AF速度最大化,則預計會有更多的縮放效果。要減少縮放效果,請減小搜索期間的step以改善FOV的縮放。
要調整AF速度,瞭解影響AF速度的問題和權衡很是重要。在進行更改以前肯定影響速度的主要緣由。
fine_srch_rgn
設置爲SINGLE_NEAR_LIMIT_IDX
,將執行精搜以得到最佳精度當場景沒有紋理或者低對比度時,一般會發現此問題。
有兩種方法能夠解決此問題:
mid_zone
若是總體失敗率與對比機相比太高,則在tuning工做和影響/權衡方面,大體能夠列出如下幾項:
FV_min
增長FV曲線當天空場景對焦失敗時,鏡頭移動到infinity位置,在大多數狀況下,應該聚焦成功。然而,對於開環來講因爲鏡頭下垂,物理鏡頭位置會下垂,這會致使圖像模糊。
檢查log中的AF失敗。若是AF失敗,鏡頭移動到默認位置。
在低紋理場景中,PDAF可能會沒必要要地觸發搜索或聚焦。當PDAF庫信號高或低置信度以及連續幀的高波動PD值時, PDAF將這些條件評估爲場景變化並當即觸發。而後PD庫經過給出正確的PD值來嘗試自我校訂,這會觸發又一次搜索,而且因爲PD值的波動致使鏡頭來回移動。這種狀況稱爲focus hunting。
在這種狀況下可能沒法正常對焦,根據每一個參數的描述來tunepdaf.reserve[19]~[20]
。啓動此功能後,PDAF會考慮水平和垂直的統計數據以肯定是否將場景設置爲低置信度。若是置信度低,則PDAF控制CAF以執行搜索。
大多數狀況下,AF會繼續搜索或保持對焦,而且沒法及時完成搜索。如今只能在搜索完成後拍照,若是在搜索期間點擊拍照,則應用程序將暫停快照,直到搜索完成。
因爲手抖動引發的模糊,針對場景計算的FV可能降低,保持在很是高峯,並致使AF搜索不許確。因爲曝光時間較長,在低光照條件下更嚴重。若是手持設備在低光條件下搜索不許確,則啓用和調整手抖動參數。
手抖過程使用多個陀螺儀樣原本基於設備運動來校訂FV值,可是這可能會影響功耗。若是發生這種狀況,調整haf.reserve[80]~[83]
來設置gyro的採樣率。下降採樣率可能會影響精度,由於手抖過程須要多個陀螺儀樣本,以便在搜索過程當中有運動時校訂焦點值。
Face檢測對面部大小和位置的變化敏感,會根據這些更改生成新的FD標記,AF每次收到標記時都會觸發新的搜索。