王玉茜,張雪濤,閆 飛,莊 嚴,
(1.大連理工大學控制科學與工程學院,大連 116024;2.大連理工大學人工智能學院,大連 116024)
近年來,隨著人類在人工智能、地圖構(gòu)建、圖像處理等領(lǐng)域取得突破性的科技進展,無人機和地面機器人也得到了迅速發(fā)展,二者各有利弊。一方面,無人機具有較廣的觀察視角,但其有效載荷低、續(xù)航時間有限;另一方面,地面機器人的視角受限制,但其有效載荷高、續(xù)航時間長[1]。如果利用無人機進行環(huán)境探索,從而引導地面機器人更快地完成作業(yè)任務(wù),即空地協(xié)作,吸引了諸多學者研究[2-6]。文獻[7]提出了一種基于鳥瞰圖導航地面機器人的概念證明。文獻[8]利用無人機空中建圖,進而驅(qū)動地面機器人進行避障和路徑規(guī)劃??盏貐f(xié)作可以拓寬地面機器人的有限視場[9-10],可以用于虛擬現(xiàn)實[11]、多機器人監(jiān)控[12-13]、協(xié)同作戰(zhàn)[14]。而如何利用無人機對地面環(huán)境建圖是空地協(xié)作領(lǐng)域發(fā)展的一個關(guān)鍵問題。
本文目標是使用無人機生成可供地面機器人使用的室外大范圍拓撲地圖。為此,本文提出了一種基于道路分割、圖像拼接和骨架提取的大范圍拓撲地圖構(gòu)建方法,其中,圖像拼接技術(shù)可實現(xiàn)室外大范圍場景的獲取,道路分割和骨架提取可實現(xiàn)拓撲地圖的構(gòu)建。
為實現(xiàn)拓撲化地圖的構(gòu)建,首先需要無人機對地面道路的準確觀測,即對場景中的道路進行準確分割。在道路分割領(lǐng)域,基于航拍圖像的道路檢測技術(shù)的應(yīng)用范圍越來越廣,道路識別也得到廣泛研究。文獻[15]基于視覺對車道線和道路邊界進行檢測,同時運用基于蒙特卡羅方法的置信度評價方法對待測圖像進行處理。該算法能夠有效地克服道路環(huán)境不佳的影響,并且計算耗時較小。然而,該算法僅適用于與環(huán)境背景特征相差較大的道路目標檢測,很難適用于背景環(huán)境復雜的無人機航拍圖像。文獻[16]提出了基于啟發(fā)式搜索連接的航拍圖像直線檢測方法,首先對圖像進行高斯濾波和邊緣檢測,然后利用啟發(fā)式搜索連接,提取出符合道路直線模型的直線,最終獲得檢測結(jié)果。該算法實現(xiàn)簡單并具有良好的抗噪性能。文獻[17]提出了基于霍夫變換的航拍圖像道路檢測,霍夫直線檢測作為直線提取的經(jīng)典算法,廣泛應(yīng)用于直線檢測領(lǐng)域。文獻[18]針對道路顏色與周圍環(huán)境顏色存在明顯區(qū)別的情況,提出了基于顏色識別的道路檢測,但航拍圖像受屋頂、樹木陰影、車輛等影響較大,不適合應(yīng)用此方法。隨著深度學習的發(fā)展,出現(xiàn)了多種基于神經(jīng)網(wǎng)絡(luò)[19-20]的航拍圖像道路提取方法,主要分為兩類:一類追求圖像分割的準確性,犧牲了時間;另一類則以快速為主,降低了準確性。為了兼顧時間與準確性,本文采用時間與準確性均衡的D-LinkNet 語義分割神經(jīng)網(wǎng)絡(luò)[21]。
其次,通過圖像拼接實現(xiàn)大范圍場景的獲取,在圖像拼接領(lǐng)域,Szeliski 提出了包含相機三維旋轉(zhuǎn)運動的圖像拼接技術(shù),該方法首先求解透視矩陣,然后求解單應(yīng)性矩陣的參數(shù),調(diào)整焦距和旋轉(zhuǎn)矩陣以消除累積誤差,最后采用加權(quán)融合的方法將拼接圖像合成到一起。Brown 等[22-23]使用基于不變局部特征的物體識別技術(shù)來選擇匹配圖像,實現(xiàn)了無序圖像的全自動拼接,取得了較好的拼接效果。然而,當圖像數(shù)目較多時,邊緣圖像會發(fā)生畸變。為了解決這個缺陷,Gao 等[24]將場景劃分為背景平面和前景平面,用兩個單應(yīng)性矩陣分別對齊背景和前景,進而無縫拼接大部分現(xiàn)實場景。隨后,文獻[25]采用網(wǎng)格優(yōu)化的方法來解決圖像拼接問題,從形狀矯正的角度出發(fā),借鑒圖像縮放的Shape-Preserving 類方法,非重疊區(qū)域逐漸過渡到全局相似變換,并對整個圖像 增加相似變換約束,矯正拼接圖像的畸變,減小了投影失真。Lowe[26-27]提出了尺度不變特征變換(Scale-Invariant Feature Transform, SIFT)算法,其具有尺度不變性,可在圖像中檢測出關(guān)鍵點,對于光線、噪聲、微視角改變的容忍度也相當高,但SIFT 算法計算量大,匹配速度較慢。因此,Bay 等[28]提出了快速魯棒特征(Speeded Up Robust Features, SURF)算法,它是SIFT 算法的加速版,其性能可與SIFT 相媲美,且比SIFT 快三倍。SURF 善于處理模糊和旋轉(zhuǎn)的圖像,但不擅長處理視點變化和照明變化。為解決SIFT 特征的高昂計算代價以及對噪聲敏感的弱點,Rublee 等[29]提出了特征提取算法(Oriented FAST and Rotated BRIEF,ORB),該算法基于FAST 和BRIEF 特征提出了二值特征,大大減少了計算量,提高了匹配速度,實驗表明,ORB 算法在時間上比SIFT 快100 倍,比SURF 快10 倍,并且匹配效果也較好。在道路分割后進行圖像拼接,可減少拼接時提取特征點的數(shù)量,大大減少了匹配拼接的計算量。除此之外,為了進一步提高匹配速度,本文設(shè)計了基于GPU 加速的ORB 圖像拼接算法,可以兼顧實時性與準確性。
最后,關(guān)于地圖構(gòu)建,目前的地圖表示方法分為三類:柵格地圖、幾何地圖和拓撲地圖[30]。其中,拓撲地圖將環(huán)境表示為一張拓撲意義的圖,圖中的節(jié)點對應(yīng)環(huán)境中的拐點或交叉點,弧表示不同節(jié)點之間的通道,適合于表示大規(guī)模環(huán)境。為完成拓撲地圖的構(gòu)建,需要對道路分割后的大范圍場景進行骨架提取。一類方法是通過對所有道路線段求交來建立道路拓撲,但是在確定道路是否相交時難以選擇閾值。與此不同,用骨架表示目標圖像的連接拓撲和邊界信息,在機器人領(lǐng)域有著廣泛的應(yīng)用。圖像骨架提取,即提取目標在圖像上的中心像素輪廓,以目標中心為準,對目標進行細化,細化后的目標為單像素寬度。中軸線是一個典型的骨架模型,其具有簡單、完整等優(yōu)點。在此基礎(chǔ)上,研究人員提出了一系列基于細化的骨架提取算法,其大致可分為迭代和非迭代兩大類。在迭代算法中,又分為并行迭代和順序迭代兩種。Saeed 等[31]提出的K3M 算法則是順序迭代中應(yīng)用廣泛的方法之一,該類算法的思想是,假定從二值圖像中物體的邊界處同時開始燃燒,物體就會被逐步細化,但在燃燒過程中要保證滿足一定條件的點被保留或者被“燒掉”,以確定燃燒結(jié)束后,剩下最后一個像素寬度的圖像為圖像的骨架。該方法存在像素冗余問題,得到的骨架出現(xiàn)分叉、不平滑現(xiàn)象。并行迭代以Zhang并行快速細化算法最為經(jīng)典,該算法多應(yīng)用于文字骨架的提取,在連接性和輪廓噪聲抗擾度方面效果較好。本文使用骨架提取的方法進行拓撲化,將Zhang 并行快速細化算法應(yīng)用于拓撲地圖的構(gòu)建。
為了實現(xiàn)室外大范圍拓撲地圖構(gòu)建,本文提出了基于道路識別、圖像拼接、骨架提取集成的拓撲地圖構(gòu)建框架。具體而言,先由圖像拼接實現(xiàn)大范圍場景獲取,然后通過道路識別和骨架提取實現(xiàn)拓撲地圖構(gòu)建。由于所提策略先分割后拼接,實現(xiàn)了方法的實時性。此外,設(shè)計了基于GPU加速的ORB 圖像拼接算法,提高了拼接效率。
本文的整體設(shè)計方案可分為三部分:道路分割、圖像拼接、拓撲構(gòu)建,采用邊分割邊拼接、先分割后拼接的方案,前者可減少同時參與拼接的圖像數(shù)目,增加拼接準確性,后者可減少拼接時特征點檢測與匹配的計算量,增加拼接速度,流程圖如圖1 所示。
圖1 整體方案流程圖Fig.1 Flow chart of the general scheme
道路系統(tǒng)是一個非常復雜的系統(tǒng),其主要特點是連接特性和寬度特征,傳統(tǒng)的道路檢測的方法包括基于啟發(fā)式搜索連接的直線檢測方法[15]、基于霍夫變換的直線檢測[16]、基于顏色分割的道路檢測[17]等。但是航拍圖像中的道路極易受到非道路因素的干擾,如陰影、車輛、與道路連通的開放區(qū)域(如小型停車場、籃球場)等,這些干擾不可避免,且將直接影響道路的連接特性和寬度特征。為了提高道路分割的準確性,選用D-LinkNet 語義分割神經(jīng)網(wǎng)絡(luò)對道路進行分割。D-LinkNet 網(wǎng)絡(luò)包含編碼器、中心部分、解碼器三部分,組成結(jié)構(gòu)如圖2 所示。
D-LinkNet 使用ResNet34 作為網(wǎng)絡(luò)的編碼器,編碼模塊由最大池化層和若干殘差塊組成,四個編碼模塊依次分別具有3、4、6、3 個殘差塊。單個殘差塊如圖3 所示,在普通卷積的基礎(chǔ)上增加恒等映射,可以有效解決隨著卷積神經(jīng)網(wǎng)絡(luò)深度的增加而出現(xiàn)的訓練誤差增大的問題。激活函數(shù)選用非線性函數(shù)ReLU,殘差塊輸出可表示為
圖2 D-LinkNet 結(jié)構(gòu)圖Fig.2 Structure chart of D-LinkNet
圖3 單個殘差塊Fig.3 Single residual block
當輸入、輸出維度發(fā)生變化時,需要在恒等映射過程中對x做線性變換Ws,相當于加入了1×1 卷積層,如下:
在深度網(wǎng)絡(luò)中為了增加感受野且降低計算量,通常會進行降采樣,這樣雖然可以增加感受野,但會使得空間分辨率降低,而空洞卷積的出現(xiàn),巧妙地解決了這一問題??斩淳矸e是一種功能強大的內(nèi)核,可用于調(diào)整特征圖的感受野而不降低特征圖的分辨率,使得整個網(wǎng)絡(luò)識別能力更強、接收域更大、融合多尺度信息,廣泛應(yīng)用于圖像分割、識別任務(wù)中。中心層部分由空洞卷積層組成,空洞卷積如圖4 所示。
圖4 膨脹系數(shù)r = 2 的空洞卷積Fig.4 Dilated convolution with r = 2
假設(shè)空洞卷積的卷積核大小為k,膨脹系數(shù)為r,則其等效卷積核k′為
當前層感受野Ri計算公式如下:
其中,Ri-1表示上一層感受野,Si-1表示之前所有層步長之積。
D-LinkNet 中心部分的空洞卷積層結(jié)合級聯(lián)模式和并行模式,可以靈活調(diào)整特征圖的感受野,且每個路徑的感受野不同,可以有效地融合多尺度特征。其結(jié)構(gòu)如圖5 所示,當堆疊的空洞卷積層膨脹系數(shù)r分別為1、2、4、8 時,每層的感受野一次為3、7、15、31。
圖5 中心部分結(jié)構(gòu)圖Fig.5 Diagram of central part
道路分割是一個二分類問題,訓練模型時,損失函數(shù)采用Dice 損失和二值交叉熵損失結(jié)合的方式。Dice 損失大多用于樣本極度不均衡的情況,一般情況下使用Dice 損失會對反向傳播有不利的影響,使得訓練不穩(wěn)定,因此,選用二值交叉熵損失函數(shù)與Dice 損失相結(jié)合的方式進行損失計算。
其中,yi表示樣本i真實標簽類別,pi表示樣本i預測輸出類別。
D-LinkNet 是一種高效的語義分段神經(jīng)網(wǎng)絡(luò),它具有跳接、殘差塊、空洞卷積和編碼器-解碼器體系結(jié)構(gòu)的優(yōu)勢,在計算和存儲方面非常有效。
無人機航拍受飛行高度、攝像頭視角范圍、焦距等因素的影響,單張圖像涵蓋的室外場景范圍較小,為獲得室外大范圍圖像,需要拍攝多幅圖像,通過圖像拼接技術(shù),把各幅圖像間重疊的部分進行提取、匹配、拼接,從而得到大范圍室外場景。圖像拼接算法結(jié)構(gòu)如圖6 所示,主要包含圖像特征點提取與匹配、圖像配準、圖像融合三部分,其中,特征點提取與匹配、圖像配準兩步實現(xiàn)了基于GPU 的CUDA 并行加速處理。
圖6 圖像拼接算法結(jié)構(gòu)圖Fig.6 Diagram of image stitching algorithm
ORB 是一種快速特征點提取和描述的算法,分為兩部分,分別是特征點提取和特征點描述。特征點提取是由FAST 算法發(fā)展來的,特征點描述是根據(jù)BRIEF 特征描述算法改進的。ORB 特征是將FAST 特征點的檢測方法與BRIEF 特征描述子結(jié)合起來,并在它們原來的基礎(chǔ)上做了改進與優(yōu)化。
圖像的特征點可以理解為圖像中比較顯著的點,如物體輪廓點、亮度變化分界點等。ORB 首先采用FAST 算法來檢測特征點,F(xiàn)AST 算法是公認的最快的特征點提取方法。選取圖像中某一像素為特征點,檢測該候選特征點周圍一圈的像素值,如果候選點周圍領(lǐng)域內(nèi)有足夠多的像素點與該候選點的灰度值差別夠大,則認為該候選點為一個特征點。在使用FAST 提取出特征點之后,給其定義一個特征點方向,以此來實現(xiàn)特征點的旋轉(zhuǎn)不變性,稱為oFAST 算法,ORB 算法提出使用矩法來確定FAST 特征點的方向。即通過矩來計算某特征點周圍的圖像區(qū)塊p內(nèi)的質(zhì)心,該特征點坐標到質(zhì)心形成一個向量作為該特征點的方向。對圖像求質(zhì)心時,每個像素點的值即該處的密度,利用圖像零階矩和一階矩可求得圖像質(zhì)心,矩定義如下:
其中,(u,v)是特征鄰域內(nèi)的點,I(u,v)為圖像灰度表達式。該矩的質(zhì)心為
假設(shè)特征點坐標為O,則向量即為該特征點的方向:
得到特征點后需要以某種方式描述這些特征點的屬性。這些屬性的輸出稱為該特征點的描述子。ORB 采用BRIEF 算法來計算一個特征點的描述子。該算法的核心思想是在某特征點周圍的圖像區(qū)塊p內(nèi),選取n對點對,把這n對點對的比較結(jié)果組合起來作為描述子。因此,BRIEF 描述子的輸出結(jié)果是一個二進制串的特征描述符。一個二值測試τ定義如下:
其中,像素x與像素y組成一對點對,p(x)、p(y)分別表示圖像區(qū)塊p內(nèi)像素x和像素y的灰度值。
BRIEF 描述子選取點對的時候,是以當前特征點為原點,以水平方向為X軸,以垂直方向為Y軸建立坐標系。當圖片發(fā)生旋轉(zhuǎn)時,坐標系不變,同樣的取點方法取出來的點卻不一樣,計算得到的描述子也不一樣,所以BRIEF 描述子不具備旋轉(zhuǎn)不變性。ORB 算法對BRIEF 描述子的這一缺點進行了改進,改進后的方法改變了坐標系的建立方式,以特征點為圓心,以特征點和選取區(qū)域質(zhì)心的連線為X軸建立平面坐標系,即利用oFAST 中求出的特征點的主方向θ,對特征點鄰域進行旋轉(zhuǎn),改進后的算法稱為Steer BREIF 算法。假設(shè)在某一特征點的鄰域內(nèi)選取n對點集,用S表示,則
其中,Rθ表示旋轉(zhuǎn)矩陣,Sθ表示旋轉(zhuǎn)后的點對位置。
BRIEF 描述子的一個優(yōu)秀特性為點對均值穩(wěn)定,方差大,區(qū)分性強,那么不同特征點的描述子就表現(xiàn)出的差異性越大,對匹配來說不容易誤配。但是當 BRIEF 沿著特征點的方向調(diào)整為Steered BRIEF 時,均值就漂移到一個更加分散式的模式,且方差變小,區(qū)分性降低,此時選取點對時就不能隨機選取,需要經(jīng)過比較選取出區(qū)分度大、關(guān)聯(lián)程度低的點對。ORB 算法的最后一步為特征點的匹配,當兩個描述子的相似度達到一定閾值時,可認為這兩個描述子代表的是同一個特征點。
圖像配準是一種確定待拼接圖像間的重疊區(qū)域以及重疊位置的技術(shù),通過匹配點對構(gòu)建圖像序列之間的變換矩陣,將兩張圖像轉(zhuǎn)換為同一坐標下,RANSAC 算法對于圖像變換矩陣的求解與精煉有較好的效果。RANSAC 算法首先隨機地選擇兩個點,通過這兩個點確定一條直線,并稱在這條直線的一定范圍內(nèi)的點為這條直線的支撐。這樣的隨機選擇重復數(shù)次后,具有最大支撐集的直線被確認為是樣本點集的擬合。
在特征點提取與匹配和圖像配準過程中,提取大量特征點,并完成大量描述子計算與匹配的數(shù)學計算,是圖像拼接程序耗時長、效率低的主要原因。由于顯卡具有優(yōu)秀的并行計算能力,為有效提高拼接效率,本文充分利用顯卡進行并行加速計算,大大提高了算法的運行速度。
根據(jù)配準時得到的變換矩陣,可以對相應(yīng)圖像進行變換以確定圖像間的重疊區(qū)域,并將待融合圖像映射到一幅新的空白圖像中形成拼接圖。若兩幅待拼接圖像之間亮度、飽和度存在差異,則會導致拼接后的圖像縫合線兩端出現(xiàn)明顯的明暗變化,此時,可采用加權(quán)平滑算法處理,即圖像重疊區(qū)域中像素點的灰度值由兩幅圖像中對應(yīng)點的灰度值加權(quán)平均得到。
其中,Pixel_L和Pixel_R分別為兩幅待拼接圖像中對應(yīng)點的灰度值,k為加權(quán)系數(shù)。
拓撲地圖由邊和節(jié)點構(gòu)成,用來表示道路的連通關(guān)系,使用骨架提取算法實現(xiàn)拓撲化,構(gòu)建出道路的拓撲地圖。骨架可理解為物體的中軸,骨架提取流程圖如圖7 所示。
圖7 骨架提取流程圖Fig.7 Flow chart of skeleton extraction
骨架提取主要包括以下步驟:首先,圖像細化。細化就是經(jīng)過層層剝離,從原圖像中去掉一些點,但仍要保持原來的形狀,直到得到圖像的骨架。其次,過濾。過濾使得任意兩骨架點不能緊靠在一起,兩點之間至少間隔一個空白元素。最后,檢測端點和交叉點。端點和交叉點即拓撲地圖中的節(jié)點,骨架即邊。
選用經(jīng)典的Zhang 并行快速細化算法,將輸入圖像二值化后選取其中某一像素點P1及其周圍相鄰8 個像素點,按圖8 所示順序標號。
圖8 像素排列示意圖Fig.8 A schematic view of the pixel arrangement
對圖像中的每個點進行遍歷,對每個像素為1 的點進行檢測,若符合以下條件1、2,且符合條件3、4 之一,則非骨架點,刪除該點。
條件1:2≤N(P1) ≤ 6,其中N(P1)為P1的8個鄰域中黑色像素的數(shù)目。
條件2:A(P1) = 1,其中A(P1)指的是鄰域像素按順序排列時像素值由0 變1 的次數(shù)。
條件3:P2×P4×P6= 0且P4×P6×P8= 0或者P2×P4×P8= 0且P2×P6×P8= 0。
條件4:P2×P4×P8= 0且P2×P6×P8= 0。
過濾部分實現(xiàn)每兩個白點之間不能緊靠在一起,即兩個點之間至少隔一個空白像素,若滿足P2+P3+P8+P9≥ 1,則刪除P1。檢測端點與交叉點部分首先需要確定卷積鄰域范圍,然后統(tǒng)計卷積范圍內(nèi)像素為1 的點的個數(shù),若個數(shù)高于給定閾值,則說明P1為交叉點,反之則為端點。圖9為圖像中部分像素排列情況。
圖9 部分像素排列情況Fig.9 Arrangement of partial pixel
為證明本文方案的有效性,在馬薩諸塞州道路數(shù)據(jù)集上進行驗證。首先,使用圖像標注工具labelme 對數(shù)據(jù)集中道路部分進行標記,制作出用于訓練及驗證的數(shù)據(jù)集,并完成對D-LinkNet 網(wǎng)絡(luò)的訓練。所作數(shù)據(jù)集共5300 幅圖像,其中80%用于訓練,20%用于測試,該部分基于NVIDIA GTX1080 顯卡配置下完成。其次,創(chuàng)建一個用于發(fā)送圖像的ROS 節(jié)點,而后進行道路分割,每完成一幅圖像的分割,便由ROS 節(jié)點發(fā)出該分割后的圖像,直至處理完全部圖像。圖10 給出了兩種不同場景下32 幅圖像的道路分割結(jié)果,單幅圖像程序運行時間約0.17 s,分割準確率達92.89%,具有較高的準確率與場景適應(yīng)性。
圖10 道路分割結(jié)果Fig.10 Result of the road segmentation
在圖像拼接部分,首先創(chuàng)建一個新的ROS 節(jié)點,用于接收道路分割后發(fā)送的圖像,當圖像數(shù)量達到兩幅即進行拼接,直到節(jié)點接收不到新的圖像消息。
圖像拼接采用基于GPU 的CUDA 并行加速方法,CUDA 處理圖像的時候,首先需要把Mat圖像上載到CUDA 數(shù)據(jù)單元GpuMat 對象中,然后對特征點提取及圖像配準進行并行處理,處理完成之后,再從GpuMat 下載數(shù)據(jù)到原始Mat 對象中,完成后續(xù)圖像融合操作。
本文比較了SURF 拼接算法、ORB 拼接算法以及GPU 加速后的ORB 算法的拼接耗時,各圖像拼接算法運行時間對比如表1 所示。
表1 三種拼接算法時間對比Table 1 Time comparison of three stitching algorithms
其中,SURF 拼接算法選取特征點的條件與ORB 算法不同,其提取的特征點個數(shù)遠大于ORB算法,因此SURF 算法在三種算法的比較中效率最低、耗時最長,ORB 算法效率居中,經(jīng)GPU并行加速后的ORB 算法效率更高、耗時更短。
四種不同場景下的圖像拼接與道路拓撲化結(jié)果如圖11~12 所示,由此可見,本文方法在多種不同場景中具有較好的適應(yīng)性與準確性。
圖11 圖像拼接結(jié)果Fig.11 Result of the image stitching
本文針對空地協(xié)作領(lǐng)域無人機室外道路觀測問題,提出了由道路分割、圖像拼接、骨架提取組成的基于視覺的無人機大范圍室外道路拓撲地圖的構(gòu)建方法。首先,成功地將基于D-LinkNet的航拍圖像道路分割和Zhang 并行快速細化算法 用于室外大范圍拓撲地圖構(gòu)建問題;其次,提出先分割后拼接的方案,大大減少了圖像拼接計算量,設(shè)計了基于GPU 加速的ORB 拼接算法,提高了拼接效率;最后,在INRIA aerial image 數(shù)據(jù)集上成功驗證了該方法的準確性和實時性。
圖12 道路拓撲化結(jié)果Fig.12 Result of the road topology