陳夢雯,遲克浩,陳文娟
(中國石油大學(xué)(華東) 理學(xué)院,山東 青島 266580)
三維重建[1-3]是指通過獲取待測目標(biāo)的三維數(shù)據(jù),并通過軟件對數(shù)據(jù)進(jìn)行處理,使數(shù)據(jù)能夠在計算機的環(huán)境下進(jìn)行操作、分析,進(jìn)而對待測環(huán)境進(jìn)行虛擬重建的技術(shù). 三維重建技術(shù)在管道巡檢、遺址廢墟研究以及地震災(zāi)區(qū)救援等方面發(fā)揮著重要的作用. 隨著計算機視覺技術(shù)的高速發(fā)展,空間環(huán)境的三維重建方法也愈發(fā)多樣化. 但目前市面上很多視覺技術(shù)方案,如單目[4]或雙目視覺[5]等,較易受環(huán)境光線的影響,且成像精度較低. 因此,設(shè)計并制作三維重建實驗系統(tǒng),將抗干擾能力強、測距精度高的激光雷達(dá)[6]應(yīng)用在對空間環(huán)境的三維重建[7-14]中. 該實驗系統(tǒng)采用自主拓展的空間三角測距原理作為其測距成像的方法,相比傳統(tǒng)的TOF(Time of flight)法具有制作成本低、操作簡單、易于攜帶等優(yōu)點.
使用單點三角測距原理能夠計算出點狀激光照射到的空間任意一點到點狀激光器的距離d,原理圖如圖1所示,測距公式為
(1)
其中,攝像頭的焦距為f,固定攝像頭和激光器的平面為s(可認(rèn)為兩者的中心距離為s),x是待測目標(biāo)的反射光在攝像頭成像平面上所成的像到一側(cè)邊緣的距離,激光器發(fā)出的激光線與該固定平面s的夾角為β.
圖1 單點三角測距原理圖
在實際計算中,需要進(jìn)一步結(jié)合掃描器和攝像頭的實際結(jié)構(gòu)對測距公式進(jìn)行完善.
在系統(tǒng)安裝完成后,整個系統(tǒng)中的相機坐標(biāo)系、像素坐標(biāo)系與圖像坐標(biāo)系的幾何關(guān)系如圖2所示,其中,相機坐標(biāo)系的Xc軸與掃描器基準(zhǔn)線平行.
攝像頭中心點位于點Oc,攝像頭的成像平面為平面ζ,待測物體的反射激光在攝像頭的成像平面ζ上成像,對于不同遠(yuǎn)近的物體,其成像光點在成像平面的位置發(fā)生變化. 式(1)中的x表示了該位置的變化,是唯一需要獲得的未知變量.x的含義是待測目標(biāo)的反射激光在攝像頭成像平面上所成的像到一側(cè)邊緣的距離.x值為
x=Xpx,
(2)
其中,px是反射激光點在攝像頭成像平面上的像素橫坐標(biāo),X是攝像頭成像平面上單個像素感光單元的橫向尺寸.
圖2 相機坐標(biāo)系、像素坐標(biāo)系與圖像坐標(biāo)系幾何關(guān)系圖
由于式(1)和式(2)中變量x的原點位于Oo(攝像頭成像平面上感光陣列的第一列)的概率非常小,所以,通過像素坐標(biāo)px計算得到的x值與實際值存在一定的偏差量Δx,該偏差量可通過后文的參量擬合步驟求得. 變量的實際值應(yīng)為
x=Xpx+Δx,
(3)
聯(lián)立式(1)和(3),得到通過激光光點像素坐標(biāo)px求出距離值d為
(4)
對空間環(huán)境進(jìn)行三維重建時,僅使用點狀激光無法得到環(huán)境的3D數(shù)據(jù),因此,使用紅外線狀激光器掃描空間環(huán)境,每次對一條掃描線上的各點進(jìn)行測距,同時將掃描器旋轉(zhuǎn)180°,實現(xiàn)對空間環(huán)境的三維掃描. 圖3為系統(tǒng)掃描器的結(jié)構(gòu)設(shè)計圖.
圖3 掃描器結(jié)構(gòu)設(shè)計圖
首先假設(shè)待測目標(biāo)所在平面與攝像頭成像平面ζ平行,并假設(shè)攝像頭的成像平面ζ繞掃描器所在平面s翻轉(zhuǎn)180°,得到攝像頭成像平面的翻折面γ(以紅色箭頭表示翻折情況). 掃描測距過程中,掃描器所在平面s與攝像頭的成像平面ζ平行,因而掃描器所在平面s與攝像頭的翻折平面γ也平行. 繪制出線狀激光照射在平行平面α上時,掃描器所在平面(視為基準(zhǔn)線)s、攝像頭成像平面的翻折面γ以及待測目標(biāo)所在平行平面α的幾何關(guān)系圖如圖4所示. 其中,平面α為待測目標(biāo)所在平面,其上的紫色線條l1為照射在待測目標(biāo)所在平面α上的線激光,l2為攝像頭成像平面的翻折面γ上的線激光,l1與l2相互平行.
圖4 平行平面上P1點實際距離求解的幾何關(guān)系圖
線激光線l1上的P1點位于激光線的中心位置,依據(jù)針孔攝像機的原理,該點在攝像頭成像平面ζ上所成的點位于成像平面ζ的高度中點,所以,平面γ上的投影點P1′也位于平面γ的高度中點,P1′到基準(zhǔn)線s的垂直距離為攝像頭的焦距f. 結(jié)合圖4,P1點到基準(zhǔn)線的垂直距離d可以直接利用單點三角測距原理中的式(4)進(jìn)行計算.
本系統(tǒng)在對線條l1上的其他各點,如點P2的距離進(jìn)行求解時,將單點三角測距公式拓展到空間,在使用式(4)求得距離d的前提下,利用三角形相似等定理,推導(dǎo)得到求取空間各點實際距離值的空間三角測距公式.
首先,根據(jù)式(4)求出中心點P1點到基準(zhǔn)線s的垂直距離d,再求出平面γ上的俯仰角θ:
(5)
其中,h為平面γ的縱向長度.P1y′和P2y′分別為點P1′和P2′在攝像頭成像平面ζ上的實際高度,但由于平面γ是通過將攝像頭的成像平面ζ進(jìn)行180°翻折得到的,所以P1′和P2′點在平面γ上的高度為h-P1y′,h-P2y′. 而P1y′和P2y′可由下式求得:
Py′=pyY,
(6)
其中,py為P1′或P2′在成像平面ζ上的像素縱坐標(biāo),Y是攝像頭成像平面ζ上單個像素感光單元的縱向尺寸,則P2點到基準(zhǔn)線s的垂直距離d′為
(7)
設(shè)P點為P1點和P2點到基準(zhǔn)線s的垂線與基準(zhǔn)線s的交點,則激光器中心點到P點的距離m為
(8)
根據(jù)勾股定理,可分別求出P1點距激光器中心點的距離d1為
(9)
P1點距掃描器中心點的實際距離dr1為
(10)
其中,r為基準(zhǔn)線s的半長,
(11)
P2點距激光器中心點的距離d2為
(12)
P2點距掃描器中心點的實際距離dr2為
(13)
通過上述推導(dǎo)過程,能夠得到與掃描器所在平面(基準(zhǔn)線)s平行的平面上任意點到掃描器中心點(激光器中心點)的實際距離,而對于求解三維空間中任意某點的距離,可以過該點構(gòu)造與掃描平面平行的平面,此時待測目標(biāo)點即位于圖5中線激光l1上的P2(P1)點,即可利用上述推導(dǎo)得到的空間三角測距公式(9),(10),(12)和(13)對距離進(jìn)行求解.
圖5 平行平面上P2點實際距離求解的幾何關(guān)系圖
本系統(tǒng)只需使用線狀激光器和USB攝像頭,配置簡單的驅(qū)動電路,通過Arduino控制板控制舵機以及履帶小車,并使用計算機軟件進(jìn)行圖像處理,最終將設(shè)備安裝完成并調(diào)試后,即可實現(xiàn)對待測空間的180°掃描重建.
裝置的設(shè)計圖與實物裝置圖如圖6~7所示.
圖7 實物裝置圖
線狀激光器和USB攝像頭構(gòu)成裝置的信息采集模塊,分別放置在通過3D打印的固定平臺的兩端,平臺下端固定在舵機轉(zhuǎn)盤上并與舵機轉(zhuǎn)軸相連,使用履帶小車搭載信息采集模塊、舵機以及Arduino控制板.
實驗系統(tǒng)工作時,計算機將控制程序燒錄到Arduino控制板中,利用Arduino控制板實現(xiàn)對舵機以及履帶小車的控制,通過履帶小車的運動以及舵機的轉(zhuǎn)動,進(jìn)而帶動信息采集模塊對待測空間進(jìn)行180°掃描. 轉(zhuǎn)動過程中紅外線狀激光器發(fā)射線狀激光,USB攝像頭對空間表面的反射光進(jìn)行接收,并將信息發(fā)送給計算機,對信息進(jìn)一步分析處理,實現(xiàn)對待測空間環(huán)境的三維重建.
為有效去除環(huán)境中雜光的干擾,裝置采用紅外激光器,并且去除攝像頭中的紅外截止濾光片,改為加裝帶通濾光片,僅允許激光器發(fā)出的980 nm波長的紅外光通過. 因此,背景光的干擾幾乎被除去,對攝像頭畫面上激光光斑的提取也更加快速準(zhǔn)確.
程序部分使用C++語言,并且采用OpenCV庫來簡化圖像的計算難度. 圖8為工作流程圖:計算機在獲取得到攝像頭原始畫面以及灰度圖片后,需要進(jìn)一步識別和提取出線激光的光點像素坐標(biāo)px或py值,代入測距公式求取實際距離.
圖8 工作流程圖
理論上,采集得到的參數(shù)px或py值是離散量,因此由式(3)求得的值也是離散的,所以最后根據(jù)式(1)或(4)求得的距離d會隨著離散的x值或px值的變化而發(fā)生跳變,產(chǎn)生距離偏差. 因此,為提高計算得到的距離值的精度和分辨率,程序求取連續(xù)的px或py值,將激光光斑的亮度認(rèn)為是二維高斯函數(shù)經(jīng)過1次采樣得到的.
進(jìn)行程序設(shè)計時,采用質(zhì)心法[15],分別按照每幀圖像的像素各行提取出線激光的各行光斑中心點,求取各光斑中心點的px或py值. 再將求得的px或py值,代入三角測距公式,求得空間各點的實際距離,得到相應(yīng)的點云數(shù)據(jù). 最后,將點云數(shù)據(jù)導(dǎo)入MeshLab,繪制出三維點云圖(圖9).
圖9 三維點云圖
利用三角測距原理對空間各點的實際距離進(jìn)行計算時,需要用到多個參量值,在這里僅以求取式(4)中所需參量為例:激光器與基準(zhǔn)線的夾角β,激光器中心點與攝像頭中心點的距離s,攝像頭焦距f,攝像頭成像平面上單個像素感光單元的橫向尺寸X和待測目標(biāo)的反射光在攝像頭成像平面上所成的像到一側(cè)邊緣的距離偏差值Δx. 其中,部分參量已設(shè)置為固定值,即夾角β=83°,距離s=100 mm,焦距f=4 mm.
單個像素感光單元的橫向尺寸X和偏差量ΔX很難通過實際的測量求得,并且難以在安裝時就控制好其數(shù)值的精度,其極小的偏差就會對測距的精度產(chǎn)生很大的影響. 因此,在裝置制作完成后,再對這2個參量通過擬合進(jìn)行確定.
在程序提取得到成像平面上線激光中間高度位置的px數(shù)值后,再通過人工測量出相應(yīng)的實際距離,使用Matlab進(jìn)行曲線擬合,確定出具體參量值. 其中,在求取測距參量時,采用先求取式(4)中距離d的倒數(shù)1/d,得到1/d與px數(shù)值的線性關(guān)系:
(14)
表1是參量擬合過程中采集得到的數(shù)據(jù),圖10為使用Matlab擬合得到的曲線圖.擬合得到的曲線公式為
d-1=7.764×10-5px-0.021 0,
(15)
其中,R2=0.9995.
可以發(fā)現(xiàn),采集得到的數(shù)據(jù)與擬合曲線的吻合程度較高,擬合效果較好.
圖10 測距參量擬合圖像
與式(13)對比,即可得到相應(yīng)參量值X=0.031 289 229 9 mm,Δx=-8.483 234 03 mm.
表1 擬合采集數(shù)據(jù)
實驗系統(tǒng)掃描角度范圍為0°~180°,最小步進(jìn)度數(shù)為1°,最遠(yuǎn)測量距離可達(dá)6 m.
為了檢驗系統(tǒng)的掃描效果,使用該系統(tǒng)180°掃描空間環(huán)境,得到三維點云圖像與真實環(huán)境的對比圖,如圖11所示. 可以看出,該實驗系統(tǒng)掃描效果較好,能夠較清晰地繪制出待測空間環(huán)境.
圖11 三維重建對比圖
此外,為了檢驗系統(tǒng)掃描的精確度,將擬合得到的參數(shù)X和ΔX代入式(4),對多個不同距離的線激光高度中心點位置到基準(zhǔn)線的垂直距離d進(jìn)行計算,并與實際距離值進(jìn)行比較,得到數(shù)據(jù)見表2.
根據(jù)表2數(shù)據(jù),繪制得到距離偏差值隨px值的變化曲線如圖12所示.
可以看出,實驗系統(tǒng)的測距誤差相對較小,最遠(yuǎn)6 m內(nèi)誤差在為90 mm以下,近距離1 m內(nèi)誤 差為5 mm左右. 此外,在測距距離較近時,實際值與計算值的偏差較小,但當(dāng)距離逐漸變遠(yuǎn)時,二者的差值也逐漸增大. 這是由于根據(jù)式(1)或式(4)求得的距離d會隨著離散的x值或px值的變化而發(fā)生躍變. 將式(1)改寫為
(16)
并將x對d求偏導(dǎo),得到
(17)
等式左右兩邊同時分子分母倒換,得到
(18)
由式(18)可以發(fā)現(xiàn),隨著測量距離d變遠(yuǎn),d值隨著離散的x值的變化而發(fā)生躍變的程度以d2的速度大幅增加. 所以,距離誤差隨著距離d的增加而不斷增大.
表2 距離值誤差分析
圖12 距離偏差值隨值的變化曲線
通過使用拓展得到的空間三角測距原理,對待測空間環(huán)境進(jìn)行三維重建,使用紅外線狀激光180°掃描待測空間,較精確地得到待測空間的三維圖像. 該系統(tǒng)結(jié)構(gòu)設(shè)計簡單,操作簡易且易于攜帶,成本也大幅降低.