攝像頭模組 PDAF對焦(Phase Detection Auto Focus)
http://blog.csdn.net/sylorchen/article/details/54618912
本文主要是最近看的兩個文件的總結,相對零散的筆記,包括《imx298 software reference PDAF》與《PDAF Truly》。
1、PDAF功能的實現需要使用到shield pixel的概念,包括right-half-shield與left-half-shield兩種,起到模仿左右眼的類似功能,參考如下圖片。
2、shield pixels主要分佈在晶片居中的92%範圍內,其中的32×32規格的pixel array被標稱為1個block,shield pixel在這一個block中的佔比為1/64,即每個block中有16個shield pixel,right-half-shield與left-half-shield各8個,不同廠家之間組織方式會有區別,可能出於規避專利的問題。
3、使用PDAF功能是需要進行模組校正(Calibration),包括SPC(shield pixel calibration)與DCC(defocus conversion coefficient)。嚴格意義上講,SPC功能才是正常的校正動作,而DCC功能非校正而是生成DAC與Focus的係數關係,進而實現PDAF功能。
4、SPC:為了實現PDAF功能,晶片的畫素矩陣中,部分G pixel進行了遮光結構設計,光能訊號比正常的G pixel要弱一些。因此,為了達到正常G pixel的能效水平,需要對此型別的G pixel增加額外的增益,此動作稱之為SPC。校正前後的效果可參考下面圖示,其中橫座標為像高對應位置,而縱座標則為pixel感光效能。
5、如上圖所示,兩根不同走勢dash線分別表示right-half-shield與left-half-shield兩種情況,通過調整pixel的增益,是的其效能水平與其他正常的G pixel一致。此校正過程使用的是純白的背透式標靶,拍攝純白標靶後通過線性插值獲得各個對應位置的增益,並把此增益寫入OTP位置,此OTP資料稱為SPC Map,共兩份Map,right-half-shield與left-half-shield各一份。
6、下圖是SPC Map的組織方式,總共將成像區域劃分為9×7個block,其中每個block包含512×512個pixels,最左上角的第一個block中心點為(280,212)。這63個blocks的中心點被稱為Knots(繩子打結處的節點),生成63個插值後的資料,資料大概計算方式為G-pixel/PD-pixel,只有G pixel有shield
pixel,其他沒有。
7、DCC:在討論PDAF功能的時候,大部分情況下我們都會聲稱通過該功能模組能夠知道當前被攝物的距離。其實我們並非物理上知道被攝物的距離,而是通過左右shield pixel之間的差異來將被攝物對映到鏡頭移動距離中的某個位置。系統在進行對焦的時候,需要將檢測到的相位差(phase difference)轉換為離焦率(Defocus Value),這個轉換過程應用到的表單資料稱為DCC(defocus conversion coefficient)。
8、DCC的測試計算方式包括如下的動作:
將模組的有效對焦行程切分為10等分,即(近焦DAC - 遠焦DAC)/10,以此來覆蓋馬達的對焦範圍;
在每個對焦DAC位置進行對焦,並記錄當前對焦DAC位置的相位差;
完成馬達對焦行程後取一組10pcs的對角DAC與獲得的PD資料進行做比(PD/DAC);
生成10pcs相近的比值記為k,DAC與PD組成的二維資料進行描線可以通過演算法擬合出逼近斜率為k的直線;
9、由於模組之間的個體差異,DCC需要每一模組單獨測量,而且由於鏡頭的場曲、shading之類的問題,同一模組的四周與中心同樣存在差異,不能以同一係數進行轉換,一般而言四周的係數會比中心的係數要高一些。一般而言將區域劃分為小的M×N個blocks,每個block通過上面⑧的過程獲得單獨的k。而後計算時離焦率跟離焦係數與相位差之間按如下的換算方式進行:Defocus Value = Phase Difference × Coefficient,如下圖所示:
10、DCC校正過程中,需要使用到黑白相間的背透式標靶,拍攝距離按照15cm進行。由於現行shield pixel只有L、R兩個方向,所以校正標靶的黑白條案有走向要求,需要平行於LR shield pixel方向才能被識別並檢測;-------------------------------此項待確認。
11、PDAF檢測過程(from Truly document):
獲得被攝物對焦位置的某一行或若干行的資料資訊;
讀取right-half-shield與left-half-shield數列資訊;
使用right-half-shield與left-half-shield所生成的數列①中所獲取的行資訊進行卷積分計算(卷積分計算會是原來行資訊只攜帶對應卷積序列的資訊);
將卷積後的兩個新數列做平滑微分插值等預處理,獲得兩個平滑切相對位移的資料;
將此兩資料的相位差傳入系統中,應用PDAF庫及DCC資料進行計算獲得離焦率;
通過該離焦率向馬達下達對應DAC動作的指令並完成對焦;
上述是一個簡單的原理介紹,實際的第⑤步驟中還需要混入置信區間的概念,以此作為是否合焦等的確認。