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