唐娟娟, 張正平, 周 驊, 趙 麒
(貴州大學大數據與信息工程學院,貴陽 550000)
基于結構光的三維重建技術憑借其高準確度、低成本、高穩定性、易操作等特性成為目前應用最廣的三維重建技術[1]。編碼結構光方法常用的有單目結構光和雙目結構光[2]兩種方法,二者均基于三角測量原理,它們在系統的標定上有所不用,雙目結構光[3]需要先對兩個相機單獨標定再進行聯合標定,不需要對投影儀進行標定,在提取相位信息后需要進行相位匹配[4-5]。單目系統是通過單相機和投影儀建立三角關系[6],不僅需要對相機進行標定且需要對投影儀進行標定,投影儀無法像相機那樣獲取圖像信息,這也是投影儀標定的難點所在,由于單目系統標定中無需進行雙目的相位匹配,在獲取相位信息后可通過標定獲得的系統參數直接轉換得到三維坐標信息,更能滿足高速率的需求。
單目結構光中相機標定已經趨于成熟,以張正友相機標定法為代表。在Matlab中已有對應的工具箱,使相機的標定實現簡單易操作且具有較高的準確度和穩定性[7]。為解決投影儀的標定[8],目前已有以下方法:
(1)基于平面的投影圖案法。該方法本質上是基于二維投影點和其三維的對應關系,通過將投影儀視為2D圖像強度映射為3D射線的反向相機,使投影儀的校準與相機的校準相同,該投影儀標定方法的準確度依賴于事先標定好的相機準確度。文獻[9-11]中本質上與投影棋盤格圖案原理相同,均是基于二維投影變換理論,建立二維相機圖像像素坐標和三維投影儀坐標的對應關系。這種方法在實現上較為簡單,但是標定的準確度較低,以至于影響最終三維重建的準確度。
(2)經典相位法。通過求解相位信息,基于相位和高度的關系求解三維高度信息,這種方法需要輔助硬件設備讓相機投影儀處于一種嚴格的位置關系:攝像機光心與投影中心位于同一直線且平行于參考平面,攝像機光軸要與投影儀的光軸相交于一點,此點要位于參考面上,攝像機Y軸要與投影的光柵條紋保持平行[12]。此種方法雖無需進行標定,在具體應用中難以實現,攝像機和投影儀的光心以及光軸為虛擬的,難以確定,此外,在實現三維測量時難以將工作面調整至參考平面,這些都要求復雜且昂貴的精密設備支持。
(3)新型標定法。為解決傳統光柵投影模型的嚴格位置約束條件,眾多研究學者對此進行了一系列的改進研究。已有一些方法放寬了相機、投影儀光心連線平行于參考平面的要求,此類方法仍然存在位置約束,如相機光軸與投影儀Y軸的平行要求以及二者光心需相交于參考平面一點。
本文研究了基于編碼結構光中的相位測量輪廓術(Phase-Measuring Profilometry,PMP)的三維重建。采用整體建模的一種方法,此方法完全沒有系統的位置約束,通過多項式將投影儀參數擬合到8個未知參數中,無須再進行復雜費時的投影儀標定,能夠保持很好的穩定性及準確度。這種方法在文獻[13]中由蓋紹彥、達飛鵬首先提出,文獻中已對其原理進行了詳細的推理說明,難點在于其復雜的數學計算,以及多項式的擬合,本文將這種標定技術完全移植到Matlab平臺,運用其高效的數值計算[14]和矩陣運算功能,實現高效簡單明了的系統標定。通過得到的標定參數,在Matlab實現物體的三維重建,結果表明,三維重建效果好,并有較高的準確度。
相機獲取物體圖像,實質為物體三維坐標到像素坐標的轉換,經歷了4步坐標系的轉換,轉換過程如圖1所示。三維重建的實質是通過相機和投影儀實現圖像二維坐標到物體三維實際坐標,也就是相機成像的逆過程。從世界坐標到相機坐標的變換為剛性變換,其中包含物體相對相機坐標系的位置關系,也就是對相機標定所要求的外部參數R矩陣和T矩陣,R為物體和相機的旋轉關系,T則包含了平移關系。相機內部參數則與相機和物體的相對位置無關,只和相機本身制作有關,一般將相機內部參數整合起來稱為一內參矩陣
式中:fx、fy分別為在圖像像素坐標在u軸和v軸方向的焦距;u0和v0為原點在圖像像素坐標下的坐標。相機由于其鏡頭等構成,無可避免的存在著一些畸變,一般分為徑向畸變和切向畸變,本實驗采用的工具箱忽略切向畸變,默認為0。
綜上,相機標定即對其內外參數的求解。根據張正友相機標定法,打印制作棋盤格標定板,對棋盤格標定板進行平移、旋轉等變換并進行拍攝。使用Matlab配置的工具箱(Camera Calibrator),在APP內找到Camera Calibrator并打開,添加采集到的不同位姿下的棋盤格圖片,輸入棋盤格實際尺寸。本次實驗制作的棋盤格標定板的棋盤格尺寸為1 cm,圖片全部導入之后,點擊Calibrate,即可得到相機內參矩陣
標定板和相機的相對位姿關系,如圖2所示。
根據位姿圖片的重投影誤差,選擇誤差較大的圖片點擊刪除,經過篩選之后,本次標定圖片為30張,重投影誤差的總平均誤差為0.33像素,如圖3所示,標定完成后選擇Export Camera Parameters導出標定結果,存儲為camera Params.mat文件,可用于后續調用。
根據達飛鵬等[1]的新型相位法系統模型,主要包含了相機坐標系、被測物的相位信息以及世界坐標系的關系。這種新型模型對相機、投影儀、被測物體不再有嚴格的位置約束。論文中對物體的像素坐標以及相位信息,例如點P(m,n,θ)同其在相機坐標系中的三維坐標(Xc,Yc,Zc)的轉換關系做了詳細推導,再用相機坐標系中的該點三維坐標(Xc,Yc,Zc)求出該點的世界坐標:
?松村俊夫:《南京大屠殺大疑問》,趙博源等譯,新華出版社2001年版,第111~116、130~132、135~139頁。
式中,ρ為比例因子ρ=Zc。而內參矩陣A、旋轉矩陣R、平移矩陣T已經由Matlab工具箱得到,基于多項式擬合的結構光系統標定其實就是對關系式中的8個參數a1~a8的求解。將式(1)變形如下:
由式(4)可知,將系統標定轉化為求解方程的問題,該方程中由8個未知參數,需要8個及以上的線性獨立方程,即需要多個樣本點(Xc,Yc,Zc,θ),代入方程中,通過求解方程組來求得a1~a88個參數。在采集樣本點時需要注意,樣本點不可全部位于同一平面,因為方程組需要保持互相獨立,才有解,至少需要采集兩個位姿及以上的樣本點。其中樣本點的相位信息θ通過5步相移法獲得,像素坐標(m,n)可通過調用Matlab函數detect Checker board Points來獲得采集棋盤格圖片角點的像素坐標。標定時標定板上的棋盤格坐標的二維坐標易得,設標定板上點Q坐標為(a,b),建立Z軸垂直于標定板平面的世界坐標系Ω0,因此該坐標系下點Q坐標為(a,b,0),根據式(3),點Q在相機坐標系如下式所示:
結合旋轉矩陣特征,由式(2)和式(5)推導得相點坐標即像素坐標求解該點相機坐標系坐標:
由式(6)可知,通過此對應關系求解標定板上點對應相機坐標系下的坐標(Xc,Yc,Zc)。將多個樣本點代入式(4),可得
多項式擬合的結構光系統標定具體步驟如下:
步驟1選取相機標定用到的30個位姿中的10個位姿,通過Matlab批量處理圖片,提取角點坐標并保存,選取每張圖片中的4個角點,根據式(5)調用相機標定結果參數,得到40個樣本點在相機坐標系下的坐標(Xc,Yc,Zc),并進行存儲(見表1)。

