深度相機原理揭祕之3D結構光Sensor(iPhone X、小米8探索版、OPPO Find)

深度相機原理揭祕之3D結構光Sensor(iPhone X、小米8探索版、OPPO Find)

轉自:https://blog.csdn.net/electech6/article/details/78707839

結構光法:為解決雙目匹配問題而生

深度圖效果:結構光vs.雙目

投射圖案的編碼方式

    直接編碼

    分時多工編碼

    空間多工編碼

Kinect1原理

iPhone X原深感相機是縮小版的更強大的Kinect1

結構光法優缺點總結

——————————————————————

結構光法:為解決雙目匹配問題而生

前面文章《深度相機原理揭祕–雙目立體視覺》中提到基於雙目立體視覺的深度相機對環境光照強度比較敏感,且比較依賴影象本身的特徵,因此在光照不足、缺乏紋理等情況下很難提取到有效魯棒的特徵,從而導致匹配誤差增大甚至匹配失敗。

而基於結構光法的深度相機就是為了解決上述雙目匹配演算法的複雜度和魯棒性問題而提出的,其他處理步驟和雙目立體視覺類似,本文不再贅述。結構光法不依賴於物體本身的顏色和紋理,採用了主動投影已知圖案的方法來實現快速魯棒的匹配特徵點,能夠達到較高的精度,也大大擴充套件了適用範圍。

結構光深度相機原理示意圖(注意E端發射的帶圖案的光源)

深度圖效果:結構光vs.雙目

下圖左是普通雙目立體視覺深度相機拍攝的影象和對應的深度圖結果;下圖右是結構光法的深度相機投射的圖案及對應的深度圖結果,明顯可以觀察到在同樣的場景下結構光法得到的深度圖更完整,細節更豐富,效果大大好於雙目立體視覺法。

雙目立體視覺(左)和結構光(右)深度相機拍攝的影象和對應的深度圖

投射圖案的編碼方式

結構光法投射的圖案需要進行精心設計和編碼,結構光編碼的方式有很多種,一般分為如下幾大類:

1、直接編碼(direct coding)

根據影象灰度或者顏色資訊編碼,需要很寬的光譜範圍。

優勢:對所有點都進行了編碼,理論上可以達到較高的解析度。

缺點:受環境噪音影響較大,測量精度較差。

直接編碼原理示意圖

2、分時多工編碼(time multiplexing coding)

顧名思義,該技術方案需要投影N個連續序列的不同編碼光,接收端根據接收到N個連續的序列影象來每個識別每個編碼點。投射的編碼光有二進位制碼(最常用)、N進位制碼、灰度 相移等方案。

該方案的優點:測量精度很高(最高可達微米級);可得到較高解析度深度圖(因為有大量的3D投影點);受物體本身顏色影響很小(採用二進位制編碼)。

缺點:比較適合靜態場景,不適用於動態場景;計算量較大(因為識別一個編碼點需要計算連續N次投影)。

分時多工編碼原理示意圖

3、空間多工編碼(spatial multiplexing coding

根據周圍鄰域內的一個視窗內所有的點的分佈來識別編碼。

該技術的優勢:適用於運動物體。

缺點:不連續的物體表面可能產生錯誤的視窗解碼(因為遮擋)。

空間多工編碼原理示意圖

Kinect1原理

業界比較有名的結構光方案就是以色列PrimeSense公司的Light Coding的技術,該方案最早被應用於Microsoft的明星產品Kinect1(Kinect2是基於TOF的技術)上。下面以Kinect1為例,介紹一下其工作原理。

Microsoft和PrimeSense合作的Kinect1

Kinect1的紅外IR發射端投射人眼不可見的偽隨機散斑紅外光點到物體上,每個偽隨機散斑光點和它周圍視窗內的點集在空間分佈中的每個位置都是唯一且已知的。這是因為Kinect1的儲存器中已經預儲存了所有的資料。

Kinect1投影的偽隨機散斑

這些散斑投影在被觀察物體上的大小和形狀根據物體和相機的距離和方向而不同。如下圖所示。

Kinect1根據三種不同的距離使用了三種不同尺寸的散斑,如下圖所示。這樣的目的是為了在遠中近三種距離內都能得到相對較好的測量精度:

近距離(0.8 – 1.2 m):可以獲得較高的測量精度

中距離(1.2 – 2.0 m):可以獲得中等的測量精度

遠距離(2.0 – 3.5 m):可以獲得較低的測量精度

Kinect1測量精度如下:

spatial x/y resolution: 3mm @2m distance

depth z resolution: 1cm @2m distance

iPhone X原深感相機是縮小版更強大的Kinect1

2013年11月蘋果公司以3.45億美元收購了PrimeSense公司。之後,蘋果一直在推動PrimeSense的深度相機向小型化發展。

2016年7月,蘋果公佈了新型3D手勢控制專利,是一個內嵌在類似手機的iOS裝置上的圖形投影儀,可以識別出使用者的手勢操作。

2017年9月,蘋果釋出了重磅產品iPhone X。其中攝像技術最大的創新就是使用了前置深度相機(蘋果稱之為Truedepth)。雖然蘋果沒有透露具體的技術細節,但是從官網介紹來看,投影3萬個不可見的紅外光點完全符合結構光方案(而不是TOF)的特徵。另外結構光方案和TOF方案相比,還具有功耗低,精度高的優勢。這對移動裝置做近距離的人臉識別來說,是極大的技術優勢。

點陣投影在人臉上的示意圖

(投影的是人眼不可見的紅外光,這裡只是示意圖)

iPhone X利用前置的原深感相機開發了一系列新奇有趣的玩法,比如FaceID、前置背景虛化、人像光效、動畫表情、clips等。可見iPhone X的結構光深度相機和Kinect1相比深度圖測量更加精細準確,效能有了質的飛躍。

iPhone X基於原深感相機開發的動畫表情功能

因此iPhone X的前置原深感相機可以認為是一個縮小版的功能更強的Kinect1。

結構光法優缺點總結

根據前面的原理介紹,我們總結一下基於結構光法深度相機的優缺點。

1、優點

1)、由於結構光主動投射編碼光,因而非常適合在光照不足(甚至無光)、缺乏紋理的場景使用。

2)、結構光投影圖案一般經過精心設計,所以在一定範圍內可以達到較高的測量精度。

3)、技術成熟,深度影象可以做到相對較高的解析度。

2、缺點

1)、室外環境基本不能使用。這是因為在室外容易受到強自然光影響,導致投射的編碼光被淹沒。增加投射光源的功率可以一定程度上緩解該問題,但是效果並不能讓人滿意。

2)、測量距離較近。物體距離相機越遠,物體上的投影圖案越大,精度也越差(想象一下手電筒照射遠處的情景),相對應的測量精度也越差。所以基於結構光的深度相機測量精度隨著距離的增大而大幅降低。因而,往往在近距離場景中應用較多。

3)、容易受到光滑平面反光的影響。

最後,給出幾種主流的結構光的深度相機及引數。

幾種結構光深度相機的引數