翟杭軍王 凌王斌銳高雁鳳陳錫愛
(中國計量大學機電工程學院,浙江 杭州310018)
結構光系統是獲取物體表面三維數據的有效工具,一般由固定機架、數字投影儀和相機組成,易于開發和使用。結構光三維測量系統采集的物體表面點云存在誤差,其原因包括相機成像畸變、相機位姿參數(外參)誤差、投影儀的投影圖像畸變、三維重建算法缺陷等。通過構建和應用誤差補償模型[1-2]可以對上述結構光系統測量誤差進行部分補償。
目前,像素點提取和特征點匹配算法方面已經有較多研究成果,而相機內部結構設計及相機標定等方面還有較大提升空間。Daniel和Gabrie[3]認為許多已有的相機校準技術都使用了簡化的模型,忽略了透鏡變形,導致成像精度較低,并且提出了一種新的投影圖像平面中三維點的圖像坐標估計方法,以及基于相機模型描述投影儀成像畸變。崔海華等[4]提出了一種基于六步相移法的伽馬射線畸變模型,消除了使用現有投影儀進行條紋投影技術帶來的非線性誤差。這類針對投影儀投影條紋的優化方法,國內外也有一些學者發表了部分研究成果[5-6]。陳東岳等[7]提出了一種新型全向環形結構光圖案,簡化了圖像特征點的提取,可以快速完成場景定位。達飛鵬等[8]針對條紋投影輪廓術(FPP)系統中存在的局部模糊問題,提出了一種靈活的誤差校正方法來處理相機離焦引起的相位誤差。關旭等[9]采用了矢量正交歸一化目標的雙目主動視覺,使得重建后目標輪廓測量的距離誤差減少25%,角度誤差減少23%。Sert[10]提出了一種具有自動閾值的三步相移標定系統,該標定系統包括相機標定、投影儀標定和深度標定,降低了相機和投影儀鏡頭的誤差。Ye和Zhan[11]提出了一種基于結構光系統的標定參數優化算法,通過最小化標記點之間的距離、夾角和參考平面的平面度等三維測量誤差求解最優函數,提高了三維重建精度。然而,這些方法中系統基于誤差模型進行了標定并不一定意味著可以完全消除系統誤差,實際中可能存在誤差補償錯誤或補償后誤差放大等情況。因此,有必要對結構光系統進行誤差分析和性能評測,從而評估結構光系統誤差補償效果或對其三維測量掃描性能進行評測。
對于結構光系統性能評測或評價方法的研究,近年來也有少數學者發表了研究成果。Br?uer-Burchardt等[12]提出一種基于結構光投影的三維掃描儀性能評測方法,其中掃描標靶是一個金字塔形的截錐,但該方法測試流程的工作量仍然很大。而作為開展3D掃描儀性能評測的國際標準之一,德國VDI/VDE 2634系列標準包含了針對基于區域掃描的光學系統的性能評測標準,規定使用帶有兩個靶球的球棒來開展3D掃描儀的誤差分析和性能評測工作,該球棒尺寸已預先標定,并在測量體積內分別處于至少十個任意的并盡可能均勻的位置采樣的特征量包括球棒兩端靶球的球心距離(球間距離),用于驗證測量系統的長度測量能力,并確保了在標準VDI/VDE 2617中長度測量誤差的可追溯性。此外國際標準ISO 10360-13也規定了光學三維坐標測量系統的性能評測驗收方法,其中也推薦使用已標定的球棒。
結構光系統的性能評測方法一般涉及的工作量較大,而且經常受硬件上的物理性質影響。如果可以對系統性能評測實驗進行仿真分析,那么不僅可以有效降低其性能評測方法設計的工作量,也能夠提前發現方法中存在的問題,為系統誤差評測分析提供理論基礎和開發支持。Liang[13]提出了一種基于單目結構光三維測量仿真系統,并且討論了部分系統參數對測量結果的影響和參數修正的問題。陳迎春[14]提出一種新的光柵條紋投影輪廓術仿真系統,使仿真系統不再要求投影儀光軸和照相機光軸相交于一點。近年來,也有部分學者通過對結構光系統的仿真解決了一些難題[15-18],如以往的投影儀和相機要求有嚴格位置關系以及傳統的光線追蹤法遇到的數值運算問題等。然而,針對雙目結構光系統進行仿真分析的研究成果未見報道。
本文在構建基于三步移相法的雙目結構光系統數學仿真模型基礎上,實現了對靶球的點云重建仿真;然后針對雙目結構光系統模型誤差對處于不同高度的參考平面時靶球中心位置誤差進行靈敏度仿真分析,研究了該試驗對靶球處于不同位置時的靶球特征量誤差靈敏度,然后分析了現有標準中的結構光系統性能評測方法存在的不足,并提出測試方法改進措施。
為了分析雙目結構光系統測量誤差的影響因素,首先對此類系統的坐標系給予定義,如圖1所示。

