作者:書涵

Date:2020-01-31

結構光三維重建系統是由一個相機和一個投影儀組成,關於結構光三維重建系統的理論有很多,其中有一個簡單的模型是把投影儀看做相機來使用,從而得到物體的三維資訊。接下來我將詳細介紹這個模型的原理。

在把投影儀當相機使用之前,我們得知道如何透過兩個相機的資訊得到物體的三維資訊。

系列篇|結構光三維重建基本原理

如圖所示是一個雙目相機系統,如果只有一個相機(以左相機為例),相機上的一個畫素點可以對應三維空間中光心與相機成像點連線OLP上的無窮個點,所以僅憑一個相機的資訊是無法得到空間中物體的三維資訊。但是如果能有另一個相機(右相機),則物體的三維資訊可以唯一確定。因為離左相機不同距離的物體,在右相機上的成像位置是不同的,例如,圖中線OLP上的點,在右相機的成像位置為圖中紅線,如果能知道物體在左相機成像位置PL以及物體在右相機的成像位置PR的話,就可以唯一確定物體三維位置P。

熟悉雙目成像系統的小夥伴應該知道,要真正求解出物體的三維座標值,我們需要知道左右相機的內參矩陣KL和KR,以及左右相機之間的外參R,T。其中R是右相機座標系和左相機座標系之間的旋轉矩陣,T是右相機座標系和左相機座標系之間的平移矩陣。

下面我將推導已知三維空間中的物體在左右相機上的成像位置分別為PL(uL,vL)和PR(uR,vR)的情況下,如何解出物體的三維資訊P(X,Y,Z)。

由於世界座標系的原點可以是空間中的任意一點,為了使計算簡單,不妨讓其與左相機座標系的原點重合。則左相機的外參矩陣(左相機和世界座標系的轉換矩陣)

系列篇|結構光三維重建基本原理

系列篇|結構光三維重建基本原理

右相機的外參矩陣(右相機和世界座標系的轉換矩陣),

系列篇|結構光三維重建基本原理

根據相機模型我們可以得到如下方程等式:

系列篇|結構光三維重建基本原理

聯立上述方程組,方程組中有5個未知數,sL,sR,X,Y,Z,和六個方程。完全足夠解出5個未知數。對於雙目系統來說,最大的問題是怎麼找到左相機成像點(uL,vL)對應的右相機成像點(uR,vR),這個方法有很多,首先通常需要依據極線約束對左右相機影象做立體矯正,把對應點在影象中二維的搜尋放到一維(同一行)上,然後在根據各種代價計算找到準確匹配點,具體方法這裡就不詳述了。

知道如何透過左右相機得到物體的三維資訊後,我們來看怎麼把投影儀看做相機,或者說看做相機的逆。相機捕捉的是物體反射的光資訊,而投影儀是把光資訊投射到物體上。如果我們對投影儀投射的每個畫素點的光進行編碼,把編碼後的光投射到物體表面上,並透過對相機捕捉到的物體表面光資訊進行解碼,就可以知道打在物體表面的光是由投影儀那個像素髮出的,也就可以知道物體表面會在虛擬的投影儀影象上的成像位置。

投影光編碼的方式很多,通常的編碼是分別對投影圖片的行和列編碼,以格雷碼為例,常見的格雷碼編碼如下圖所示。

系列篇|結構光三維重建基本原理

列格雷碼示例

透過對相機圖片上拍攝的物體表面投射的列格雷碼光編碼及行格雷碼光編碼進行解碼,就可以知道物體在相機圖片上成像位置(uc,vc)及其對應的投影儀虛擬的成像位置(up,vp),則上述雙目方程可以改為:

系列篇|結構光三維重建基本原理

其中Kc和Kp分別代表的是相機和投影的內參,和雙目系統一樣,我們不妨假設世界座標系的原點與相機座標系重合,則

系列篇|結構光三維重建基本原理

,Rp=R,Tp=T,其中R,T分別為投影儀座標系對相機座標系的旋轉和平移矩陣。

在上述方程中,一共有五個未知數sc,sp,X,Y,Z,和六個方程。實際上,六個方程可以解六個未知數,即使我們只需要知道知道up和vp中的一個,這也是為什麼在結構光三維重建時我們通常只需要投一個方向的條紋(橫條紋或者豎條紋)的原因。

透過上述方程,我們可以解出物體的三維資訊,以投影列格雷碼(獲得up)為例,物體的三維資訊的解法推導如下:

系列篇|結構光三維重建基本原理

則結構光三維成像系統物體的三維解為:

系列篇|結構光三維重建基本原理

自此,我們就把將投影儀看成的模型推導完畢,想要真正的完成物體的三維重建,我們還需要知道如何獲取相機和投影儀的標定引數,以及如何對投影光進行編碼和解碼,實際上除了格雷碼編碼外,還有很多常見光編碼方式,如相移法,格雷碼+相移法,多頻外差法等,每個編碼方法都有他們的優劣。今後我將對一一介紹以上內容。

本文的參考文獻是High-accuracy, high-speed 3D structured light imaging techniques and potential applications to intelligent robotics,這篇文章很詳細的介紹瞭如何透過結構光系統獲得物體的三維資訊。Ps:這篇文獻中給出的三維解有印刷錯誤,筆者在這篇文章中給出了正確解,感興趣的小夥伴也可以自己推導。

備註:

本文來自我們技術星球裡的一位小夥伴的知識分享,也歡迎更多小夥伴們的來稿,一起學習,相互成就~

上述內容,如有侵犯版權,請聯絡作者,會自行刪文。

重磅!3DCVer-學術交流群已成立

歡迎加入我們公眾號讀者群一起和同行交流,目前有

3D視覺

CV&深度學習

SLAM

三維重建

點雲後處理

自動駕駛、CV入門、醫療影像、缺陷檢測、行人重識別、目標跟蹤、視覺產品落地、視覺競賽、車牌識別

等微信群,請掃描下面微訊號加群,備註:”研究方向+學校/公司+暱稱“,例如:”3D視覺 + 上海交大 + 靜靜“。請按照格式備註,否則不予透過。新增成功後會根據研究方向邀請進去相關微信群。

原創投稿

也請聯絡。

系列篇|結構光三維重建基本原理

▲長按加群或投稿

系列篇|結構光三維重建基本原理

圈裡有高質量教程資料、可答疑解惑、助你高效解決問題