王步云,李宏偉,趙 姍
(鄭州大學地球科學與技術學院,河南 鄭州 450000)
道路兩側的車輛、垃圾桶與桿狀交通設施(如路燈、監控、道路交通標志和廣告牌等)是在城市環境中普遍存在的目標對象,它們的語義信息、姿態與位置信息對于智慧城市精細化管理與基礎設施管理與維護提供了數據基礎與保障,對于智慧城市建設具有重要的作用[1]。LiDAR作為一種正迅速發展的新型測繪系統,可以快速采集城市場景中目標表面的點云數據,獲取精確的三維地理信息,已被廣泛應用于數字城市建設、基礎設施維護、高精度地圖等各種領域[1-3]。
三維激光點云數據記錄了場景中目標的三維位置與反射強度信息,點云數據的處理面臨以下3方面的挑戰:地物種類多、點密度分布不均及數據存在空洞不完整,導致很難直接從點云中自動精確提取完整的目標。針對從三維點云中自動提取目標的問題,學者們進行了廣泛的研究,現有的目標提取方法主要可分為兩類:基于點云的方法和基于圖像與點云融合的方法。
深度學習作為近些年來迅速發展的新興方法,已率先在二維視覺領域成功解決各種問題,也有很多學者嘗試將深度學習引入三維點云處理領域[4]。部分學者將三維的點云投影至二維視角下(如前視視角和鳥瞰視角)[5-6],然后使用處理二維圖像的CNN進行處理;或將點云數據劃分為體素柵格[7-8],對三維空間分割后,采用三維卷積的方式處理,但這種方法的精度容易受體素分割的影響,且計算量較高。不同于前兩類方法對點云進行預處理,文獻[9]提出了PointNet,直接在三維點云上應用神經網絡模型,實現了點云的端到端輸出,隨后學者們聚焦于逐點學習并充分利用點與點之間的結構信息,先后提出了Point Net++[10]、PointSIFT[11]、Point CNN[12]等模型。文獻[13]提出了RandLA-Net,將隨機采樣代替更為復雜的選擇點的方法,從而減小了運算量,使得神經網絡能夠輕便地在大規模點云場景中運行。但由于點云數據具有數據量大、存在不完整空洞、數據標注成本高等特點[14],基于深度學習的點云目標提取方法在城市場景分割和分類領域還需要進一步研究。
基于圖像與點云融合的方法一般是將結構不同的圖像和點云數據轉換至同一數據結構及坐標體系中,利用圖像中的信息輔助檢測點云中的目標。有研究人員將點云投影為二維平面視角圖像,如俯視圖、前視圖等[5,15],然后采用基于圖像的深度網絡提取特征進行融合處理,以此生成精確的目標檢測結果,但在點云轉換過程中會損失有用的信息。對此,有學者借助圖像中檢測出的邊界框生成三維視錐體[16-17],然后對視錐體內的點云進行更精細的目標搜索。
綜上所述,融合圖像與點云數據能夠充分利用兩者的優勢互補,但在城市場景中,利用點云數據進行目標識別仍面臨以下問題:①數據量大,數據處理計算量大;②場景中的目標復雜多樣,基于單一特征的目標識別與分割方法在整體場景中精度較低;③對于三維點云訓練數據的標注成本高。因此,本文進行如下設計與改進:①利用同一場景下的影像輔助進行點云的路側多目標識別,先對影像進行語義分割,然后在對應位置提取候選目標點云;②利用點云中目標的連續性與完整性對點云進行聚類,以提高分類結果的準確性與完整性。
本文提出了一種融合點云與全景影像的路側多目標識別方法,充分利用點云數據中空間幾何信息及全景影像中的語義特征提升路側車輛、垃圾桶和桿狀設施的分類精度。首先使用Mask R-CNN對全景影像進行語義分割,識別全景影像中的目標并得到對應的掩碼(mask);然后將點云按照外部定向參數投影生成對應的全景深度圖像,分別提取出落入各個掩碼中的投影點并恢復其三維形式得到候選點云目標。對于各個候選目標,采用基于密度的雙重聚類方法進行聚類,首先采用基于密度的DBSCAN(density-based spatial clustering of applications with noise)算法對其進行聚類,并取各個候選目標中點數最多的簇作為初次分類結果;然后根據點云目標的空間完整性進行二次聚類,最終實現對車輛、垃圾桶和桿狀設施的精確分類,整體流程如圖1所示。