表1 標定時所用的R、T、G
步驟2硬件設備由微視傳感MEMS編碼結構光的投射模組、500萬像素的USB工業相機(搭載850 nm窄7帶濾光片)、計算機組成,如圖4所示。將正弦條紋圖樣投影在棋盤格標定板上,采用5步相移的方法,使用Matlab控制模組投影以及相機抓取圖片,完成圖片采集和處理,對灰度光柵調制圖進行高斯降噪,再對展開相位圖進行中值濾波,使得被測物特征點提取更準確,相位展開更平整,噪點更低。獲得每一位姿圖片采樣點的相位信息并進行存儲。
算法流程如圖5所示。
采用編碼結構光方法,通過控制投影模組向物體表明投射正弦條紋,投射的條紋由于受到物體表面的調制,存儲物體的三維結構信息。投影后,使用相機捕捉調制后的條紋圖案,對采集的圖片進行提取灰度圖、高斯降噪、中值濾波等處理,根據三角測量法即可得到被測物體的三維坐標信息。
得到a1~a88個參數后,攝像機拍攝被測物體,得到其像素坐標,通過投影儀采用5步相移法求取被測物體上各點的相位信息并進行保存。由式(1)、(2)可知,由所得參數a1~a8以及相位信息求得各點在相機坐標系下坐標(Xc,Yc,Zc),在求各點相機坐標系時,將式(1)、(2)變換成矩陣形式:
由式(3)可知,結合該位姿下的旋轉矩陣和平移矩陣得到各點的世界坐標(X,Y,Z)。實驗結果分別用經典法相位模型和新型相位法模型在Matlab上實現不同物體的三維點云可視化。圖6為經典法相位模型下重建出的羽毛球,可見,整體重建結果與實際物體相比失真較大。圖7為采用新型相位法模型重建出的羽毛球,經對比可知,該方法下的羽毛球重建效果較好。表2中為對不同物體在2種方法下的測量結果及相對誤差對比,可見,基于該模型的8參數標定法能夠減小誤差,得到比較好的三維重建效果。

表2 三維測量實際值與測量值
經過對多種物體進行重建,結果表明,新型相位法重建準確度高、速率快。利用Matlab的高效數學計算功能和其便捷的工具箱,只需進行一次系統標定,即可對不同物體進行三維重建,簡化了系統標定,對物體的相對位置不再有嚴格要求,提高了三維重建的速率和準確度。后續可從以下方面進一步提高三維重建的準確度:
(1)實驗過程中,棋盤格標定板為打印制作,應注意為一個平面。標定板的準確度直接影響最后結果準確度,可購買精密制作的標定板,目前市場上已有多種標定板可以供選擇,且價格適宜,提高標定板準確度可作為一種較為簡單的提高結果準確度的方法。
(2)相機采集到的圖片有一定的失真,可采取圖像處理的方法,利用標定得到的參數對其進行圖像去畸變,以提高結果準確度。
(3)實驗中發現,使用Matlab自動控制5步相移圖片的采集與手動控制圖片采集相比,雖然提高了采集速率且操作簡單,但是容易出現誤差影響結果準確度,可通過控制Matlab采集間隔來減小誤差。