劉建業(yè),莊蘇鋒,屠大維,張璨,金攀
(上海大學(xué) 機(jī)電工程與自動化學(xué)院,上海 200072)
雙目立體成像技術(shù)在水下考古、海洋地質(zhì)勘測、水下機(jī)器人自主導(dǎo)航和水下生物調(diào)查等領(lǐng)域具有廣闊的應(yīng)用前景[1,4]。然而,當(dāng)相機(jī)應(yīng)用于水下環(huán)境時,成像光線依次經(jīng)過水、窗口玻璃和空氣時會發(fā)生折射,使傳統(tǒng)的小孔成像相機(jī)模型不再滿足測量精度要求[5]。
早期的研究沒有從水下光線的傳播出發(fā)建立模型,而是采用簡化的計算模型加以補償[6-7]。例如,PARVATHI VS 等[8]提出補償折射誤差的標(biāo)定模型,基于標(biāo)定模型對基本矩陣進(jìn)行估計,使用標(biāo)準(zhǔn)運動結(jié)構(gòu)(Structure From Motion,SFM)算法進(jìn)行對比度增強(qiáng)圖像的三維重建,改善了三維重建的結(jié)果。后又提出了一種基于運動算法的單層折射方法[9],證明了在姿態(tài)估計中使用折射運動結(jié)構(gòu)(Refractive Structure From Motion,RSFM)優(yōu)于SFM 算法,使三維重建結(jié)果有所提高。ELNASHEF B 等[10]提出了當(dāng)系統(tǒng)和相機(jī)的光軸不重合時對水下標(biāo)定模型的影響,但沒有給出有效的辦法。此后,研究者開始從光線傳播的角度,關(guān)注水下物體成像的折射模型。例如,KOWN Y H 等[11]分析了折射效應(yīng)對水下相機(jī)標(biāo)定的影響,明確指出建立正確的折射模型是解決折射效應(yīng)的基本方法。WEI Jingyang[12]對光線進(jìn)入相機(jī)的路徑進(jìn)行分析,結(jié)合折射定律建立了水下成像模型,并改進(jìn)了一種基于平面標(biāo)定板的水下相機(jī)標(biāo)定方法,提高了水下標(biāo)定的精度,缺點是對物體大角度偏轉(zhuǎn)區(qū)域的重建結(jié)果不太理想。LUCZYNSKI 等[13]提出了一種將虛擬針孔相機(jī)模型與軸向相機(jī)模型相結(jié)合的七軸相機(jī)模型,基于Pinax 模型補償折射的圖像失真,在水下三維重建中具有高效性,但這種方法的缺點是需要事先通過查找表進(jìn)行折射校正。SUN J 等[14]提出了一種基于兩條正交平行線消失點優(yōu)化的快速水下標(biāo)定方法,該方法操作簡單,減少了水下標(biāo)定現(xiàn)場的限制要求。LI S Q 等[15]提出了一種基于等效焦距的標(biāo)定方法,將折射畸變視為等效焦距變化而引起,提高了水下相機(jī)的標(biāo)定精度。KANG L 等[16]在不使用標(biāo)定板或特殊設(shè)備的情況下解決了系統(tǒng)標(biāo)定和三維場景重建等問題。上述方法解決了水下環(huán)境光照不足的問題,獲得了較高的相機(jī)內(nèi)外參數(shù),但標(biāo)定過程過于繁瑣,導(dǎo)致計算量大和效率低。
建立一種精確的水下折射成像模型是提高雙目立體測量系統(tǒng)標(biāo)定精度的關(guān)鍵。為此,本文提出了一種基于光線四維參數(shù)化表示的水下雙目立體視覺成像模型,提出系統(tǒng)參數(shù)標(biāo)定方法,并構(gòu)建最優(yōu)目標(biāo)函數(shù)進(jìn)行非線性優(yōu)化,最大限度地減小重投影誤差以獲取高精度的標(biāo)定參數(shù),從而提高水下三維測量的精度。
相機(jī)水下應(yīng)用,被封裝于防水密封艙體中,艙體前端具有玻璃窗口,光線的傳播依次經(jīng)過“水-玻璃-空氣”三種介質(zhì),并最終在相機(jī)像平面成像。光線在不同介質(zhì)的分界面處發(fā)生折射,使得水下相機(jī)成像的物像關(guān)系不滿足空氣中小孔成像原理??紤]到窗口玻璃厚度較小且兩面平行,其折射影響可忽略不計,故簡化的光路如圖1。水下物點(xwor,ywor,zwor)的成像光線經(jīng)過折射平面上一點(xref,yref,zref),發(fā)生折射后在像平面的坐標(biāo)為(u,v),其中入射光線和折射光線與分界面法向量之間的夾角分別為θw和θa,f為相機(jī)焦距,d為折射平面到相機(jī)鏡頭中心的距離。
所有成像光線中任一條光線可用兩個平面、四維參數(shù)表示[17](如圖2):一個平面表示光的位置([u ν]T),另一個平面表示光線的方向([s t]T),兩個平面的距離為1 個單位長度。因此,光線在空間上可表示為[u v s t]T。
圖2 光線四維參數(shù)化表達(dá)Fig.2 Four-dimensional parametric expression of light
將相機(jī)坐標(biāo)系建立在相機(jī)光心上,z軸與光軸平行(如圖3 中的黑色坐標(biāo)系);以多層界面法線n為z軸,其與相機(jī)z軸的叉乘為x軸,構(gòu)成多層折射成像坐標(biāo)系(如圖3 中的紅色坐標(biāo)系)。多層折射成像坐標(biāo)系(ref)與相機(jī)坐標(biāo)系(cam)間的關(guān)系為
圖3 水下相機(jī)折射成像模型Fig.3 Refraction imaging model of underwater camera
式中,camRref、camtref為多層折射成像坐標(biāo)系相對于相機(jī)坐標(biāo)系的姿態(tài),n為分界面法向量,zcam為相機(jī)坐標(biāo)系的z軸。
物點坐標(biāo)系(obj)相對于多層折射坐標(biāo)系的關(guān)系為
式中,refRobj和reftobj為物點坐標(biāo)系相對于相機(jī)坐標(biāo)系的姿態(tài)。
在相機(jī)坐標(biāo)系中建立物點P=[X,Y,Z]T與成像點m=[u,v]T之間的關(guān)系:=K·P,K為內(nèi)參矩陣。假設(shè)像面平行于接口,任意像素m決定有一束光線通過光心和該像素。因此,在相機(jī)坐標(biāo)系中,光的方向可表示為
即當(dāng)光線Lref傳輸距離d0,從介質(zhì)μ0折射到介質(zhì)μ2,入射光和折射光分別表示為
對于雙目立體成像系統(tǒng),以左相機(jī)光心為原點,左相機(jī)光心與右相機(jī)光心的連線方向為左立體視覺坐標(biāo)系的x軸;將左平面折射坐標(biāo)系的z軸(分界面的法線)與左立體視覺坐標(biāo)系x軸的叉乘作為左立體視覺坐標(biāo)系y軸;x軸與y軸叉乘作為z軸。將左立體視覺坐標(biāo)系平移到右相機(jī)光心,即可得到右立體視覺坐標(biāo)系。立體視覺坐標(biāo)系與多層折射坐標(biāo)系的關(guān)系可表示為
式中,refRste與reftste為立體視覺坐標(biāo)系相對于多層折射坐標(biāo)系的位姿,nx為左右相機(jī)光心連線,nref為分界面法向量。
建立的水下雙目立體視覺模型如圖4。
由于在左相機(jī)多層折射坐標(biāo)系下點P同時位于右相機(jī)多層折射坐標(biāo)系下(如圖4),因此滿足下列約束:
圖4 水下雙目立體視覺模型Fig.4 Underwater binocular stereo vision model
再用反對稱矩陣表示代替叉乘(即向量積),式(9)可轉(zhuǎn)化為
單相機(jī)內(nèi)參及雙目立體視覺系統(tǒng)外參可通過張正友標(biāo)定法標(biāo)定得到[18]。然而,對于圖4 的水下雙目立體視覺成像模型,由于制造和安裝誤差,相機(jī)光軸不可能垂直于分界面,需要通過標(biāo)定確定分界面法向量n[19]。此外,相機(jī)被封裝在密封艙內(nèi),空氣介質(zhì)厚度d0也是一個需要標(biāo)定的參數(shù)。
2.1.1 分界面法向量標(biāo)定
多層平面界面的成像系統(tǒng)具有共面特性,即入射光線與中間的傳播光線和最終的折射光線共面。為了建模方便,多層平面之間當(dāng)作平行處理,光路位于由入射光線和分界面法向量n確定的平面上?;诠裁婕s束,可以計算出分界面法向量。
在相機(jī)坐標(biāo)系中,相機(jī)光心為坐標(biāo)系原點。對于任一物點Pobj經(jīng)過多層界面后,它都位于入射光Icam與分界面法向量n確定的平面上,用?表示卷積運算。因此,可以將共面約束表示為
物點坐標(biāo)系相對攝像機(jī)坐標(biāo)系的姿態(tài)為camRobj、camtobj,物點Pobj坐標(biāo)轉(zhuǎn)化到相機(jī)坐標(biāo)系的坐標(biāo)可表示為Pcam=camRobjPobj+camtobj。將點Pcam的變換代入式(11)中,共面約束可以寫為
將矩陣E按列向量形式保存在向量E(:)中,用⊙表示kronecher 積,式(12)可表示為
當(dāng)物點坐標(biāo)系中有11 個以上的已知點時,利用最小二乘法求得[17]。設(shè)物點坐標(biāo)系中存在N個已知點,方程組可表示為
對B進(jìn)行奇異值分解B=UΣVT,解是最小特征值對應(yīng)的列向量V的最后一列。因此,V(:,12),由此可得E。又因為E=n?camRobj,所以nTE=0,對E進(jìn)行奇異值分解,可解出分界面法向量n的初值。
2.1.2 空氣介質(zhì)厚度標(biāo)定
根據(jù)建立的折射模型知,只有已知分界面法向量的情況下,才能計算出空氣介質(zhì)厚度。2.1.1 節(jié)已標(biāo)定出分界面法向量n,本節(jié)對空氣介質(zhì)厚度d0進(jìn)行標(biāo)定。
由光線經(jīng)過折射的傳播路徑L'=R(s,t,μ,μ')?L知,折射光線方向只與入射光線的方向、界面法線、兩個介質(zhì)的折射率有關(guān),與光線的位置無關(guān)。因此,光線可表示為
當(dāng)?shù)贜層折射光線到達(dá)一定深度dn后,可以表示為
根據(jù)式(2)物點坐標(biāo)系與多層折射坐標(biāo)系之間的變化,式(17)可表示為
由N個點的約束方程不難發(fā)現(xiàn),所有點的[d0…dn-1dn]T保持不變,唯獨dn隨物點變化而變化。在物點坐標(biāo)系下,對于K個已知點可建立2K個約束方程,方程組可表示為
本文采用雙層折射(玻璃厚度忽略),且μ0≠μ2,第二層的折射光線與第一層的入射光線不是平行的,根據(jù)式(19)可求得d0。
2.1.3 非線性優(yōu)化分析
在標(biāo)定得到分界面法向量n、空氣介質(zhì)厚度d0的初始值基礎(chǔ)上,對其進(jìn)一步優(yōu)化,以獲得更加精確的參數(shù)。由于反向投影誤差的計算較為復(fù)雜,本文采用正向投射誤差作為目標(biāo)函數(shù)對參數(shù)n和d0進(jìn)行優(yōu)化,正向投射誤差具體為:對于平面的標(biāo)定物,將對應(yīng)性的像素使用坐標(biāo)變換可得在物體坐標(biāo)系下的點坐標(biāo),兩者相減作為正向投射誤差。正向投影誤差的代價函數(shù)表示為
式中,?(pi,n,di,R,t)為正向投影函數(shù),Pi為物點,pi為對應(yīng)的圖像點。
令每一段光路的方向向量為v0、v1,…,vn,相應(yīng)的折射點為q1、q2,…,qn(如圖5),因此vn可表示為
圖5 多層折射光路示意Fig.5 Schematic of multi-layer refraction light path
將Pc向量分解為平行于x軸和平行于y的分量:
當(dāng)有N對物點與成像點時,根據(jù)式(24)最優(yōu)目標(biāo)函數(shù)可表示為
因此,求解參數(shù)的過程是非線性優(yōu)化過程,即
且在優(yōu)化時需要使用多幅圖片以降低圖片質(zhì)量對優(yōu)化結(jié)果的影響。
根據(jù)2.1 節(jié)所述的多層折射參數(shù)標(biāo)定理論進(jìn)行分界面法向量n和空氣介質(zhì)厚度d0標(biāo)定仿真實驗,并利用標(biāo)定的參數(shù)計算三維測量誤差,以分析多層折射參數(shù)標(biāo)定算法的正確性。
為反映真實情況,將標(biāo)定板放置在1 500~2 500 mm 之間(標(biāo)定板不與相機(jī)成像平面平行),在不同位姿共取樣16 次,并提取角點信息,并在角點信息中加入均值為0、標(biāo)準(zhǔn)差σ為1 的高斯分布的背景光。首先根據(jù)其中1 幅標(biāo)定板圖片的角點信息計算待優(yōu)化參數(shù)的初值,然后利用其中12 幅標(biāo)定板圖片進(jìn)行正向投影誤差非線性優(yōu)化,并計算另外4 幅標(biāo)定板圖片中角點的反向投影誤差,以測試標(biāo)定結(jié)果的精度。仿真計算的結(jié)果以及真實系統(tǒng)參數(shù)如表1,其中n為分界面法向量,d0為空氣介質(zhì)厚度。當(dāng)使用所提出的標(biāo)定方法進(jìn)行參數(shù)仿真標(biāo)定后,平均重投影誤差為0.078 pixel,表明標(biāo)定算法的精度較高。
表1 仿真標(biāo)定結(jié)果Table 1 Simulation calibration results
為分析背景光對標(biāo)定精度的影響,對提取的角點數(shù)據(jù)分別加入均值為0、標(biāo)準(zhǔn)差σ為0 到1 的高斯分布的背景光,重復(fù)進(jìn)行仿真標(biāo)定,不同背景光下標(biāo)定的平均重投影誤差如圖6。背景光對于標(biāo)定結(jié)果的影響非常明顯,因此在實際標(biāo)定時,應(yīng)盡量降低背景光的影響。
圖6 不同背景光下的標(biāo)定結(jié)果Fig.6 Calibration results under different background light
為進(jìn)一步驗證標(biāo)定算法的有效性,根據(jù)標(biāo)定參數(shù)進(jìn)行三維計算精度仿真實驗。首先,構(gòu)建水下立體視覺系統(tǒng),假定雙相機(jī)的多層折射參數(shù)相同(如表1),取立體視覺系統(tǒng)的外參數(shù)為:R=[ 0 0 0 ]T,T=[-1200 0 0 ]T。然后,給定11×11 個空間三維點坐標(biāo)(空間點均勻分布在3 m 遠(yuǎn)2 m×2 m 的平面),如圖7,并計算出對應(yīng)左、右相機(jī)像素理論坐標(biāo)。最后,對理論像素坐標(biāo)加入均值為0、標(biāo)準(zhǔn)差σ為1 的高斯分布的背景光,利用加入背景光的像素點根據(jù)第1 節(jié)介紹的水下多層折射三維數(shù)學(xué)模型計算物點的三維坐標(biāo)。比較計算值與實際值,三維點X、Y、Z誤差分布如圖8。
圖7 仿真模型Fig.7 Simulation model
圖8 三維點X、Y、Z 誤差分布Fig.8 X,Y,Z error distribution of three dimensional points
由仿真結(jié)果可知,采用提出的多層折射三維計算模型和標(biāo)定算法時,三維點最大誤差為1.395 mm,誤差的標(biāo)準(zhǔn)差為0.437 mm,具有很高的精度。
軟件環(huán)境為Win10+VS2015,算法編碼采用C++。實驗使用PointGrey 生產(chǎn)的GS3-U3-32S4C-C 相機(jī),搭配Kowa LM5JC10M 的鏡頭。焦距為5 mm,相機(jī)分辨率為2 048×1 536。實驗水池尺寸為3.5 m×2 m×0.9 m,水池內(nèi)裝滿自來水(如圖9)。
圖9 實驗環(huán)境Fig.9 Experimental environment
標(biāo)定實驗分為空氣和水下標(biāo)定,在空氣中主要標(biāo)定相機(jī)內(nèi)參、畸變系數(shù)和左、右相機(jī)的相對位姿,在水環(huán)境中主要標(biāo)定左、右相機(jī)空氣介質(zhì)厚度和左、右分界面的法向量以及多層折射成像坐標(biāo)系相對于相機(jī)坐標(biāo)系的位姿??諝猸h(huán)境中的標(biāo)定使用是14×11 的圓環(huán)標(biāo)定板。對于水下參數(shù)標(biāo)定,由于水折射率的影響,水下成像畸變較大,會導(dǎo)致拍攝的圓環(huán)標(biāo)定板出現(xiàn)嚴(yán)重變形,從而無法精確提取圓環(huán)中心像素坐標(biāo)。因此使用14×11 棋盤格標(biāo)定板進(jìn)行水下參數(shù)標(biāo)定。
3.2.1 空氣中標(biāo)定
運用迭代標(biāo)定算法進(jìn)行空氣中標(biāo)定,標(biāo)定場景如圖10。具體標(biāo)定結(jié)果如表2。其中,fx,fy為焦距,cx,cy為主點坐標(biāo),k1,k2,k3,p1,p2為畸變系數(shù),Ra為右相機(jī)坐標(biāo)系相對于左攝像機(jī)坐標(biāo)系的旋轉(zhuǎn)矩陣,Ta為相對應(yīng)的平移向量。
表2 相機(jī)空氣中的標(biāo)定參數(shù)Table 2 Calibration paraments in camera air
圖10 空氣中標(biāo)定場景Fig.10 Calibration scene in air
3.2.2 水下標(biāo)定
在空氣中標(biāo)定參數(shù)的基礎(chǔ)上,將折射率設(shè)置為1.333,進(jìn)行水下標(biāo)定,得到左、右相機(jī)空氣介質(zhì)厚度和左、右分界面的法向量以及多層折射成像坐標(biāo)系相對于相機(jī)坐標(biāo)系的位姿,場景如圖11。標(biāo)定時,需在1.5 m、2.0 m 和2.5 m 處分別拍攝6 組不同位姿的圖片,使用其中12 組成像質(zhì)量較好的圖片進(jìn)行標(biāo)定。圖12為水下標(biāo)定時左右相機(jī)采集的標(biāo)定板圖片。表3 為水下標(biāo)定參數(shù),其中n為分界面法向量,d0為空氣介質(zhì)厚度,Rw為多層折射成像坐標(biāo)系相對于相機(jī)坐標(biāo)系的旋轉(zhuǎn)矩陣,Tw為相對應(yīng)的平移向量。
圖11 水下標(biāo)定場景Fig.11 Underwater calibration scene
圖12 水下標(biāo)定拍攝的一組圖片F(xiàn)ig.12 A set of images taken by underwater calibration
表3 水下標(biāo)定參數(shù)Table 3 Underwater calibration parameter
選擇另外4 組圖片標(biāo)定結(jié)果進(jìn)行測試,通過計算測試圖中角點的重投影誤差分析水下參數(shù)標(biāo)定精度。測試圖像的重投影誤差如圖13,重投影誤差均在0.12 pixel 以下??梢姡瑯?biāo)定的系統(tǒng)參數(shù)具有較高精度。
圖13 不同測試圖片的重投影誤差Fig.13 Reprojection error of different test images
實驗環(huán)境示意如圖11。被測目標(biāo)物為標(biāo)準(zhǔn)球棒(球徑d1=d2=150.13 mm,球心距dis=497.72 mm,由上海計量院預(yù)先標(biāo)定測得)。球棒置于水下雙目相機(jī)前約3 m,并先后擺放10 個不同位姿(如圖14)進(jìn)行測量?;谝陨夏P秃头椒ㄓ嬎愕玫饺S點云,再使用Ployworks 軟件對球棒點云擬合,并將重建球徑和球心距與標(biāo)定真值進(jìn)行比較,得到球徑d1、d2與球心距dis的測量誤差的標(biāo)準(zhǔn)差(Standard Deviation,SD)值,結(jié)果如表4。由表4 可知,對于水下球棒的10 個位置,d1的測量誤差最大值為1.8 mm,其標(biāo)準(zhǔn)差為0.8 mm;d2的測量誤差最大值為1.1 mm,其標(biāo)準(zhǔn)差為0.6 mm;dis 的測量誤差最大值為1.8 mm,其標(biāo)準(zhǔn)差為 1.2 mm。因此,在10 種不同姿態(tài)下對球棒進(jìn)行三維測量,得到球徑d1測量誤差的標(biāo)準(zhǔn)差為0.8 mm,球徑d2測量誤差的標(biāo)準(zhǔn)差為0.6 mm,球心距dis 測量誤差的標(biāo)準(zhǔn)差為1.2 mm,充分說明基于標(biāo)定算法的三維測量模型有較高的精度。
圖14 球棒的10 個位姿示意圖Fig.14 Diagram of the 10 positions of the bat
表4 10 種姿態(tài)下球棒的測量結(jié)果(單位:mm)Table 4 Measurement results of bat under 10 postures(unit:mm)
實驗對象為鯛魚、大海螺,水下測量距離為2.1 m。圖15(a)、(b)為左、右水下相機(jī)采集的一組圖像。實驗測得的點云數(shù)據(jù)如圖15(c)。圖中可見點云整體較稠密,無明顯孔洞,而且輪廓良好且平滑,細(xì)節(jié)重建效果也很好,表明本文所提模型與標(biāo)定算法的有效性。
圖15 實驗結(jié)果示意Fig.15 Schematic of experimental results
針對空氣中雙目立體成像系統(tǒng)水下應(yīng)用模型失效的問題,提出一種水下雙目立體視覺成像模型,并據(jù)此開展標(biāo)定方法研究。仿真分析與標(biāo)定實驗表明提出的水下雙目立體視覺成像系統(tǒng)標(biāo)定方法具有較高的系統(tǒng)參數(shù)標(biāo)定精度,為之后的像素匹配與三維重建奠定基礎(chǔ);水下精度實驗得到水下標(biāo)準(zhǔn)球棒d1測量誤差的標(biāo)準(zhǔn)差為0.8 mm,d2測量誤差的標(biāo)準(zhǔn)差為0.6 mm,球心距dis測量誤差的標(biāo)準(zhǔn)差為1.2 mm,表明基于標(biāo)定算法的三維測量精度很高。水下實物三維重建實驗表明,提出的水下立體視覺模型和標(biāo)定方法具有較好的水下三維重建效果。