圖1 整體流程
首先對全景影像進行實例分割,從而實現在全景影像中目標的自動識別。與語義分割不同,實例分割可以將同一類中的不同對象進一步分割。本文選擇將端到端的Mask R-CNN[18]網絡作為實例分割模型,Mask R-CNN借鑒了語義分割網絡Faster R-CNN[19]的兩階段結構:第1階段掃描圖像生成提議區域(region proposal),即可能包括目標的區域;第2階段對提議區域進行預測目標種類與BBox回歸,然后在特征網絡基礎上加入了一個全連接的分割分支,在進行回歸與分類的同時輸出對應的二值掩碼,以說明給定像素是否為目標的一部分。因此,本文采用Mask R-CNN對全景影像進行實例分割,識別出圖像中的車輛、垃圾桶與桿狀交通設施3類目標,獲得對應的二維掩碼,如圖2所示。

圖2 實例分割掩碼
深度圖像(depth images)也稱為距離影像(range images),是指將從圖像采集器到場景中各點的距離作為像素值的圖像。距離影像一般可以使用深度相機直接采集或將點云通過坐標轉換生成,通過影像對應的外方位元素生成對應的距離影像,可以同時將場景中地物的二維與三維分布相聯系。
首先對三維點云數據進行預處理,使用統計濾波去除其中的離群點與噪聲點;然后采用布料模擬濾波算法[20]將點云分為地物點云與地面點云兩部分,去除點云中的地面點。
將點云轉換為與全景影像對應的距離影像,需要利用全景影像的外方位元素對點云進行坐標轉換,使點云中的點與圖像中的像素一一對應。由于點云與全景影像分別屬于不同的維度,為此對點云進行降維處理,利用全景影像的成像模型將點云從三維空間投影至二維平面。首先將點云數據從WGS-84坐標系下的UTM投影坐標轉換至POS系統中局部坐標系下的坐標;然后通過系統的初始轉換參數R和T,將點云從激光雷達坐標系轉換至全景相機坐標系,使得點云與全景影像處于同一參考系下,轉換公式為
(1)
(2)
R=RXRYRZ
(3)

將點云從全景相機坐標系轉換至以相機所處位置為球心的球坐標系下,計算公式為
(4)
再將點云從球坐標系轉至全景影像所在的像素坐標系下,至此完成激光點云從三維空間到對應二維全景影像平面的轉換,計算公式為
(5)
式中,H和W分別為全景影像的高與寬;u和v為圖像中的像素坐標。
將點云按照式(1)—式(5)從三維空間映射至二維空間,獲得與全景影像對應的深度圖像,此時圖中的每個點既代表三維空間中的一個LiDAR點,同時又與全景影像中的像素點相對應。以深度圖為媒介,通過圖像中的二維目標信息獲得三維點云中的目標,利用1.1節模型獲得的全景影像上目標的二維掩碼(如圖3所示),可以計算深度圖中落入目標掩碼中的點,并將其恢復成三維形式,得到候選的目標點云。

