技術干貨 | 結構光技術及其實現(xiàn)三維成像的主要原理
原創(chuàng) | 文 BFT機器人

3D表面成像的一種主要方法是基于“結構光”的使用
即使用專門設計的二維空間變化強度模式對場景進行主動照明
3D結構光的整個系統(tǒng)包含結構光投影設備、攝像機、圖像采集和處理系統(tǒng)。其過程就是投影設備發(fā)射光線到被測物體上,攝像機拍攝在被測物體上形成的三維光圖形,拍攝圖像經采集處理系統(tǒng)處理后獲得被測物體表面數(shù)據(jù)。
在這個系統(tǒng)中,當相機和投影設備相對位置一定時,投射在被測物體上的光線畸變程度取決于物體表面的深度,所以在拍攝圖像中可以得到一張擁有深度的光線圖像。
3D結構光的根本就是通過光學手段獲取被拍攝物體的三維結構,再通過這一信息進行更深度的應用。
01
結構光技術
我們周圍的物理世界是三維的,然而,傳統(tǒng)的相機和成像傳感器只能獲取缺乏深度信息的二維圖像。
這一基本限制極大地限制了我們感知和理解現(xiàn)實世界物體復雜性的能力。在過去的幾十年里,由于各種細分市場的應用需求、高分辨率和高速電子成像傳感器的進步以及不斷提高的計算能力的推動,3D表面成像技術的研究、開發(fā)和商業(yè)化取得了巨大進步。
3D表面成像的一種主要方法是基于“結構光”的使用,即使用專門設計的二維空間變化強度模式對場景進行主動照明。如圖1所示,一個空間變化的二維結構照明是由一個特殊的投影儀或由空間光調制器調制的光源產生的。結構光模式上每個像素的強度用數(shù)字信號,

其中(i, j)表示投影圖形的(x, y)坐標。
本文討論的結構光投影模式是二維模式。?

圖1?結構光示例
成像傳感器(如攝像機)用于在結構光照明下獲取場景的二維圖像。
如果場景是一個沒有任何三維表面變化的平面,則獲取的圖像顯示的模式與投影的結構光模式相似。然而,當場景中的表面是非平面時,表面的幾何形狀會扭曲從相機看到的投影結構光模式。結構光三維曲面成像技術的原理是根據(jù)結構光投影變形信息提取三維曲面形狀。利用各種結構光原理和算法,可以精確地計算出場景中物體的三維表面輪廓。
如圖1所示,成像傳感器、結構光投影儀和物體表面點之間的幾何關系可以用三角剖分原理表示為:?

目前有許多結構光表面成像技術可用。將所有技術分為順序(多鏡頭)或單鏡頭類別,如圖2所示,這可以被視為該技術的路線圖。如果目標3D物體是靜態(tài)的,并且應用程序對采集時間沒有嚴格的限制,則可以使用多鏡頭技術,并且通常會產生更可靠和準確的結果。
然而,如果目標是移動的,則必須使用單鏡頭技術來獲取特定時間實例的三維物體的快照三維表面圖像。
?

圖2 結構光表面三維成像技術分類框架
02
二進制編碼與格雷碼編碼
?二進制編碼采用黑白相間的條紋形成一系列的投影模式,使得物體表面的每個點具有一種獨特的二進制碼,區(qū)別于其他任何不同點的碼。一般來說,N個圖案可以編碼2N條條紋。圖4顯示了一個簡化的5位投影模式。一旦這個圖案序列被投射到一個靜態(tài)場景中,就會有32(2的五次方)個用獨特條紋編碼的獨特區(qū)域。
沿每條水平線計算所有32個點的三維坐標(x, y, z)(基于三角剖分原理),從而形成一個完整的3D圖像幀。
二進制編碼技術是非常可靠的,對表面特征不太敏感,因為只有二進制值存在于所有像素。然而,為了實現(xiàn)高空間分辨率,需要對大量的序列模式進行投影。場景中的所有對象必須保持靜態(tài)。3D圖像采集的整個持續(xù)時間可能比實際的3D應用程序所允許的更長。

圖3?用于三維成像的二值編碼投影? ??
? 為了有效地減少獲得高分辨率三維圖像所需的圖案數(shù)量,開發(fā)了灰度級圖案。例如,可以使用M個不同的強度級別(而不是二進制代碼中的兩個級別)來生成投影模式的唯一編碼。
在這種情況下,N個圖案可以編碼M的N次方條。每個條紋碼可以可視化為基于n的空間中的個點,每個維度有M個不同的值。例如,N = 3, M =4,則唯一碼條的總數(shù)為64(4的3次方)。
相比之下,對于64條帶二進制碼的條紋,需要6個圖案。在二進制和灰色編碼模式的設計中存在優(yōu)化問題。目標是最大化所有唯一碼字之間的某種類型的距離度量。對于實際的3D成像應用,要能夠區(qū)分相鄰條紋很重要。
相移是一種眾所周知的用于三維表面成像的條紋投影方法。一組正弦圖案被投影到物體表面。三個投影條紋圖案的每個像素(x, y)的強度描述為:

其中I1(x,y), I2(x,y), I3(x,y)是三種條紋的強度,I0(x,y)是直流分量(背景), Imod(x,y)是調制信號幅度,φ(x,y)是相移,θ是恒定相移角。

圖4 相移與三個投影條紋
從三種條紋的強度來看:

通過在φ0(x, y)值上加減2π的倍數(shù),可以消除弧切函數(shù)在2π處的不連續(xù)。
根據(jù)測量相位φ(x, y)與參考平面的相位值之差,可以計算出三維(x, y, z)坐標。


圖5 根據(jù)相位值計算Z深度
灰度碼確定了相位的絕對范圍,沒有任何歧義,而相移提供的亞像素分辨率超出了灰度碼所提供的條紋數(shù)。然而,混合方法需要更多的投影,但不適合動態(tài)對象的3D成像。
更多精彩內容請關注公眾號:BFT機器人
本文為原創(chuàng)文章,版權歸BFT機器人所有,如需轉載請與我們聯(lián)系。若您對該文章內容有任何疑問,請與我們聯(lián)系,將及時回應。