陳義飛, 郭 勝, 潘文安, 陸彥輝,3
(1.鄭州大學 信息工程學院,河南 鄭州 450001; 2.香港中文大學(深圳) 理工學院,廣東 深圳 518172; 3.深圳市大數據研究院,廣東 深圳 518172)
近年來,隨著激光測量技術的迅速發(fā)展和激光測距設備成本的逐漸降低,利用激光點云數據來重建三維場景模型得到越來越廣泛的應用。城市的高速發(fā)展對城市三維場景重建提出了新的要求,其中包括城市三維基礎空間信息數據要求保持良好的現勢性,數據更新周期要短,幾何精度要高。隨著智慧城市建設的全面推廣,針對目前智慧城市三維建模中存在的成本高、周期長等問題,探索并采用新技術來解決這些現實問題就顯得尤為重要。
基于激光掃描數據的三維場景重建[1-3]主要是通過對三維激光掃描儀獲取的深度數據進行預處理、配準和網格化等處理來實現的。相對于傳統(tǒng)的基于圖片的三維場景重建方法,基于激光數據的三維場景重建技術能夠恢復出幾何信息準確性更高、真實感更強的三維模型,更有利于在計算機中再現客觀的真實場景。但是,在使用激光雷達進行數據掃描的過程中,通常會采集到與場景無關的數據(例如行人和車輛),嚴重影響了三維場景重建的精度和效果,如何剔除三維點云模型中的無關數據,構建高精度的三維模型是三維場景重建的難點。
檢測和剔除點云中的無關目標是一項極具挑戰(zhàn)的工作,直接在點云中檢測目標計算量較大,且不易實現。針對這一問題,本文使用了點云和圖像融合的方法來實現特定目標的檢測與剔除。以采集的三維點云數據和真實場景中的二維紋理數據為基礎,采用多數據融合的深度學習方法訓練網絡模型,進而使用訓練后的網絡進行點云目標檢測與剔除。該方法能夠有效提升三維空間中點云目標的處理速度和精度,使三維場景重建過程更加快速高效。
整體硬件方案設計如圖1所示,主要由移動底座、支架、激光雷達及攝像頭組成。移動底座和支架控制不同傳感器在采集數據過程中的穩(wěn)定性,激光雷達和攝像頭用來采集不同傳感器的數據信息。硬件設計原理如圖2所示,硬件傳感器有GPS、IMU、相機和激光雷達。其中GPS和IMU在下一實驗階段使用。由于安裝后的相機和激光雷達具有各自不同的坐標系,需要先對傳感器進行標定,如圖3所示為標定示意圖,保證在數據收集過程中空間坐標系一致。
圖1 整體硬件結構圖Figure 1 Overall hardware structure
圖2 硬件設計原理Figure 2 Hardware design schematic
圖3 標定示意圖Figure 3 Calibration diagram
在機器人操作系統(tǒng)(robot operating system,ROS)中時間同步通過設定對應的采集幀率、錄制圖像和點云流的方式來實現,而空間同步只能通過標定的方式來實現。本文使用ROS中的多源傳感器標定模塊實現空間同步的標定,標定方法為張正友標定法,標定裝置由激光雷達、相機、黑白棋盤格組成。多源傳感器標定分為2步。
第1步是單個相機的標定[4],主要目的是建立相機成像的幾何模型,保證后續(xù)算法的穩(wěn)定性。世界坐標系下的點與成像的相機坐標系中的點的對應關系為:
Zcm=K[R/T]M。
(1)
式中:Zc表示比例因子;K是相機內參矩陣;[R/T]是相機的外參矩陣;m和M分別代表像素坐標和世界坐標。
整個標定過程需要求解的模型參數就是相機的內參矩陣、外參矩陣和畸變參數,將式(1)展開可得:
(2)
式中:Zc表示比例因子;u、v表示像素坐標;fx、fy分別表示x軸、y軸的歸一化焦距,u0、v0表示圖像原點在相機坐標系的中心;[R/T]表示相機的外參矩陣,也即世界坐標系到像素坐標系的旋轉平移矩陣;XW、YW、ZW表示世界坐標。
本文所用攝像頭是無畸變的廣角攝像頭(FOV=120°),以保證視角的廣闊性與準確性。安裝完硬件平臺后需求解參數矩陣,如式(1)所示,本文使用黑白棋盤格標定法求解內參矩陣K和外參矩陣[R/T]。本文借助ROS中相機標定工具解算多個點對關系,最終得到相機的內、外參矩陣:
(3)
(4)
第2步是相機和雷達的聯(lián)合標定[5],目的是找到雷達和相機2個不同坐標系下的關系。為了求解相機與雷達間的關系,需要定義相機與雷達間的空間位置模型,雷達和相機坐標系下點的坐標關系為:
(5)
式中:u、v表示圖像坐標;X、Y、Z表示雷達坐標;[R/T]是指相機的外參矩陣;R0為相機的矯正矩陣;Tv2c為雷達到相機的投影矩陣。
本文所使用的激光雷達為VLP-16,它的優(yōu)點在于體積小,受環(huán)境光變化的影響比較小且測距精確。其感知距離為100 m,質量為830 g,水平視角為360°,垂直視角為30°,誤差在3 cm左右。工作原理是通過旋轉發(fā)射紅外激光束,在遇到物體表面時會返回接收,通過記錄接收時間和角度來計算該點距離雷達的相對距離。采集的數據為整個場景中對應時間幀的所有點在雷達坐標系下的三維坐標值以及反射率。
整個聯(lián)合標定過程使用ROS中Autoware工具實現。式(5)中,[R/T]在相機標定過程中已求出,由于相機無畸變,此處矯正矩陣R0為單位矩陣,最終所得的雷達到相機的投影矩陣為:
(6)
三維場景建圖[6-8]是在激光雷達采集數據的過程中同時定位和生成周圍環(huán)境的點云地圖,如果激光傳感器本體靜止,激光只是繞固定軸做選擇運動,點云的注冊相對簡單。但使用環(huán)境中激光通常是運動的,這就造成建圖需要估計運動過程中激光傳感器的位姿。
本文三維重建算法LeGO-LOAM[8]是一種輕量版的SLAM(simultaneous localization and mapping)算法,用于實時六自由度姿態(tài)估計,可以在低功耗的嵌入式系統(tǒng)上實現。系統(tǒng)整體框架由5個子模塊構成,如圖4所示,輸入為原始點云數據,輸出為位姿估計(雷達的姿態(tài)估計)。下面分別介紹圖4中每個模塊的功能。
圖4 LeGO-LOAM整體框架Figure 4 LeGO-LOAM overall framework
圖4中的分割模塊用于實現點云分割與分簇,它主要采取基于圖像的分割方法將點云分割成許多點簇。將收到的1幀點云投影到1 800像素×16像素的圖像上,每1個收到的點表示1個像素,像素值對應點到傳感器的距離。經圖像化之后得到1個矩陣,對矩陣的每1列進行估計就可以完成對地面的估計,提取地面點?;诰嚯x將點分組為多個聚類,同一類的點具有相同的標簽,而由于室外環(huán)境中會有很多噪聲點,在連續(xù)2幀里都在同一位置出現的可能性不大,因此直接剔除掉,不參與幀間匹配。本文采用的方法是計算每個點簇中點的個數,將所有個數小于30的點簇都剔除掉,這里設置為30是將采集數據過程中移動的行人目標剔除掉。最終得到點的類別(地面點或者分割點)和點的深度值。
圖4中的特征提取子模塊為點云特征提取,先在水平方向上將深度圖分為多個子圖像,計算每個點的曲率:
(7)
式中:c表示曲率,本文實驗中設定為0.1;S表示對應的點云集;r表示點到雷達的歐式距離,ri與rj表示點云集中的不同點。在子圖像中比較曲率與設定的閾值(0.1)大小將點分為2大類,分別為平面點或者角點。
雷達里程計子模塊為雷達的運動估計,通過相鄰幀點對線、點對面的匹配,邊緣點到線的距離為:
(8)
而平面點到面的距離為:
d2=
(9)
本文使用Levenberg-Marquardt[6]方法(L-M)優(yōu)化點到線和點到面的最小距離來完成前后幀點云的匹配,估計雷達的相對位姿。L-M優(yōu)化可以較快地找到最優(yōu)值,從而獲得姿態(tài)變換來進行空間約束,執(zhí)行閉環(huán)檢測,消除模塊的誤差。每幀輸出的相對位姿主要由旋轉平移值確定,旋轉值為[θpitch,θyaw,θroll],平移值為[tx,ty,tz],分別代表雷達在XYZ軸上的各個旋轉量和偏移量。
雷達建圖和轉換融合子模塊主要用于雷達運動前后幀間位姿的轉換和點云地圖的構建。其中前后幀點云間的關系為:
(10)
本文實驗場景為某大學校園實驗樓下,如圖5所示為LeGO-LOAM建模算法在實際測試過程中的效果。
圖5 LeGO-LOAM測試效果Figure 5 Test result of LeGO-LOAM
在激光雷達建圖的過程中總會產生一些和地圖信息無關的障礙物、車輛以及行人。在制作三維地圖時需要對這些目標進行檢測和剔除。目的就是保留關鍵信息,提高三維場景建模的速度和準確度。本文借助深度學習技術在目標檢測方面的算法來解決三維重建中遇到的問題。三維點云的數據是稀疏且無序的。目前成熟的二維目標檢測方法并不能直接應用于三維點云中。
2017年,Charles等[9]和Qi等[10]提出用PointNet++網絡對點云中的目標進行分類與分割,解決了長期以來原始點云特征提取學習的瓶頸,但PointNet++所需的計算復雜度太高,且適用于室內場景,不能滿足室外場景的需求。國內學者對三維目標的特征提取提出了不同的三維處理模型[11-12]。2018年,Qi等[13]又提出了輕量化、高精度的Frustum PointNets實現室外場景的三維多目標檢測模型。
基于應用場景的相似性和任務同一性,本文沿用了與Frustum PointNets思路一致的網絡結構。但校園場景中存在著與地圖信息無關的目標,比如行人、車輛,在最終場景地圖中需要對其進行檢測以及剔除[14-15]。因此本文提出了一種在校園場景下檢測和剔除多類目標的多源數據融合的目標檢測與剔除網絡D-FPN(delete-frustum PointNet)。
D-FPN整體網絡設計流程如圖6所示,包括目標檢測、目標剔除、單幀三維場景重建。下面簡單說明圖6中各模塊的作用。
圖6 D-FPN網絡整體流程Figure 6 D-FPN overall network flowchart
圖6中特征提取、區(qū)域建議網絡、ROI池化是一個類似于Faster-RCNN的二維圖像目標檢測網絡,先使用特征提取卷積層來提取圖像的特征,接著用區(qū)域建議網絡獲取感興趣區(qū)域,ROI池化用于修正位置,最終由邊界框回歸模塊和類別預測模塊來輸出目標的位置和類別信息。本文所使用的訓練數據為KITTI數據集[16]中的行人和車輛數據,二維圖像目標檢測模塊經神經網絡訓練后,在測試集上對車輛識別的平均精準率為94.3%,對行人識別的平均精準率為86.7%,兩類目標的平均精準率為91%。圖7所示為本文算法在KITTI驗證集上對于行人和車輛的檢測效果。
圖7 車輛行人檢測Figure 7 Vehicle and pedestrian detection
二維圖像目標檢測結果作為后一階段網絡的輸入信息。在得到圖像中目標所在的位置后,通過投影獲取包含目標的截錐體點云,即得到一個小范圍的點云場景。再使用Pointnet三維語義分割子網絡完成對目標的實例分割(semantic segmentation),得到一個包含目標每個點的語義掩膜。通過一個轉換網絡和坐標變換,將所得的目標點云轉換到坐標系的中心位置,方便接下來對點云進行邊界框的回歸。Pointnet三維邊界框回歸子網絡是點云的回歸網絡,需要對目標點云進行旋轉、平移,得到目標點云在相機坐標系下的中心位置以及長、寬、高。
經過在KITTI數據集上訓練后,本文三維點云目標檢測模塊在測試集上對車輛和行人識別的平均精準率分別為79.3%和53.1%。網絡的測試效果如圖8所示,圖8(a)為二維空間行人檢測結果,圖8(b)為三維空間中的行人在預測的三維包圍框中。
圖8 特定場景下行人檢測Figure 8 Pedestrian detection in images
三維點云建模所得到的地圖是整個校園內的場景,但其中存在著一些冗余的信息。圖9中物體剔除目的是剔除校園場景地圖中無關的信息,即可能出現的行人與車輛。
圖9 剔除目標后的單幀場景Figure 9 Single scene after frame culling target
針對所檢測到的與地圖信息無關的目標,下一步需要將其在整個場景去除。由于二維圖像中存在紋理連續(xù)和空間遮擋,無法單獨將目標剔除,而三維點云中并不存在嚴格的遮擋與紋理,目標單獨存在于三維空間中,因此可單獨將目標分離出來。如圖8所示,利用目標三維邊界框信息,結合標定參數把相機坐標系中的信息經過剛體旋轉變換到雷達坐標系中。最終把位于邊界框內的目標點歸一化到原點,完成目標的剔除并得到單幀無目標場景的三維模型,再進行可視化。在圖8的行人檢測基礎上,經目標剔除后的單幀激光雷達點云場景如圖9所示。
在實際的數據采集過程中,無法匹配的動態(tài)噪聲點會通過建圖過程消除掉,但是對于靜態(tài)目標,必須結合建圖和檢測過程來去除。
對應多幀點云建圖結果和單幀點云目標剔除結果具體實現思路有2種:第1種是先對每一幀場景進行處理,將處理后的單幀場景進行動態(tài)SLAM匹配建圖,不過這樣無法保證處理的幀率滿足建圖的實時性,導致存在丟幀問題,所構建地圖誤差太大無法使用;第2種思路是先完成建圖過程,對所建的地圖和單幀檢測的結果進行配準,這樣融合處理后的結果,能夠保證場景的高效性與準確性。
本文基于第2種思路使用LeGO-LOAM進行初步建模,其坐標系與單幀所采數據并不一致,需要將不同坐標系下點云統(tǒng)一到同一坐標系下進行點云的配準[17-19],如圖10所示。在配準算法中,采用基于最小二乘的最優(yōu)配準方法ICP[18]算法,計算點云地圖與單幀點云間的最優(yōu)剛體變換矩陣,即2個坐標系下的剛體旋轉矩陣[R/T]。本文實驗在ROS系統(tǒng)中進行,采用PCL(point cloud library)點云庫中的ICP點云配準算法工具,將單幀點云下目標檢測與剔除結果和點云建模地圖融合,最終實現整個場景的重現,并保存了無冗余信息的地圖模型。
圖10 單幀與多幀點云間的配準Figure 10 Match between single frame and multiframe point cloud
本文實現了基于多源數據的三維場景重建系統(tǒng),整個系統(tǒng)主要是基于ROS系統(tǒng)來完成。首先利用ROS將相機和雷達采集的數據傳入系統(tǒng)并保存,然后使用LeGO-LOAM點云建模算法完成對采集的離線數據的建圖并保存地圖模型。同時利用D-FPN算法檢測每幀RGB圖像和點云數據,將每一幀圖像和點云及其在雷達坐標系下的目標邊界框信息進行保存。調用ROS系統(tǒng)下PCL點云庫中的ICP配準工具將離線點云地圖和含目標的單幀點云進行一一配準得到轉換關系并保存,最終在ROS中利用保存的點云地圖、單幀點云、轉換關系將檢測到的三維目標統(tǒng)一轉換到點云地圖中,完成無冗余信息的三維場景重建,保存最終模型,為項目下一步研究做準備。
如圖11所示為實際實驗場景中的測試結果,圖11(a)為LeGO-LOAM算法建模結果,圖11(b)為系統(tǒng)輸出結果,可以看出圖11(a)中的實驗樓下停放的車輛目標被完整剔除了。
圖11 場景重現Figure 11 Scene reconstruction
基于搭建的硬件平臺與軟件框架,以激光雷達和廣角相機采集的多源數據為基礎,使用一種輕量級的 LeGO-LOAM算法初步完成點云地圖的重現。針對地圖中與場景無關的數據,采用計算機視覺中多源傳感器數據融合的目標檢測方法對無關目標進行剔除,然后使用點云配準方法實現數據的融合,最終在特定校園場景中實現了無關目標剔除的三維場景重現,達到了預期的目標。未來在實際應用中,針對硬件實現的成本以及效率問題,下一步可能會通過加入GPS、IMU等不同類型的傳感器來完成模型精度的提升。在算法設計層面,可通過多種算法集成的方式來節(jié)約成本。