圖3 預測掩碼與全景深度圖像相疊加
與三維點云不同,全景影像屬于二維形式,因此在相機拍攝時,由于視角問題會產生遮擋與被遮擋的情況,這對于基于深度圖的點云分類會造成很大的影響。本文提出一種基于二次分類的點云目標分類方法解決這種問題。首先對于遮擋問題,經過投影落入二維圖像中掩碼的三維點中,除了目標點本身外,一般還會存在目標背后的非目標噪聲點。對此,采用基于密度的DBSCAN算法對提取出的點進行聚類,DBSCAN算法是一種基于密度的空間聚類算法,通過預先設定好的鄰域距離閾值與密度閾值,可以將空間中的數據點劃分為多個三維點集組成的簇。一般可以認為在目標掩碼對應的點云中,目標點云占據主體地位,而被遮擋的噪聲點云相對而言點數較少,因此選取聚類結果中點數量最多的簇作為初次聚類結果。
初次聚類如圖4所示。圖4(a)為車輛點云,方框中為由于視角問題被車輛遮擋造成的噪聲點云,經過投影落入二維圖像掩碼中的三維點除了包括目標本身外,還可能包括其他非目標的噪聲點。圖4(b)為對應的初次聚類結果,可以看出,經過初次聚類之后,可以很好地去除噪聲點。
對于被遮擋問題,由于全景影像中的目標也可能被其他物體遮擋,或由于激光雷達與全景相機之間的外方位元素中存在誤差; 同時,對于影像的目標掩碼預測也無法實現完全正確的分割效果,使得生成的二維掩碼無法與點云中的目標完全準確對應,從而導致得到的目標點云分類結果存在缺失與不完整現象。針對這種問題,可以認為在三維空間中,目標點云與非目標點云是不連續的,而目標點云本身是一個連續的整體,因此,本文在初次聚類結果的基礎上提出了基于空間連通性與完整性的二次聚類方法。
首先,將初次分類結果點云中的點依次分別標記為1,2,…,n(n為初次分類目標的總數),未被歸為任何類的點被視為背景點,將其標記為0。其次,對于各個初次分類結果,遍歷其中的所有點,搜索其K近鄰的所有點中背景點個數n。然后,判斷n是否達到預先設定的閾值:若是,將所有K近鄰點標記為當前類;否則將其視為背景點,仍然標記為0。最后,遍歷所有點直至全部被標記為分類點或背景點。
二次聚類結果如圖5所示,圖5(a)、(c)的方框內分別為被遮擋的殘缺車輛點云與垃圾桶點云,由于二維掩碼與三維點云無法完全準確的對應,導致經過投影落入二維圖像掩碼中的候選點云目標存在殘缺與不完整現象;圖5(b)、(d)分別為對應的二次聚類結果,可以看出,經過基于目標空間完整性與連通性的聚類之后,最終得到了完整的目標點云。
在八核3.6 GHz處理器、32 GB內存的電腦上進行試驗,使用顯卡為NVIDIA GeForce RTX 2080 super,對目標的分類方法采用Python語言實現。試驗所需數據主要是使用Geo-SLAM公司的背包式移動測量設備ZEB-Horizon進行采集的,包括一個Velodyne VLP-16激光雷達與一臺由4個魚眼鏡頭組成的全景相機。激光雷達的掃描距離為100 m,視場角為360°×270°,全景相機與激光雷達之間的外部定向參數已經標定,相機分辨率為5500×11 000像素。使用該設備在鄭州大學主校區采集了三維點云數據及對應位置的全景影像,圖6和圖7分別展示了試驗所使用的全景影像數據與激光點云數據。

圖6 全景影像數據

圖7 激光雷達點云數據
首先在試驗區域中選擇了106張分辨率為5500×11 000像素的全景影像進行語義標注,為方便數據的訓練,將全景影像裁剪為前進方向與左右方向的3部分正方向區域。然后通過數據增強處理(旋轉和翻轉等)對數據集進行擴充,最終得到3780張分辨率為3667×3667像素的影像作為訓練數據集。最后利用Mask R-CNN作為分割網絡進行訓練,對全景影像進行實例分割得到全景影像中待識別目標的二維掩碼。
本文的目標識別算法主要包括4個參數:初次聚類中的鄰域距離閾值ε和密度閾值MinPts,二次聚類中K近鄰搜索的k值與背景點個數閾值n。對于初次聚類中的鄰域距離閾值ε,取值過大會使每一類別中點的個數變多,無法有效去除噪聲點;取值太小又會使大部分點不能聚類。經過試驗,對候選目標點云進行DBSCAN聚類時鄰域距離閾值ε和密度閾值MinPts分別設置為0.2和5可取得較好的結果。對于二次聚類中K近鄰搜索的k值與背景點個數閾值n,當k取值太大時,會將接近目標的非目標點也識別為當前分類,從而導致誤識別現象產生;當k取值太小時,又會無法有效地解決識別目標不完整的問題,因此考慮到真實世界中物體的完整性與連續性,經過多次試驗,相關參數的詳細設置見表1。