圖1 視覺測量系統坐標系定義
圖像物理坐標系O-XY:左相機圖像物理坐標系為OL-XL YL,右相機圖像物理坐標系為OR-XR YR;OL、OR分別為左、右相機的光軸與圖像像素坐標系平面中心的交點。
圖像像素坐標系O-uv:右相機圖像像素坐標系記為OR1-uR vR,uR、vR軸分別與XR、YR平行;同理,左相機圖像像素坐標系記為OL1-uL vL,uL、vL軸分別與XL、YL平行,OR在像素坐標系中的坐標為(uR0,vR0)。
相機坐標系O-xyz:以左相機光心O1為原點,光軸為z1軸,建立左相機坐標系為O1-x1y1z1;同理,建立右相機坐標系為O2-x2y2z2。光軸與圖像平面垂直,x1、y1分別與圖像坐標系的XL、YL軸平行,x2,y2分別與圖像坐標系的XR、YR軸平行。
世界坐標系O-Xw Yw Zw:即物體在真實世界中的坐標,是外部的一個固定的參考坐標系,不隨著物體的大小以及位置變化,用于描述相機與目標物體的位置關系。
投影儀坐標系P-Xp Yp Zp:在結構光系統中,以投影機的光心P為原點,建立投影儀坐標系PXp Yp Zp,其中所有的y軸方向都垂直紙面向里,如圖2所示。

圖2 雙目結構光系統坐標系之間的幾何關系
確定坐標系的定義以及位置關系后可以發現,結構光系統三維掃描中的成像過程的實質上是幾個坐標系的轉換。首先空間中的一點由世界坐標系轉換到相機坐標系,然后再將其投影到圖像物理坐標系,最后再將圖像物理坐標系上的數據轉換到圖像像素坐標系。
但是上述得到的相機圖像都是受到相機鏡頭畸變影響的圖像。如果要降低圖像畸變,,需要對圖像進行畸變矯正。相機成像畸變可以分為徑向畸變和切向畸變。假定圖像像素坐標系OR1-uR vR下的畸變前的坐標為(u,v),經過徑向畸變和切向畸變后該坐標在OR1-uR vR坐標系 的(ud,vd)上,即未畸變的圖像A1與畸變后的圖像A′1之間的關系為:A1(u,v)=A′1(ud,vd)。其中,徑向畸變數學模型為:

r2=x2+y2,k1,k2,k3為徑向畸變系數。
切向畸變數學模型為:

式中:p1,p2為切向畸變系數。
得到相機畸變模型后,即可對圖像進行畸變矯正。已知像素值在圖像像素坐標系OR1-uR vR中的理想位置坐標:

式中:(x,y,z)為相機坐標系下的坐標點,(x′,y′)是歸一化之后的坐標。其中,f1,f2,cx,cy分別為左右相機的焦距以及圖像物理坐標系的原點相對于光心成像點的縱橫偏移量。
像素值在圖像像素坐標系OR1-uR vR中的畸變位置坐標:

式中:k1,k2為徑向畸變系數,p1,p2為切向畸變系數,其中r2=x′2+y′2。因為畸變圖像的像素坐標(ud,vd)是已知的,那么未畸變的圖像像素坐標(u,v)可以根據式(5)~式(8)求解。
理論上可以通過A1(u,v)=A′1(ud,vd)映射關系可以將他們各個像素坐標點一一對應起來。但是,畸變的像素坐標往往不是整數,所以還需要通過雙線性內插法[19]來進行求解。該插值計算以及相機畸變模型準確度問題,都會使得畸變矯正后的圖像不可能是完全真實的圖像。
基于相機畸變矯正得到的圖像,對其每個像素點坐標進行相位解包裹。基于三步相移法[20]的結構光技術是相移法中測量效率最高的。三步相移法中常用的相位變化量為π/2或2π/3,其中計算公式為:

式中:n=1,2,3,采用的相移增量通常是Δφ=2π/3,則Δφ1=-2π/3,Δφ2=0和Δφ3=2π/3,In(x,y)為相位圖的灰度值,α(x,y)為環境光強,β(x,y)為條紋光強的調制強度。那么,該方法對應的相位求解表達式分別為[21]:

該方法使用反正切法解出的相位在區間(-π,π],只能在該區間內連續,超出該區間就會出現每隔2π的周期會有一個間斷點的情況。運用相位解包裹算法可以解決這種問題,該算法在每個2π的間斷點上,在相位的鄰域判斷是否可以加或減一個2π[22]。則相位解包裹算法可表示為:

式中:k為整數,φ(x,y)稱為包裹相位,而經過相位解包裹之后的φ1(x,y)在區間內是連續且單調。此時,φ1(x,y)稱為絕對相位。
在得到物體表面的解包裹相位圖之后,可以知道圖像上每個像素坐標點對應的相位值,然后對其進行左右圖像的特征點匹配,即每對匹配點判斷像素坐標和相位值是否一致,最后實現物體表面點云的三維重建。
物體表面一點在相機中的成像模型可以簡化為針孔成像模型,根據相機畸變模型得到每個圖像像素坐標點,再通過圖像物理坐標系與圖像像素坐標系之間的轉化關系,得出每個像素點在圖像物理坐標系上的坐標點。假設一個像素物理尺寸的長和寬分別為dx,dy,圖像像素坐標系的像素點為(u,v,1)T,對應的圖像物理坐標系的點為(xp,yp,1)T,則:

由此,可以根據以上公式推出圖像物理坐標系上的坐標值。
雙目結構光系統的三維點云坐標計算原理與雙目視覺系統類似。圖3是雙目視覺成像原理圖,相機坐標系的原點在相機的光心處,左右相機光心之間的基線距離為b。成像平面距離相機鏡頭的光心f處,圖像物理坐標系的原點在相機光軸與成像平面的交點處,A1(xp1,yp1)和A2(xp2,yp2)分別為點A(x,y,z)在左右圖像物理坐標系上的坐標。
圖3中,A1到A2的距離為:

若兩相機的圖像像素坐標系在同一平面上,則yp1=yp2=yp,根據光學三角法建立線性方程組[23]可得:

因此,可計算出A(x,y,z)在左相機坐標系下的坐標值:

得到該點在相機坐標系上的坐標,最后通過相機坐標系與世界坐標系的旋轉平移變換就可以確定實際的三維坐標。旋轉矩陣和平移矩陣可以對左右相機進行標定獲得。設A點在世界坐標系坐標記為(XW,YW,ZW),再根據針孔成像模型,可以得到世界坐標系和圖像像素坐標系之間的轉化關系:

在由一臺相機和一臺投影儀組成的結構光系統(SLS)中,實現三維重建必須使用投影儀的模型參數。然而,另外一種常見的結構光系統包含兩臺相機和一臺投影儀,即雙目結構光系統。在雙目結構光系統中,物體三維重建時可以認為與投影儀模型參數無關。由于其中左右圖像的特征點映射是基于三步相移法給出的展開相位完成的,在使用兩臺相機和一臺投影儀的結構光系統中,只有兩臺相機拍攝的重疊成像區域可以用于重建。
本論文采用基于MATLAB軟件平臺對雙目結構光系統進行仿真,其仿真步驟設計如圖4所示,說明如下。

