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