表1 參數設置
圖8顯示了利用本文算法對鄭州大學主校區數據集進行點云目標識別的結果。可以看出,在最初的候選點云生成部分,盡管由于視角遮擋,各組結果均出現了不同程度的誤識別與漏識別現象,但經過本文提出的二次聚類方法處理后,最終均得到較好的識別結果。如圖8(c)所示,在最初生成的候選點云中,被車輛所遮擋的垃圾桶的一部分與車輛歸為一類,但經過本文方法處理后得到了完整的點云分類結果,相互遮擋的垃圾桶、車輛等均被正確識別;如圖8(e)所示,由于圖像和點云間存在誤差,使得獲取的初始候選點云包含較多的噪聲點,將車輛后的部分建筑物也標記為車輛,但經過本文提出的聚類方法優化后,可以得到較完整與純凈的目標點云。說明本文方法在真實復雜的環境下也可以不受前景點與背景點的影響,有效識別目標點云。
為了證實本文方法的有效性,使用Cloud Compare軟件對目標點云進行手工標注,并將其作為真實值,采用精確率(P)、召回率(R)與F1值進行定量評價,各類目標的試驗結果見表2。計算公式為

表2 目標識別精度

(6)
(7)
(8)
式中,TP、FP和FN分別為正確識別、錯誤識別與漏識別的目標個數。
由表2可以看出,由于影像輔助的原因,對于3類目標的召回率均很高,表明本文方法對城市場景中的3類地物目標都能夠識別。其中,車輛的識別精度較高,精確率與召回率分別為96.64%與99.04%,而桿狀設施識別的精確度較低,分析場景中目標的分布特點可知:相對于桿狀設施,車輛在影像中占比較大,這使得點云與全景影像間的配準誤差對識別車輛造成的影響小于對桿狀設施的識別。總體而言,本文方法通過影像分割的輔助引導,可以較好地識別出場景中的車輛、垃圾桶與桿狀設施目標。
雖然本文方法在整體上可以取得較好的效果,但對于部分情況仍然會存在錯誤。如圖9(a)—(b)所示,路燈、垃圾桶與其他非目標物直接接觸在一起,導致了誤識別現象的發生。此外,即使先對圖像與點云進行了配準,其中仍然會存在部分標定誤差。同時,由于全景相機本身的成像特性,對距離成像位置較遠的目標存在較大的變形現象,更加擴大了標定誤差對于識別結果的影響,使得預測掩碼與目標點云無法對應,最終導致誤識別與漏識別現象的發生。如圖9(c)—(d)所示,路燈占比較小,從而放大了點云與全景影像之間不對齊造成的影響,導致將路燈后面的建筑物錯誤地識別為路燈。對此,可以針對在多幀影像中的同一個目標,去除圖像中面積較小的mask,選擇距離攝影位置較近的識別結果選取候選點云,從而提升識別的精度。

圖9 部分識別錯誤結果
本文通過分析點云與全景影像之間的空間映射關系,為充分利用影像中的語義信息與點云中的空間位置信息,提出了一種融合點云與全景影像的路側多目標識別方法。一方面,通過將全景深度圖像作為媒介,獲取點云中與圖像目標區域對應的點云;另一方面,通過分析物體在真實世界中的連續性與完整性,解決了影像視角與標定問題等帶來的目標遮擋與被遮擋。試驗結果表明,3類目標的準確率分別為96.64%、92.68%和90.74%,驗證了本文方法的準確性。目前本文方法仍存在部分不足,對于在影像中占比過小且分辨率過低的遠距離目標物,容易發生誤識別現象。此外,本文算法的參數仍需經過手動多次調整,并未做到全自動的目標提取,后續會加強該方面的研究。