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