iPhone這樣做人臉識別:揭秘3D深度感測器

感知距離和深度,對多數人的雙眼來說都是輕鬆而自然的。但是讓智慧手機或者汽車上的攝像頭也探測到環境深度特徵,可並不容易。普通的攝像頭無法單獨完成這一任務,必須依靠深度感測器。目前市面上 3D 深度感測器大概有幾種方案:

目前市面上 3D 深度感測器大概有幾種:

雙目方案(Stereo)結構光方案(Structure Light)飛光時間方案(Time of Flight)其他:毫米波,鐳射雷達(LiDAR)

iPhone這樣做人臉識別:揭秘3D深度感測器

前 3 種都是消費級產品比較常用的方案,也有很多模組公司單獨為開發者定製模組;第 4 種毫米波和鐳射雷達多應用在現在比較火的自動駕駛領域。以下主要介紹前 3 種方案。

雙目方案

雙目方案就是將兩個攝像頭固定在同一個模組上,並且調整它們的角度、固定它們之間的距離,來形成一個穩定的模組結構。

iPhone這樣做人臉識別:揭秘3D深度感測器

普通的單目的攝像頭所捕捉的每一幀都只是 2D 畫面,每一個畫素也都是 RGB 畫素,所以不包括深度資訊,需要從另外一個維度補充進來。

雙目攝像頭其實就是利用了三角測距的演算法。如果我們在平面上畫一個三角形,左邊一個角度、右邊一個角度還有中間這兩個頂點之間的線段長度已知的話,就可以從這三個資訊計算出三角形第三個點的位置資訊和三角形另外兩條邊的長度。

當我們把兩個攝像頭同時照向被測量物體的時候,每一個攝像頭裡都會出現被測量物體的影像。透過捕捉和提取兩個攝像頭影像裡的同一個特徵點,就可以知道這個特徵點分別位於兩個攝像頭的哪個位置。

如果兩個攝像頭同時捕捉一張畫面,左邊捕捉一幀、右邊捕捉一幀,這個點的畫素在兩個攝像頭的座標就會有一個距離差值,因為兩個攝像頭擺放中間是有距離的。

那麼,根據左右兩個攝像頭擺放的角度和兩個攝像頭中間的固定距離,就可以用三角測量方法測量出來遠處的被測量的物體距離兩個攝像頭基線的距離。如果加上了紅外燈的光照,那麼它就能夠在黑暗的環境捕捉到深度資訊。

結構光方案

結構光方案的基本原理跟雙目一樣,也是三角測量。不過,這個三角形已知的兩個點中有一個點被替換成了投影儀,另一個點還是攝像頭。

iPhone這樣做人臉識別:揭秘3D深度感測器

這個投影儀投射的就是一個結構光圖案,也就是說它會投射一個已知的圖案到被測量的物體上,然後透過攝像頭來獲得返回光照反射的圖案,再跟已知的圖案進行對比。同時已知這個攝像頭和剛才的投影儀之間的固定距離,就能透過三角測量的方案比對出深度的資訊。

這種三角測距的感測器都存在這樣一個基線大的問題。大家可以想象到,如果兩個已知點距離非常窄的話,它們和被測物體的被測點之間所形成的三角形就會非常尖銳,測量出來的誤差就會非常大。

目前,有兩個主流可量產的結構光方案:一個是散斑結構光,一個是編碼結構光。

散斑結構光

顧名思義,散斑結構光是指投影儀投出來的已知資訊是一些隨機的散斑,但它會在出廠之後做標的校準,記錄下來散斑是什麼樣子。

iPhone這樣做人臉識別:揭秘3D深度感測器

散斑結構光是從鐳射源發射出來一條鐳射,透過 DOE 元件打成散斑照射到被測物體上。用散斑結構光比較有名的消費級產品包括 iPhoneX 的人臉識別和 OPPO Find X。

編碼結構光

編碼結構光跟散斑結構光的區別是:光束投射出來之後用一個掩膜把光遮擋出來一些圖案。

iPhone這樣做人臉識別:揭秘3D深度感測器

比如把光打成格子狀,再投到物體上,格子和線條就會變形,再返回到攝像頭,就能測量出來它的深度。或者透過彩色編碼結構光。透過發射的光就知道哪個位置應該是什麼顏色,返回的時候就知道這個顏色有多少偏離,從而知道深度資訊。

這種結構光方案的比較出名的應用就是小米手機,它在第 8 代探索版上面應用了這個來做人臉識別。

飛光時間方案

飛光時間(Time of Flight, TOF)和前面兩個方案的基本原理不太一樣,它用的是光在空間中飛行的時間乘以光的速度,得到我們和被測物體之間的距離。

iPhone這樣做人臉識別:揭秘3D深度感測器

TOF 感測器上會有一個紅外 LED 或 VCSEL 發射光源,高頻發射一個亮光源。亮光源打到被測物體之後,先打到的部分就先反射回來,後打到的部分就後反射回來,這樣反射回來的光就會形成被測物體表面形成的形狀。

然後 TOF 感測器上面的 CCD(Charge Coupled Device)感測器,就會以極高的頻率把變形的亮光源進行切割,每一幀畫面都分時地切割。這樣我們就會收集到每一幀畫面和之前發射面光源的時間差,利用這個時間差就可以計算出每一張畫面跟 TOF 感測器之間的距離,從而看出物體的深度資訊。

其實 TOF 這個詞包含了很多種感測器,有亮光源的、有光束的,之前提到的毫米波雷達其實也是一種。光就是電磁波,毫米波雷達就是一種電磁波,透過發射返回的時間來計算距離。

包括現在智慧駕駛用比較多的鐳射雷達也是 TOF 的原理,它的鐳射發射器 360 度旋轉,這樣就可以取得 360 度的視野深度資訊。

三種方案特點對比

iPhone這樣做人臉識別:揭秘3D深度感測器

雙目方案和結構光方案算力需求比較高。因為它們是透過影象一幀一幀分析深度資訊,就需要用演算法處理大量的影象,處理影象的算力要求很高。

TOF 之所以抗光性最好,是因為它可以透過增加 TOF 感測器下面光源的強度,來讓它與太陽光之間形成很高的對比度,使得每一幀畫面都能和陽光區分開。但其他兩種深度感測器的光照強度不足,難以獲取高對比度影象。

但是,雙目方案或結構光方案在陽光下的光強沒辦法達到這麼高,也不是瞬時的結構光資訊,所以沒辦法在強光下識別。如果用手機攝像頭來對準強光,基本上全都過度曝光。

之前講到,三角測量原理沒辦法把模組做小。所以,測量的距離越大,雙目和結構光方案的攝像頭之間基線就要越大;基線越大,感測器就會越大。

但是 TOF 不存在這個問題。TOF 的攝像頭緊挨著一個光源,形成 TOF 的模組,因為它的測量原理不要求光源和攝像機之間的距離加大。

大家可以想象一下 TOF 在和光的速度做賽跑,那麼它的 CCD 接收影象的速率,即幀率是非常高的。目前最大的 TOF 感測器可量產化的只能做到 VGA 解析度,目前的生產水平還不能做更大規模的。

iPhone這樣做人臉識別:揭秘3D深度感測器