趙祚喜,馮 榮,朱裕昌,談 婷
(華南農(nóng)業(yè)大學(xué) 工程學(xué)院,廣東 廣州 510642)
在航空航天、機械制造、汽車裝配等領(lǐng)域,各種復(fù)雜零件的研制、生產(chǎn)和裝配、建模、仿真、分析,需要先進的檢測技術(shù)和測量方法。對于越來越多需要進行空間三維測量的工件,傳統(tǒng)的線、面檢測方法已不能滿足生產(chǎn)需要,因此坐標(biāo)測量技術(shù)將作為幾何量測的研究重點[1]。傳統(tǒng)的坐標(biāo)測量方法一般采用全站儀、三坐標(biāo)測量儀、激光跟蹤儀等進行三維關(guān)鍵點的測量,這些儀器每次只能測量很少的點,測量速度相當(dāng)慢[2-4]。由于基于計算機視覺的三維定位技術(shù)具有非接觸、無破壞以及高分辨率、測量效率高的優(yōu)點,已逐漸成為幾何量測技術(shù)的研究重點[5]。
3D視覺測量系統(tǒng)根據(jù)相機是否需要固定分為大致分為兩種測量模式:一種是攝像機固定式的三維測量,即攝像機固定,操作人員手持光筆,將光筆低端的測針接觸物體表面上的被測點,攝像機系統(tǒng)通過光筆上鑲嵌的多個光學(xué)特征點,求解出光筆的空間位姿參數(shù),由于測針的幾何位置已知,被測點的三維坐標(biāo)即可被精確測量出來;另一種是攝像機移動式的三維測量,事先在被測物體表面粘貼標(biāo)記點,利用手持式高分辨率數(shù)碼相機在多個位置對被測物體進行拍攝,測量軟件對圖像自動進行處理并計算出標(biāo)記點的空間坐標(biāo),實例是各種手持3D掃描儀。
在3D視覺定位領(lǐng)域的研究和應(yīng)用很多。趙永國[6]等在移動機器人避障過程中為獲取障礙物在現(xiàn)實世界坐標(biāo)系下的三維坐標(biāo),利用MATLAB與Triclops SDK數(shù)據(jù)庫,開發(fā)了一套基于雙目視覺的移動機器人避障系統(tǒng),實測數(shù)據(jù)表明該套系統(tǒng)具有不錯的避障表現(xiàn);解則曉[7]等為了對車間生產(chǎn)工件實現(xiàn)高精度、大尺寸的三維坐標(biāo)現(xiàn)場測量,設(shè)計了一套光筆測量系統(tǒng),該系統(tǒng)由兩臺面陣CCD攝像機、光筆、支架及一臺筆記本電腦組成,通過試驗測試了該系統(tǒng)在有效視場范圍內(nèi)的測量精度,基本滿足要求不太高的大尺寸現(xiàn)場測量;董英華[8]等為提高其研發(fā)的光筆式視覺坐標(biāo)測量系統(tǒng)的測量精度,采用改進的Tsai標(biāo)定法實現(xiàn)攝像機的高精度標(biāo)定,通過數(shù)學(xué)平均思想提高了測頭中心的穩(wěn)定性及算法的收斂速度;孔筱芳[9]等提出一種雙目攝像機標(biāo)定及空間坐標(biāo)重建方法,采用了高精度GPS代替2D或3D靶標(biāo),與傳統(tǒng)的3D靶標(biāo)標(biāo)定方法相比,其空間重建坐標(biāo)相對距離誤差從1.56%減少到0.52%,具有較高的空間坐標(biāo)重建精度,但GPS不便于安裝到被測物體表面點上,不滿足實際的應(yīng)用場景。
國內(nèi)外一些公司已開發(fā)出成熟的3D測量產(chǎn)品,國外的有挪威Metronor公司的SOLO系統(tǒng)、美國GSI公司的V-STARS系統(tǒng)和Aicon公司的ProCam系統(tǒng)等[10],國內(nèi)的有北京天遠三維科技公司的DigiMetric三維攝影測量系統(tǒng)和Robot動作捕捉系統(tǒng)等。SOLO系統(tǒng)主要由相機、測量光筆及測針、筆記本電腦及測量軟件組成,該系統(tǒng)可實現(xiàn)30 m的范圍測量,長度測量精度為25 μm,還可以測量600 mm深度的隱藏點[11];V-STARS/S系統(tǒng)由1套測量型數(shù)碼相機、1臺筆記本電腦(含系統(tǒng)軟件)、1根基準(zhǔn)尺、1根定向棒、1組人工特征標(biāo)志點組成,10 m范圍的坐標(biāo)測量精度達到0.044 mm[12];DigiMetric三維攝影測量系統(tǒng)是在被測物體表面粘貼若干標(biāo)記點,利用手持式高分辨率數(shù)碼相機在多個位置對被測物體進行拍攝,將拍攝所得圖像導(dǎo)入到計算機中,DigiMetric測量系統(tǒng)軟件對圖像自動進行處理并計算出標(biāo)記點的三維坐標(biāo),具有測量環(huán)境不受限制,測量范圍不受限制,操作簡單方便等優(yōu)點,坐標(biāo)測量精度≤0.1 mm/4 m。
以上的方法往往需要昂貴的儀器、專門的設(shè)備因而應(yīng)用受到限制,例如能同時定位的點數(shù)、二次開發(fā)能力等的限制,難以在一般的實驗室推廣使用。本文提出一種不需要昂貴儀器的物體點世界坐標(biāo)系3D定位方法。該方法基于直接線性變換(Direct Linear Transformation,DLT)的物體上點的世界坐標(biāo)系下的三維定位方法, 適用于單臺相機移動獲取的多視圖實現(xiàn)的靜態(tài)結(jié)構(gòu)體點的定位,也適合于多臺相機同時拍攝獲取的機器上點的三維動態(tài)定位。根據(jù)空間幾何線-線交會原理,利用最小二乘法實現(xiàn)空間點的世界坐標(biāo)測量,與傳統(tǒng)的測量法相比,該方法能夠?qū)崿F(xiàn)任意個點的3D世界坐標(biāo)測量,而且相機位置可移動,使用方便。
圖1 小孔成像模型示意圖
相機標(biāo)定的基本方法是通過環(huán)境(有專門的幾何形狀已知的標(biāo)定對象或無專門的標(biāo)定對象)來確定相機幾何參數(shù)的過程,是計算機3D視覺應(yīng)用的首要步驟,按照使用的標(biāo)定對象的不同可分為3D,2D,1D及無標(biāo)定對象[13]。DLT標(biāo)定方法是一種基于3D標(biāo)定對象的相機標(biāo)定方法,即將標(biāo)定對象上每一個已知控制點(3D世界坐標(biāo)已知)和相機圖片上的對應(yīng)的成像點(圖像坐標(biāo)系下2D像素坐標(biāo)已知)建立線性模型(式(2)),將相機內(nèi)外參、幾何失真參數(shù)視為未知數(shù),設(shè)置多個控制點使所列的方程數(shù)不小于未知數(shù)數(shù)量,再利用最小二乘法實現(xiàn)這些參數(shù)的線性估計(不使用旋轉(zhuǎn)矩陣各個元素之間的非線性約束),原理簡單計算工作量小[13-14]。本章有關(guān)DLT方法參考了文獻如下[15],DLT相機標(biāo)定方法的完整介紹[16]。圖1為小孔成像模型示意圖,在相機標(biāo)定過程中涉及4個坐標(biāo)系及3次坐標(biāo)轉(zhuǎn)換,分別為世界坐標(biāo)系W到相機坐標(biāo)系C的轉(zhuǎn)換①,相機坐標(biāo)系C到圖像坐標(biāo)系I的轉(zhuǎn)換②,圖像坐標(biāo)系I到像素坐標(biāo)系S的轉(zhuǎn)換③,最終得到像素坐標(biāo)系S和世界坐標(biāo)系W間的線性變換關(guān)系[17-18]如式(1)所示:
(1)
其中,(ui,vi,1)T為各成像點的像素齊次坐標(biāo),b為相機焦距,ku,kv分別為單個像素在u和v方向上的真實尺寸,(u0,v0)為焦點的像素坐標(biāo),rij(i,j=1,2,3)為世界坐標(biāo)系至相機坐標(biāo)系之間旋轉(zhuǎn)矩陣R中的元素,(xwi,ywi,zwi) (i=1, 2,…,N)為各標(biāo)定點的3D世界坐標(biāo),(x0,y0,z0)為平移矩陣T,表示相機坐標(biāo)系原點oc在世界坐標(biāo)系下的坐標(biāo),zci(i=1, 2…N)為各標(biāo)定點在相機坐標(biāo)系Z方向上的坐標(biāo)。
將式(1)展開得式(2):
ui-u0=
vi-v0=
(2)
將式(2)整理為如下式(3),使得式(3)中像素坐標(biāo)(ui,vi)值只取決于標(biāo)定點的世界坐標(biāo)(xwi,ywi,zwi) (i=1, 2,…,N)及11個包括相機內(nèi)外參數(shù)的常數(shù)參數(shù)Lk(k=1, 2,…,11)。
(3)
參數(shù)L1~L11可用內(nèi)外參數(shù)表示為如式(4):
(4)
其中:bu=b/ku,bv=b/kv,D=-(x0r31+y0r32+z0r33)。
將式(3)寫成矩陣形式:
(5)
相機標(biāo)定中,需要設(shè)置N(N≥6)個已知三維坐標(biāo)的控制點,故式(5)中含有2N個線性方程,令:
(6)
則式(6)可表示為求解非齊次線性方程組的矩陣形式Ax=b,采用最小二乘法可求解出未知量x,即:
x=(ATA)-1ATb.
(7)
包含內(nèi)外參數(shù)的Lk(k=1, 2,…,11)求解出后,需要通過式(4)來求解16個內(nèi)外參數(shù),包括4個內(nèi)參數(shù)bu,bv,u0,v0和12個外參數(shù)rij(i,j=1,2,3),T=[x0y0z0]T,其中外參數(shù)rij(i,j=1,2,3)形成的矩陣R3×3為正交旋轉(zhuǎn)矩陣。這樣就完成了相機的內(nèi)外參數(shù)DLT法的標(biāo)定。顯然如果是多臺相機實現(xiàn)多視圖測量,則每臺相機要經(jīng)過上述步驟實現(xiàn)標(biāo)定;如果是單臺相機移動位置實現(xiàn)的多視圖測量,則沒移動一個位置均要按上述方法標(biāo)定一次。
如前所述,多視圖包括單臺相機移動位置拍攝同一個場景得到多視圖,也指多臺相機同時拍攝獲取多視圖。前者適合靜態(tài)測量場合后者適合于動態(tài)測量場合。圖2為物理點的多視圖的3D定位(坐標(biāo)重建)系統(tǒng)結(jié)構(gòu)和原理示意圖。
圖2 多視圖的坐標(biāo)重建示意圖
對于每個視圖下的相機而言,如果光心和像點已知,可唯一確定過測量點的一條直線,依據(jù)空間幾何線-線交會原理,可以對測量點進行交會定位,由于鏡頭畸變、像素坐標(biāo)提取精度、標(biāo)定點坐標(biāo)誤差的存在,使得相機多角度確定的各條直線異面,不會相交于同一測量點,因此本文通過最小二乘法來求解被測目標(biāo)點的空間坐標(biāo),假設(shè)空間中任意一點P(xw,yw,zw)在相機3個視圖中對應(yīng)的成像點分別為p1(u1,v1),p2(u2,v2)和p3(u3,v3),3個視圖對應(yīng)的相機參數(shù)Li(i=1,2,…,11)可由式(7)求解得出,由式(3),可得到如下方程:
(8)
單個視圖可列出2個線性方程,則3個視圖可列出關(guān)于(xw,yw,zw)的6個線性方程,轉(zhuǎn)換為矩陣形式,有:
(9)
采用最小二乘法x=(ATA)-1ATb即可求解出被測點P的坐標(biāo)(xw,yw,zw)。
為評價定位結(jié)果提出以下評價指標(biāo)。將獲得的空間重建點P(xw,yw,zw)與其在世界坐標(biāo)系下3D坐標(biāo)真值(xq,yq,zq)進行比較,得到空間點P重建坐標(biāo)在X,Y,Z方向上的誤差dX,dY,dZ,有:
(10)
由式(11)可得空間重建坐標(biāo)相對距離誤差為:
(11)
本文提出的DLT多視圖物理點世界坐標(biāo)系3D定位的基本步驟總結(jié)如下:
(1)建立世界坐標(biāo)系下的3D標(biāo)定對象:即確定不少于6個不在同一個平面的控制點并確定世界坐標(biāo)系下的3D坐標(biāo)??刂泣c包絡(luò)體積盡量覆蓋待測點的運動范圍,控制點數(shù)盡量多且盡量在包絡(luò)體積中均布;
(2)DLT方法完成相機標(biāo)定得到L參數(shù)(式(7))及相機內(nèi)外參數(shù)(式(4))。多臺相機則每臺相機要標(biāo)定,如果是單臺相機則沒移動一個位置均要標(biāo)定。見2.1節(jié);
(3)測量待定位物理點對應(yīng)的圖像點的像素坐標(biāo),利用上面2)標(biāo)定求得的各相機(或同一相機不同位置)的L參數(shù),由式(9)求得這些點的世界坐標(biāo)系的3D坐標(biāo)。見2.2節(jié);
(4)如果是多相機實現(xiàn)的多視圖物理點位置的連續(xù)動態(tài)測量,假定相機位置不動則返回(3)繼續(xù)執(zhí)行直至任務(wù)完成;否則返回(2)(即重新標(biāo)定)繼續(xù)執(zhí)行至任務(wù)完成。
進行了單相機移動位置實現(xiàn)的多視圖多個物理點靜態(tài)定位試驗并與真實結(jié)果(全站儀測量得到)進行了比較驗證。實驗采用美國Vision Research 公司產(chǎn)的Phantom M310高速相機進行圖像采集,傳感器尺寸為25.6×16.0 mm,分辨率為1 280×800,對應(yīng)像素大小20 μm×20 μm,鏡頭焦距24~85 mm可調(diào),拍攝速率采用1 000 frame/s,光圈值為f/2.8;采用瑞典Image Systems公司的TEMA運動分析軟件測量圖像中標(biāo)定點及被測點的像素坐標(biāo),在這里拍攝的是靜態(tài)場景,故只需截取視頻中的1幀圖像導(dǎo)入TEMA軟件中進行處理;采用科利達公司產(chǎn)的KTS-462LL全站儀對目標(biāo)點的三維坐標(biāo)進行測量,該儀器的測距精度為2+2ppm×5 km,即測量距離為5 km的誤差為12 mm,試驗在1PJ-3.0型水田平地機上進行,圖3為水田平地機的結(jié)構(gòu)示意圖。
圖3 水田平地機結(jié)構(gòu)示意圖
水田平地機包括機械系統(tǒng)、液壓系統(tǒng)、高程控制系統(tǒng)和水平控制系統(tǒng)四大部分,采用乘坐式井關(guān)PG6插秧機的為動力[19-20],以三點懸掛方式與平地機相連,三條平行連桿一端與插秧機底盤旋轉(zhuǎn)鉸鏈連接(鉸接),另一端與安裝臺鉸接,安裝臺下端有另一個鉸鏈與平地鏟中間連接。安裝臺與平地鏟之間安裝有雙作用油缸驅(qū)使二者之間相對轉(zhuǎn)動實現(xiàn)平地作業(yè)中平地鏟處于調(diào)平狀態(tài)。
按照2.3節(jié)所述的基本步驟,進行如下操作。由于試驗涉及到驗證,故具體步驟稍有區(qū)別。
(1)設(shè)定世界坐標(biāo)系,設(shè)定控制點及待測點
圖4為試驗平臺及試驗布置示意圖,先將圖4(b)中的平地鏟置于水平地面,在測臺架1上建立世界坐標(biāo)系ow-xwywzw,在平地鏟上粘貼如圖所示的不共面的10個十字架形狀(對角象限分別為白色和黑色)的控制點(像寶馬汽車標(biāo)志,標(biāo)志點指該十字的交點),記錄下各標(biāo)定點在坐標(biāo)系ow-xwywzw下的三維坐標(biāo),在平地鏟上另外粘貼20個標(biāo)記點作為待測點。一般世界坐標(biāo)系是靜止的,控制點宜設(shè)置在靜止的物體上,而這里是靜態(tài)試驗,控制點和待測點均位于同一剛體(平地鏟,水平靜置)不會造成問題。
圖4 試驗平臺及現(xiàn)場布置示意圖(平地機測試臺上的寶馬點為標(biāo)定點;平地鏟上的寶馬點為待測點)
Fig.4 Test platform and sketch map of the test site(BMW points on test setup for leveler are calibration points; BMW points on land-leveling plow are measured points)
(2)DLT方法完成相機標(biāo)定得到L參數(shù)
調(diào)整相機的位置及焦距,使得標(biāo)定點及待測點在視場中清晰可見,采集此視圖1下的圖像,記為I1,按相同方法采集視圖2和視圖3下的圖像,記為I2和I3;TEMA軟件完成圖像標(biāo)記點的跟蹤識別和像素坐標(biāo)的讀取,并按2.1節(jié)方法完成各位置下的相機標(biāo)定。
(3)測量各待定位物理點對應(yīng)的圖像點的像素坐標(biāo);
(4)結(jié)果驗證。采用全站儀測量待測點的世界坐標(biāo)作為世界坐標(biāo)系真實3D位置:
①建立全站儀坐標(biāo)系oq-xqyqzq
將全站儀架設(shè)到適宜位置,手動調(diào)平,建立以全站儀激光發(fā)射中心oq為坐標(biāo)原點,坐標(biāo)軸方向與世界坐標(biāo)系坐標(biāo)軸方向一致的全站儀坐標(biāo)系oq-xqyqzq;
②全站儀測量待測點坐標(biāo)
測量得到這些點在全站儀坐標(biāo)系oq-xqyqzq下的三維坐標(biāo),然后將所有的被測點坐標(biāo)與測得的世界坐標(biāo)系原點坐標(biāo)相減,即可將所有被測點在全站儀坐標(biāo)系下的坐標(biāo)轉(zhuǎn)換到世界坐標(biāo)系下。
本實驗利用測試臺架(平地鏟)上粘貼的10個標(biāo)定點的空間坐標(biāo)及各標(biāo)定點在圖像Ij(j=1,2,3)的像素坐標(biāo),通過最小二乘法及高斯-牛頓迭代法完成各視圖下的相機標(biāo)定,然后根據(jù)空間幾何線-線交會原理,利用最小二乘法實現(xiàn)被測點的世界坐標(biāo)測量,表1為部分標(biāo)定點Pi(i=1,2,…,10)的世界坐標(biāo)及在圖像Ij(j=1,2,3)中的像素坐標(biāo)信息,表2為部分被測點Qn(n=1,2,…,20)在圖像Ij(j=1,2,3)中的像素坐標(biāo)信息。表3為求得的各視圖參數(shù)Lk(i=1,2,…,11),表4為利用高斯-牛頓迭代法求得的各視圖相機內(nèi)外參數(shù),試驗采用的各視圖相機分辨率均為1 280×800,則像平面中焦點O的理想像素坐標(biāo)為(640,400),從表4可以看出,3個視圖的相機標(biāo)定結(jié)果中,焦點橫坐標(biāo)最大偏差為65.28 pixel,焦點縱最大偏差為63.36 pixel,這與標(biāo)定過程中各標(biāo)定點空間坐標(biāo)測量誤差及對應(yīng)的像素坐標(biāo)提取誤差有關(guān)。
表1 部分標(biāo)定點的坐標(biāo)
表2 部分被測點的像素坐標(biāo)
表3 各視圖相機參數(shù)Lk求解結(jié)果
表4 各視圖相機內(nèi)外參數(shù)求解結(jié)果
分別利用全站儀與本文方法對平地鏟上20個被測點進行測量,并計算各被測點在X,Y,Z方向上的誤差dX,dY,dZ,結(jié)果如圖5所示,其中藍色折線為被測點在世界坐標(biāo)系ow-xwywzw下的三維坐標(biāo)(由全站儀獲得),綠色折線為相機測得的各被測點在X,Y,Z方向上的坐標(biāo),紅色折線為相機測得的被測點坐標(biāo)相對于全站儀測得坐標(biāo)的誤差,表5為被測點在X,Y,Z方向上的平均誤差,從圖5可以看出(彩圖見期刊電子版),相機測得被測點坐標(biāo)與全站儀測得的坐標(biāo)位置基本吻合,被測點坐標(biāo)在X,Y,Z方向上的絕對誤差均值為4.19 mm,3.97 mm,3.69 mm,空間相對距離誤差為0.81%。
表5 被測點在X,Y,Z方向上的平均誤差
Tab.5 Average error of measured points inX,Y, andZdirections
X方向Y方向Z方向Error相機測量0.004 20.004 00.003 70.008 1
圖5 被測點的世界坐標(biāo)在X,Y,Z方向的誤差
(1)本文提出的基于DLT的世界坐標(biāo)系多視圖3D定位方法,既適用于單臺相機移動獲取的多視圖實現(xiàn)的靜態(tài)結(jié)構(gòu)體點的定位,也適合于多臺相機同時拍攝獲取的機器上點的三維動態(tài)定位,能夠?qū)崿F(xiàn)任意多個物理點的世界坐標(biāo)測量,原理上測量結(jié)果不受相機位置影響。該方法不需要專門的儀器設(shè)備,對一般的結(jié)構(gòu)和機器系統(tǒng)的測繪、運動分析適用。
(2)在水田平地機上進行了單相機移動位置得到的多視圖多物理點靜態(tài)定位試驗。驗證采用本方多個目標(biāo)點進行了世界坐標(biāo)測量,與全站儀的測量結(jié)果相比,該方法測得的坐標(biāo)在X,Y,Z方向的平均絕對誤差為4.19 mm,3.97 mm,3.69 mm,空間相對距離誤差為0.81%,滿足一般測量精度要求。
(3)為進一步DLT相機標(biāo)定與物理點的3D定位的精度除了使用更多的控制點、更多的視圖等措施[15]外,還需要對相機的徑向和切向失真進行校正,這可以在DLT標(biāo)定步驟中對失真參數(shù)進行標(biāo)定,此時需要使用16個L參數(shù),需要的不共面的控制點為8個[15]。此外Matlab有相機標(biāo)定工具箱,借助該工具箱可以驗證本方法第2步得到的相機標(biāo)定結(jié)果。