圖4 SLS仿真系統流程圖
①設置內外參數的初始值:包括理想狀態下兩個相機的內、外參數以及在相機標定過程中得到的帶有誤差的左右相機內外參數;此外還包括圖像點云的分辨率,結構光系統的初始參數(如結構光的相移值)等。
②生成掃描物體表面點的三維坐標:以相機的坐標系原點為參考點,物體表面的三維點的xyz坐標分別存儲在三個經過初始化的矩陣中。參考坐標系原點在相機鏡頭上,就是相機坐標系作為參考坐標系。默認的坐標數據都是基于這個參考坐標系,而被掃描物體在這個參考坐標系的正下方。該物體是一個平面上的若干個半球組成。這個平面和左相機坐標系的xy軸形成的平面平行。描述被掃描物體需要三個特征量,分別是物體平面所處的縱坐標、各球體中心坐標和球體的半徑。
③分別查找左右圖像的陰影點:對于物體平面上的點,我們找到球體和光線之間可能的交點的坐標。本文仿真實現中陰影區域的判別分兩部分來進行:一是物體表面上陰影區的判別,對于這種物體表面上陰影區域的判斷方法用向量法來判斷;二是參考平面上陰影區的判別,對于此種情況向量法己經不再適用,本文使用一種迭代搜索法。
④求出掃描物體各表面點的條紋圖像灰度值:如圖3所示,對應于被掃描物體表面A點,其在左右條紋圖像中的灰度值由參考平面上的C點位置和初始相位決定。條紋起點設計在x=xlen/2線上,其中xlen/2是被掃描物體在x軸方向的寬度。
⑤計算兩臺相機捕獲的條紋圖像的像素坐標:在上一步得到A點的灰度值后,我們使用兩個相機的理想針孔模型和畸變模型,導出左/右條紋圖像對應的非整數像素坐標(u′,v′)。(u′,v′)的灰度值即為A點的灰度值。然后,通過基于灰度(u′,v′)的二維插值計算,得到像素坐標為整數的兩個相機輸出的左右條紋圖像灰度。
⑥基于左右圖像灰度(u,v)和三步相移方法式(10)計算包裹相位,分別為ΦL1和ΦR1。
⑦改變初始相位后,再重復步驟④~⑥。然后,可以導出與三個初始相位對應的左右相機的所有三個包裹相位圖像。圖5為某次仿真的包裹相位圖像結果。

圖5 左/右相機包裹相位圖
⑧計算解包裹相位:本仿真中基于Goldstein分支切割法,利用步驟⑦的6幅包裹相位圖像,計算得到左右解包裹相位圖像,其解包裹相位實例如圖6所示。

圖6 左右相機解包裹相位圖像
⑨雙目極線校正和標定:對于左右未包裹的相位圖像,我們基于已知的旋轉/平移矩陣參數和具有誤差的相機畸變模型參數來實現極線校正和標定,所使用的極線校正方法是基于立體視覺系統的對極幾何的Bouguet算法。因此,可以給出極線校正和標定好的解包裹相位圖像。利用極線校正后的左右相機圖像,計算得到左右圖像匹配點。
⑩重建掃描物體三維點云坐標:基于左右相機的帶誤差的內、外參數,采用三角法重建掃描物體表面點的三維坐標。某次仿真中靶球重建之后的三維點云圖如圖7。

