余兆凱,彭曉峰,邱昌杰
(中國電建集團貴州電力設(shè)計研究院有限公司,貴陽 550003)
隨著地下空間信息化程度的提高,傳統(tǒng)二維圖像和視頻信息的表達方式已經(jīng)無法滿足地下井室及管道的可視化要求。傳統(tǒng)的地下井室測量多使用人工測繪、2D成像和24目井下機器人測量等方案[1-3]。但人工測繪存在危險性高、人力成本高、準確度難以保證等缺點;而普通2D圖像由于丟失了深度信息,故無法精確測量三維尺度信息,且由于拍攝區(qū)域有限導(dǎo)致無法獲取井下全貌;24目井下機器人結(jié)構(gòu)復(fù)雜、體積龐大、適用性較差,而且設(shè)備使用前需要在特定的標定室進行標定,標定繁瑣且成本較高[4-6]??傮w而言,現(xiàn)有的地下井室測量手段存在三維信息缺失、效率低下以及成本較高等缺點。RGB-D深度相機可在任意光照條件下獲取被測目標的深度圖像數(shù)據(jù),且可較好地應(yīng)用于地下空間環(huán)境,對于地下空間的三維重建具有重要意義[7-10]。針對上述應(yīng)用中存在的問題及行業(yè)需求,本文基于RGB-D深度相機對地下井室進行視覺三維重建,以實現(xiàn)其內(nèi)部環(huán)境狀況的三維可視化,并在三維實測點云模型的基礎(chǔ)上,對地下空間的缺陷狀況進行定量分析,為地下空間的病害探測與維護提供了技術(shù)支持。
深度相機種類繁多,其中Microsoft公司推出的Kinect深度相機具有代表性?;谏疃认鄼C的三維可視化研究眾多,也出現(xiàn)了一些具有代表性的工作。P.Henry等通過在室內(nèi)移動Kinect傳感器設(shè)備采集得到數(shù)據(jù),結(jié)合深度和彩色信息進行三維重建,并在后端中加入閉環(huán)檢測進行優(yōu)化,但重建結(jié)果質(zhì)量不佳,且實時性較差,精度有待提高[11]。Microsoft公司針對Kinect發(fā)布的KinectFusion三維模型重建算法[12],利用Kinect深度傳感器自由轉(zhuǎn)動獲取室內(nèi)場景深度數(shù)據(jù),通過與點云域截斷符號距離函數(shù)(Truncated Signed Distance Function,TSDF)模型匹配的方式進行位姿估計,并將所有數(shù)據(jù)融合到模型中實現(xiàn)三維場景的重構(gòu)。該項目實現(xiàn)了實時的三維重建,但是缺少彩色紋理信息,且需要利用圖像處理器(Graphics Processing Unit,GPU)進行加速計算。由于KinectFusion算法使用固定體積的網(wǎng)格模型表示重建的三維場景,因此只能對固定大小的場景目標進行三維重建。TSDF模型將整個待重建的空間劃分為相同大小的網(wǎng)格,當重建場景較大時,或者網(wǎng)格的空間分辨率較高時,會占用大量的顯存空間[13]。另外,該算法缺少回環(huán)檢測和回環(huán)優(yōu)化,當相機移動距離較大時,不可避免地存在誤差累積,易造成重建場景的漂移。T.Whelan等在KinectFusion算法的基礎(chǔ)上,提出了Kintinuous算法。該算法結(jié)合了迭代最近點(Iterative Closest Point,ICP)算法和直接法,用于提升位姿估計精度。使用動態(tài)的網(wǎng)格模型進行場景數(shù)據(jù)的融合,對相機量測范圍內(nèi)任意大小的場景都可進行三維重建,融合了回環(huán)檢測和回環(huán)優(yōu)化,對重建結(jié)果進行優(yōu)化,對累積誤差進行控制。T.Whelan等提出了ElasticFusion算法[14],采用了不同于KinectFusion方案的surfel面元模型進行數(shù)據(jù)融合。使用OpenGL對點云進行更新、融合、顯示和投影,通過ICP算法計算相機間的位姿信息,并基于構(gòu)建的變形圖進行優(yōu)化。采用融合重定位算法,當相機跟丟時,可重新計算相機的位姿[15]。該方案適合對房間大小的場景進行三維重建,但在較大場景下適用性較差。
針對Kinect深度相機在不同方向上的測距誤差表現(xiàn),提出了一種基于多項式曲面擬合的深度測量誤差修正方法。Kinect的三角測量原理可通過圖1所示的示意圖進行表示,根據(jù)三角形相似可得
(1)
其中,Zo為參考平面深度值;f為紅外相機的焦距;b為基線長度;d為視差。由式(1)得到被測目標的深度為
(2)
圖1 Kinect三角測量原理Fig.1 Kinect triangulation principle
若令Δd為視差誤差,則深度測量的誤差ΔZk可以表示如下
(3)
視差誤差由系統(tǒng)誤差所決定,系統(tǒng)誤差是固定的,因此,視差誤差也是不變的。由式(3)可知,深度測量誤差與測量距離成正比。通過上述Kinect三角測量的誤差模型,可以得到每一個像素點的真實深度值F(u,v)關(guān)于Kinect測量距離Zk的多項式曲面模型,即
(4)
式中,a1(u,v),…,an(u,v)代表多項式系數(shù);b(u,v)表示常數(shù)項。
聯(lián)合雙邊濾波器是一種基于雙邊濾波器的改進算法,可用于低分辨率圖像升采樣,從而填補圖像的信息缺失[16-17]。雙邊濾波算法中由一幅圖像計算得到所有的權(quán)值,而在聯(lián)合雙邊濾波算法中,通過再引入一幅具有豐富信息的圖像計算權(quán)值,可得到更優(yōu)的權(quán)值。RGB-D相機可以同時獲取目標深度圖像和RGB圖像,其中RGB彩色圖像中包含了場景的完整信息,可以用來補全深度圖像的缺失部分。因此,本文在聯(lián)合雙邊濾波算法的基礎(chǔ)上,實現(xiàn)對深度圖像的快速濾波去噪。
聯(lián)合雙邊濾波權(quán)值函數(shù)表示如下
w(i,j,x,y)=wg(i,j,x,y)×wr(i,j,x,y)
(5)
其中,(i,j)和(x,y)表示選取的2個像素點坐標,且彩色圖像灰度域權(quán)值wr和深度圖像空間域權(quán)值wg計算公式如下
(6)
(7)
式中,g(i,j)和g(x,y)分別代表在像素點(i,j)和(x,y)處,將彩色圖像轉(zhuǎn)化為灰度圖像后得到的灰度值。
深度相機可以快速獲取場景目標的深度及彩色信息,從而得到彩色點云數(shù)據(jù)。但是,由于深度相機視角范圍有限、場景目標的尺寸較大以及障礙物的遮擋等原因,一次從一個角度的掃描方法只能獲取被測目標的部分數(shù)據(jù)。因此,需要從不同角度進行多次數(shù)據(jù)采集,以獲取場景目標的全局點云數(shù)據(jù)。不同視角下獲得點云數(shù)據(jù)的坐標系是不一致的,需要通過點云配準的方式將其統(tǒng)一到同一坐標系下。
尺度不變特征轉(zhuǎn)換(Scale-Invariant Feature Transform,SIFT)算法可以對圖像中的區(qū)域特征進行檢測和描述,其原理是在建立的不同尺度空間中檢測關(guān)鍵點,并計算其方向。SIFT主要檢測信息明顯的關(guān)鍵點,對于遮擋目標的檢測效果也較為明顯。且SIFT特征的信息量較大,適合在海量數(shù)據(jù)庫中快速準確匹配[18]。在獲取到圖像的SIFT特征點后,對相鄰兩幀圖像進行特征匹配,以獲取兩幀圖像之間的位姿變換關(guān)系。傳統(tǒng)的隨機抽樣一致性(Random Sample Consensus,RANSAC)算法利用隨機選取的特征點進行匹配,忽略了特征點的差異性,易造成圖像的錯誤匹配。改進的RACSAC算法基于迭代的思想,先對迭代過程中的隨機采樣結(jié)果進行篩選操作,將存在明顯錯誤的匹配點對剔除。其原理如下:
1)假設(shè)相鄰兩幀圖像提取到的ORB(Oriented FAST and Rotated BRIEF)特征點集合為
P={pi|pi∈P,i=1,2,…,m}
Q={qi|qi∈Q,i=1,2,…,m}
(8)
查找P中特征點pi在Q中最近鄰和次近鄰的2個特征點。若與最近鄰和次近鄰的歐式距離之比小于設(shè)定的閾值,則認為pi與最近鄰ORB特征點是一對匹配點。
2)利用雙向匹配機制,即找到P中特征點在Q中對應(yīng)的特征點,同樣找到Q中特征點在P中對應(yīng)的點。若二者一一對應(yīng)匹配,則認為該匹配是正確的,將匹配不正確的結(jié)果進行剔除,以達到篩選的目的。
3)通過設(shè)定最小匹配距離閾值,將篩選剩余的匹配結(jié)果中大于最小匹配距離一定倍數(shù)的部分剔除。經(jīng)過上述步驟得到匹配質(zhì)量較高的匹配點對。
在利用SIFT算法對圖像數(shù)據(jù)進行匹配后,獲取了圖像數(shù)據(jù)幀之間的初始位姿信息。在特征點匹配的基礎(chǔ)上,進一步利用基于鄰域特征的ICP算法實現(xiàn)三維點云間的精確位姿估計,從而實現(xiàn)點云精確配準,其算法流程如圖2所示。
圖2 ICP點云精確配準流程Fig.2 Point cloud precise registration process with ICP algorithm
首先建立鄰域特征,其原理如下:
(9)
其中,n為采樣點的鄰近點數(shù)量。點云的方差σN和均值μN計算如下
(10)
式中,N為點云的采樣點數(shù)量,將采樣點鄰域曲率處于μN±ασN之外的點作為選取特征點。其中α是用于調(diào)整特征點數(shù)目的調(diào)整因子。
2)確定對應(yīng)點:假設(shè)P和Q為兩片相鄰的點云,若要找到點云P中特征點pi在點云Q中的對應(yīng)點,可通過選取Q中最近鄰近的3個點作三角形。
在鄰域特征建立完成后,基于建立的鄰域特征,使用ICP算法進行相鄰兩幀點云間的精確位姿估計。假設(shè)P和P′是已經(jīng)匹配好的點對
P={p1,…,pn}
P′={p′1,…,p′n}
(11)
即找到一個歐式變換R和t,使得
?i,pi=Rp′i+t
(12)
實驗對Kinect深度傳感器的測距結(jié)果與激光測距結(jié)果進行分析,得到了Kinect在測距視場范圍內(nèi)的多組深度測量誤差及其變化情況。利用獲取的深度誤差數(shù)據(jù),構(gòu)建真實深度值關(guān)于測量距離的多項式曲面模型,基于最小二乘法原理對得到的測量誤差數(shù)據(jù)進行擬合,得到測量深度關(guān)于深度誤差的擬合公式,其擬合結(jié)果如圖3所示。
圖3 Kinect測距誤差距離曲線擬合Fig.3 Kinect ranging error distance curve fitting
圖3中的深度誤差結(jié)果經(jīng)曲面函數(shù)模型擬合后得到如下擬合公式
y=4E-10x3-3E-6x2+0.01x
(13)
式中,y為誤差修正值;x為距離值。若Kinect v2.0深度值為d,測得修正深度誤差為
d′=d-(4E-10x3-3E-6x2+0.01x)
(14)
通過多項式曲面擬合的誤差修正方程對深度誤差進行修正,得到修正后的誤差分布結(jié)果,如圖4所示。
圖4 深度誤差修正結(jié)果Fig.4 Depth error correction result
由圖4的實驗結(jié)果可以看出,原始深度誤差隨著測量距離的增加出現(xiàn)急速增長的趨勢,而經(jīng)過誤差補償修正后的深度誤差隨距離增加的變化較為平緩。且當Kinect深度傳感器在0.5~4.5m的測距范圍內(nèi)時,其深度測量誤差小于2cm;在4.5~7m的測量范圍內(nèi)時,其深度測量誤差也可以保持在4.5cm以內(nèi)。實驗結(jié)果表明,本文提出的誤差修正方法可以較好地修正Kinect深度測量數(shù)據(jù)的誤差,有效提升其測距精度。
地下井室空間狹小且紋理單一,常規(guī)的激光掃描儀在其中難以作業(yè)。針對地下井室應(yīng)用場景的需求,本文采用基于飛行時間(Time of Flight,ToF)測距原理的Kinect v2.0深度傳感器作為圖像采集設(shè)備。如圖5所示,首先通過機械傳動裝置將Kinect v2.0深度相機置于地下井室中,從上、中、下3個視角旋轉(zhuǎn)獲取了3個不同方位的深度及彩色數(shù)據(jù)。實驗設(shè)置轉(zhuǎn)動設(shè)備選擇次數(shù)默認值為16次,每次旋轉(zhuǎn)角度20°,從井室的3個層次對其進行數(shù)據(jù)采集。采集時保證深度相機量測距離至少為1m,確保獲得的數(shù)據(jù)質(zhì)量更佳。設(shè)置設(shè)備采集范圍為0.6~7.5m,保證獲取數(shù)據(jù)的有效性。由于Kinect v2.0深度傳感器的視場角為水平70°,垂直60°,其在垂直和水平方向的覆蓋范圍有限。因此,在實際測量中將Kinect v2.0深度傳感器分別向上、向下傾斜一定的角度,進行多次掃描,從而增加相機的采集覆蓋范圍,確保經(jīng)過一周旋轉(zhuǎn)后采集的圖像數(shù)據(jù)間存在較多重疊。
圖5 Kinect地下井室數(shù)據(jù)采集Fig.5 Underground wells data acquisition by Kinect
3.2.1 SIFT特征點匹配結(jié)果
實驗通過SIFT特征點算法對獲取的圖像數(shù)據(jù)進行匹配,獲得初始的位姿估計信息,為后續(xù)的ICP點云精確配準提供較優(yōu)的計算初值,進一步提升點云圖像的配準精度。圖6(a)所示為地下井室圖像的SIFT特征點原始匹配效果,其中存在較多的誤匹配,不利于圖像幀間的初始位姿估計。為提升初始位姿的估計精度,利用改進的RANSAC算法對特征匹配結(jié)果進行處理,剔除其中的誤匹配結(jié)果,如圖6(b)所示。實驗選取了其中一組數(shù)據(jù)進行統(tǒng)計,得到表1所示的匹配結(jié)果。實驗結(jié)果表明:經(jīng)過改進的RANSAC算法處理后的特征點匹配率明顯提升,正確匹配率可達95.24%,有效剔除了其中的錯誤匹配點對。
(a)原始匹配結(jié)果
表1 SIFT特征點匹配結(jié)果統(tǒng)計
3.2.2 局部及全局點云配準結(jié)果
在SIFT特征匹配提供的位姿估計初始值上,利用結(jié)合鄰域特征的ICP算法可實現(xiàn)對局部幀間點云和全局點云的精確配準。幀間點云配準結(jié)果如圖7所示,可以看到,經(jīng)過ICP算法精確配準后的兩幀點云之間實現(xiàn)了很好的拼接融合,局部配準的細節(jié)也有不錯的表現(xiàn)。在進行兩幀點云的精配準后,僅實現(xiàn)了局部的點云配準,并未將全局的點云進行融合。進一步通過基于鄰域特征的ICP精配準算法對多視角的點云進行融合,得到全局一致的點云重建配準結(jié)果,如圖8所示。實驗統(tǒng)計了兩幀點云以及全局點云的精確配準結(jié)果,并同經(jīng)典ICP算法[19]進行了對比分析,兩種算法配準結(jié)果如表2所示。實驗結(jié)果表明:本文方法在局部點云和全局點云的精確配準效果均優(yōu)于經(jīng)典ICP算法,點云精確配準誤差較小,且配準所耗時間顯著減少。
圖7 ICP點云精確配準Fig.7 Point cloud accurate registration with ICP algorithm
圖8 全局配準后的點云結(jié)果Fig.8 Point cloud results after global registration
點云算法配準誤差/mm耗時/s局部兩幀點云經(jīng)典ICP算法0.3970.206本文算法0.1890.187全局點云經(jīng)典ICP算法0.6679.337本文算法0.2956.375
3.2.3 曲面重建及表面真實紋理貼圖
在進行點云重建以后可以得到稀疏或稠密的地下井室點云重建結(jié)果,但是其僅停留于大量點集合的點云地圖,3D點之間并沒有明顯聯(lián)系,可視性較差;需要進一步的曲面重建還原出更為真實的實物原貌,增強可視化效果。本文在Windows 10環(huán)境下基于VS2017利用點云數(shù)據(jù)處理庫(Point Cloud Libary, PCL)對重建的地下井室三維點云進行了曲面重建。圖9所示為基于地下井室三維重建點云的泊松曲面重建結(jié)果。由重建的表面模型可以看到,經(jīng)過泊松曲面重建后,在獨立的3D點云間建立了一定的聯(lián)系,目標表面的基本輪廓和形狀都得到了很好的表達,模型的可視性明顯提升。
圖9 地下井室泊松曲面重建結(jié)果Fig.9 Poisson surface reconstruction results of underground wells
進行曲面重建后得到的模型缺少了彩色紋理信息,與實際場景的視覺效果存在一定的區(qū)別,可視化效果并未達到最佳,并未實現(xiàn)真正意義上的三維實景重建。為此,本文在重建的曲面模型的基礎(chǔ)上,結(jié)合Kinect深度相機獲取的彩色圖像數(shù)據(jù),通過紋理貼圖重建出具有彩色紋理的模型。圖10所示為地下井室場景模型紋理視圖,可以看到,經(jīng)過真實紋理貼圖后的三維重建結(jié)果較之前的重建點云結(jié)果可視化效果更好,對于地下井室的局部紋理細節(jié)反映更細致,與實際場景基本一致。原始的三維點云重建結(jié)果只是大量彼此無聯(lián)系的點云集合,由曲面重建方法可以實現(xiàn)將點上升到面的過程,獲取三維重構(gòu)模型,再通過真實紋理貼圖還原出目標場景的真實面貌,實現(xiàn)真正意義上的三維可視化。
圖10 地下井室紋理模型Fig.10 Texture model of underground wells
本文提出了一種基于Kinect三維重建的地下井室可視化方法,通過Kinect v2.0從不同角度獲取地下井室的深度及彩色圖像數(shù)據(jù),實現(xiàn)了地下井室的真實場景三維可視化。實驗結(jié)果分析表明:
1)本文所提方法可使Kinect在0.5~4.5m的測距范圍內(nèi),三維重建精度達到2cm;在4.5~7m的測距范圍內(nèi),三維重建精度仍可保持在4.5cm以內(nèi)。
2)針對Kinect深度測量誤差提出了一種基于多項式曲面擬合的深度誤差修正方法,可有效實現(xiàn)Kinect的深度測量誤差修正。
3)實現(xiàn)了地下井室真實場景的三維可視化,獲取了帶紋理及細節(jié)特征的三維真實模型,可為地下井室三維探測和維護提供相應(yīng)技術(shù)支持。