圖7 靶球陣列的三維點云仿真重建圖
根據VDI/VDE 2634系列標準所述,光學三維掃描系統性能評測的方法是測量標靶的某些特征量并且計算誤差,測試過程中至少需要改變標靶的十個任意位置,并且這些位置在整個測量空間上的分布盡可能均勻。標準中使用一種球心距已標定的球棒作為標靶。該球棒兩端包括直徑為50 mm的兩個精密氧化鋁陶瓷球。通過多次改變該球棒在三維空間中指定的位姿,完成結構光系統的性能評測。但是考慮該標準給出的光學三維掃描系統測試方法中應用到結構光系統時,目前缺乏針對這些測試方法輸出對結構光系統模型參數的誤差靈敏度分析研究成果,測試有效性缺乏理論分析依據。
在本文雙目結構光仿真系統中,通過結構光三維重建原理,對16個靶球進行點云重建。這些靶球半徑設置為20 mm,呈4×4排列,兩兩相鄰的球心距為80 mm,在參考平面上呈現的是16個半球體。由于實際中使用帶有誤差的結構光系統內、外參數進行三維重建,重建的靶球球心與理想中的位置是有偏差的,并且當靶球的平面處于不同高度位置時,測量造成的偏差也可能不同。
表1是結構光系統基線距離誤差為+1 mm時,每個放置在不同平面高度位置的靶球進行重建時統計得到的球心位置偏差。從表1中可以看出,在結構光系統對靶球陣列仿真重建中,當只改變z軸的高度,所測量得到的擬合球體中心誤差隨著參考平面高度的增加而增大,即距離相機越遠的靶球的球心位置誤差越大。從表1可知,通過改變13次參考平面的高度,得到仿真重建的16×13=208個靶球的球心位置誤差,大約分別是4 mm~7 mm左右。由此可見,靶球球心位置誤差對雙目結構光系統基線距離誤差具有較好的誤差靈敏度,但是在實際性能測試中并不容易評測得到這個位置誤差。

表1 基線距離誤差為+1 mm時結構光系統擬合球體中心位置誤差
本文討論的靶球特征量進一步包括靶球的球心距和靶球的半徑。首先對靶球的半徑進行仿真計算。
表2為結構光系統基線距離誤差為+1 mm時,每個放置在不同平面高度位置的靶球進行重建時統計出來的半徑誤差。通過分析表可以發現,靶球的半徑誤差對基線距離誤差的靈敏度很小。因此,靶球半徑對左右相機基線距離的誤差并不敏感,如果僅考慮雙目結構光系統的基線距離誤差,不建議將靶球半徑的測量加入到性能測試方法中。

表2 基線距離誤差為+1 mm時結構光系統擬合球體的半徑誤差
為了優化雙目結構光系統性能測試中球棒擺放的位姿,本文仿真實驗中進一步分析了靶球兩兩中心距對左右相機基線距離的誤差靈敏度,如圖8所示。從圖8中得出,當兩個靶球的中心坐標位置分別為(-120,-120,600)和(120,120,1200)時,球心距的誤差最大,達到約為4.349 mm,即誤差靈敏度為4.349。因此,靶球的球心距對左右相機基線距離的誤差敏感,球心距可以作為性能測試方法的輸出。表中標記為No.1的校準球棒的位姿最適合作為標準測試方法的參考。

圖8 結構光系統的球心距誤差分布圖
由上述仿真實驗可知,球心位置誤差和靶球球心距誤差都能夠較好的反應出雙目結構光系統模型的基線距離誤差,而靶球半徑誤差無法有效反應基線距離誤差。在僅考慮基線距離誤差情況下,靶球球心距對左右相機基線距離的誤差靈敏度大小與xyz軸方向呈正相關。
由于國內外缺少針對雙目結構光系統進行仿真分析的研究,本文構建了一種雙目結構光系統的仿真方法。基于仿真實驗,完成了球心位置誤差、靶球半徑誤差、靶球球心距誤差對于基線距離誤差的靈敏度仿真分析。再通過實驗仿真得出,球心位置誤差和靶球球心距誤差兩個性能指標能夠較好的反應出雙目結構光系統模型的基線距離誤差,而靶球半徑誤差無法有效反應基線距離誤差。在僅考慮基線距離誤差情況下,標準測試方法中的校準球棒放置的位置應該使得兩個球在測量范圍內x、y、z三個方向的距離盡可能大。而在VDI標準測試方法中,關于校準球棒位姿的確定方法并未給出,本文中校準球棒位姿的確定方法對標準性能評測方法的進一步完善具有較好的理論支撐。但本文僅考慮了左右相機基線距離誤差,更多的模型參數的誤差靈敏度分析將在后續的工作中開展。
致謝
感謝Bala Muralikrishnan博士和Bingcheng Yang博士對該論文研究工作的熱心建議和大力幫助。