侯陽(yáng)陽(yáng) 王 歡
(南京理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院 南京 210094)
無(wú)人飛行器(Unmanned Aerial Vehicle)在軍事偵察、搶險(xiǎn)救災(zāi)、地質(zhì)勘探、交通運(yùn)輸、輸油管線(xiàn)檢測(cè)等方面具有重要的實(shí)際應(yīng)用價(jià)值。這些應(yīng)用中,視覺(jué)傳感器由于具有重量輕、功耗低、隱蔽性好、信息豐富等優(yōu)點(diǎn),已被各種UAV普遍使用。當(dāng)前UAV的一個(gè)主要研究方向是利用視覺(jué)傳感器提升其自主導(dǎo)航和場(chǎng)景理解能力,其中,道路檢測(cè)是視覺(jué)導(dǎo)航和場(chǎng)景理解的重要基礎(chǔ),例如,固定翼無(wú)人飛行器著陸時(shí)需要準(zhǔn)確檢測(cè)出跑道位置;利用UAV實(shí)現(xiàn)目標(biāo)偵察時(shí),道路信息可以為目標(biāo)檢測(cè)與跟蹤提供重要信息[1~2]。
道路檢測(cè)的研究大多集中于地面車(chē)載以及遙感衛(wèi)星拍攝的圖像。前者傳感器離地面一般2m~3m,拍攝正前方道路場(chǎng)景,后者距地面數(shù)十公里,而無(wú)人飛行器一般飛行高度在100m~300m,前下方或正下方俯視拍攝,高度和視角的差別導(dǎo)致所拍攝的道路大小和形狀與前兩者有明顯區(qū)別,針對(duì)前兩者設(shè)計(jì)的道路檢測(cè)算法并不適用于無(wú)人飛行器道路圖像。
近年來(lái),學(xué)者們提出了一些專(zhuān)門(mén)針對(duì)無(wú)人飛行器的道路檢測(cè)方法[3~9]。如Zhou H和Kong H在文獻(xiàn)[10]中利用圖像分割獲得候選區(qū)域,并使用霍夫變換檢測(cè)直線(xiàn)段,再利用直線(xiàn)段與區(qū)域的關(guān)系篩選道路區(qū)域?qū)崿F(xiàn)道路檢測(cè)。Hosang J和Benenson R通過(guò)學(xué)習(xí)道路結(jié)構(gòu)模式,使用匹配的方法搜索相同模式的區(qū)域作為道路區(qū)域[11]。文獻(xiàn)[12]提出了一個(gè)綜合道路檢測(cè)跟蹤系統(tǒng),使用離線(xiàn)道路像素建立初始道路顏色模型,采用圖割方法實(shí)現(xiàn)道路的分割,并在序列圖像上利用特征點(diǎn)匹配實(shí)現(xiàn)道路的跟蹤。檢測(cè)和跟蹤協(xié)同工作,跟蹤出現(xiàn)漂移時(shí)重新啟動(dòng)檢測(cè)模塊,正確跟蹤時(shí)在線(xiàn)更新道路顏色模型。
然而這幾種方法應(yīng)用范圍較為受限,文獻(xiàn)[10]中的方法針對(duì)沙漠圖像處理效果較好,因?yàn)樗玫降闹狈綀D分割和樸素貝葉斯方法在復(fù)雜環(huán)境下分割效果不佳;文獻(xiàn)[11]中的方法需要初始給出一幀道路圖像進(jìn)行模式提取,并獲得校正透視投影效應(yīng)的相關(guān)參數(shù)。文獻(xiàn)[12]中的方法需要手工獲得道路的顏色樣本構(gòu)建初始顏色模型,而學(xué)習(xí)一個(gè)能針對(duì)各種道路的通用顏色模型幾乎是不可能的。
為此,本文提出一種基于筆畫(huà)寬度變換的無(wú)人機(jī)視覺(jué)道路檢測(cè)方法。該方法首先利用了筆畫(huà)寬度變換來(lái)得到道路寬度,并對(duì)其進(jìn)行改進(jìn)使得道路寬度圖像更加準(zhǔn)確;然后通過(guò)道路特有的形狀特征和顏色特征自動(dòng)找出道路區(qū)域;最后去除道路區(qū)域類(lèi)別中的干擾和毛刺,實(shí)現(xiàn)道路的準(zhǔn)確檢測(cè)。在典型公開(kāi)數(shù)據(jù)集上的實(shí)驗(yàn)證明本文方法適于檢測(cè)多種道路,準(zhǔn)確性上優(yōu)于傳統(tǒng)的方法。
筆畫(huà)寬度變換最初是針對(duì)自然場(chǎng)景的文本檢測(cè)所提出的[13],由于文本字符具有相對(duì)穩(wěn)定的筆畫(huà)寬度,而非文本字符的筆畫(huà)寬度往往變化很大,因此在文本字符和非文本字符之間具有很高的區(qū)分度。考慮到航拍圖像的道路區(qū)域也具有較強(qiáng)的寬度一致性,因此,我們可以利用SWT來(lái)進(jìn)行航拍圖像的道路檢測(cè)。
筆畫(huà)寬度變換是一種局部的圖像操作,利用每個(gè)像素的顏色信息得到每個(gè)像素最有可能的筆畫(huà)寬度值,其核心問(wèn)題就是計(jì)算圖像中每一個(gè)像素最有可能的筆畫(huà)寬度值[14]。它的基本流程是:
1)建立一幅與原圖像一樣大小的圖像,稱(chēng)為寬度圖像,初始化寬度圖像中的每個(gè)像素值為無(wú)窮大;
2)對(duì)原圖像提取邊緣點(diǎn),從任一邊緣點(diǎn)出發(fā),沿該點(diǎn)的梯度方向搜索其他邊緣點(diǎn),如果找到一個(gè)其它邊緣點(diǎn),且其梯度方向正好與搜索方向一致(dθ<T=π/6),則將出發(fā)點(diǎn)與該點(diǎn)的空間位置距離賦予寬度圖像中連接這兩點(diǎn)的線(xiàn)段上所有像素點(diǎn)的值;
3)由于寬度圖像的每個(gè)點(diǎn)可能在上述過(guò)程中被不止一次的賦值,故每次賦值總是與原有值進(jìn)行比較。如果比原有值小,則進(jìn)行賦值,即每個(gè)像素總是記錄所屬于的最細(xì)筆畫(huà)的寬度。
圖1給出了SWT的示意圖。其中點(diǎn) p是考察的邊緣點(diǎn),點(diǎn)q是在 p點(diǎn)梯度方向上尋找到的滿(mǎn)足方向一致條件的另一個(gè)邊緣點(diǎn),滿(mǎn)足條件如式(1)所示。寬度圖上線(xiàn)段pq上的所有像素點(diǎn)的值被賦予為像素點(diǎn)p和像素點(diǎn)q的歐氏距離||p-q||。
圖1 SWT算法示意圖
傳統(tǒng)的SWT方法需要在輸入圖像的灰度圖上使用Canny邊緣檢測(cè)算子,進(jìn)一步得到筆畫(huà)寬度圖像。但是實(shí)驗(yàn)發(fā)現(xiàn),直接對(duì)航拍圖像使用SWT會(huì)存在一些缺點(diǎn):對(duì)于高紋理區(qū)域(比如樹(shù)木植被),存在很多背景雜亂邊緣點(diǎn),這會(huì)降低效率并產(chǎn)生干擾。為此,本文考慮使用基于分區(qū)域的Canny邊緣檢測(cè)得到更為準(zhǔn)確的邊緣圖像[15],以此來(lái)改進(jìn)筆畫(huà)寬度變換,具體步驟為
1)按照一定準(zhǔn)則對(duì)圖像進(jìn)行分區(qū)。分區(qū)時(shí)需要保證各分區(qū)的邊緣有一些重疊,以使輪廓連續(xù);
2)對(duì)每個(gè)分區(qū)分別進(jìn)行自適應(yīng)的邊緣檢測(cè),得出相應(yīng)的分區(qū)輪廓;
3)最后按照一定準(zhǔn)則來(lái)連接各個(gè)分區(qū),還原出最終的邊緣圖。
這個(gè)方法相當(dāng)于把對(duì)一幅完整圖像的Canny邊緣檢測(cè)過(guò)程分成了各個(gè)子圖像的邊緣檢測(cè)過(guò)程。使用分區(qū)域的Canny邊緣檢測(cè)得到準(zhǔn)確的邊緣圖像,再按照算法流程獲得筆畫(huà)寬度圖像,最終的結(jié)果一定程度上可以解決上述問(wèn)題。圖2給出了改進(jìn)SWT前后的筆畫(huà)寬度圖像對(duì)比。
圖2 改進(jìn)前后的筆畫(huà)寬度圖像對(duì)比
從上一步我們可以得到筆畫(huà)寬度圖像,這時(shí)也還是一個(gè)個(gè)具有寬度信息的像素,所以我們要根據(jù)一些規(guī)則把特征相似的像素合并成區(qū)域(即自底向上的一個(gè)過(guò)程),以最終實(shí)現(xiàn)道路檢測(cè)。
鑒于道路區(qū)域的寬度和顏色具有較高的一致性,并且道路在空間上具有連續(xù)性,我們可以使用K均值聚類(lèi)算法。K均值算法的基本思路是:先選K個(gè)初始類(lèi)均值,然后將每個(gè)像素歸入均值離它最近的類(lèi)別并計(jì)算出新的類(lèi)均值;迭代執(zhí)行前面的步驟直到新舊類(lèi)均值的差小于某一閾值。
通過(guò)筆畫(huà)寬度變換,每個(gè)像素獲得了道路寬度。利用寬度特征,再結(jié)合RGB顏色值,共獲得了4維特征向量,如式(2)所示,其中V/maxV表示像素寬度的歸一化。
本文使用這個(gè)4維特征向量進(jìn)行聚類(lèi)。實(shí)驗(yàn)證明,將具有寬度的像素聚成3個(gè)類(lèi)可以取得較好結(jié)果。
接下來(lái)我們需要從這3個(gè)類(lèi)中選出屬于道路區(qū)域的類(lèi)別,這里使用了變異系數(shù)Var這個(gè)特征,對(duì)每個(gè)分類(lèi)圖像求筆畫(huà)寬度的平均值,然后根據(jù)變異系數(shù)Var來(lái)度量筆畫(huà)寬度變化的大小。
其中,mean是指筆畫(huà)寬度的平均值,N是指區(qū)域內(nèi)的像素個(gè)數(shù),xi是指區(qū)域內(nèi)某一點(diǎn)像素的筆畫(huà)寬度。由于一個(gè)連通區(qū)域內(nèi)文本的筆畫(huà)寬度一般都會(huì)保持穩(wěn)定,Var值越大就代表筆畫(huà)寬度的變化越大,此類(lèi)別是道路區(qū)域的概率就越低。我們?nèi)ar值最小的類(lèi)別為含有道路區(qū)域的類(lèi)別。具體結(jié)果如圖3所示。
圖3 利用K均值聚類(lèi)得到道路區(qū)域
從上一步處理我們得到了包含道路區(qū)域的類(lèi)別,但這并不是我們最終的檢測(cè)結(jié)果。從圖3可以看出,得到的道路區(qū)域并不十分準(zhǔn)確,圖片中除了道路區(qū)域還包含許多干擾區(qū)域和毛刺,因此需要進(jìn)一步處理來(lái)得到更好的檢測(cè)結(jié)果。這里,我們利用霍夫變換找出直線(xiàn)然后選取區(qū)域[16]。具體步驟如下:
1)對(duì)于原圖像4(a),使用筆畫(huà)寬度變換得到道路寬度特征,然后結(jié)合道路的顏色特征,通過(guò)聚類(lèi)的方法獲得含有道路區(qū)域的類(lèi)別,如圖4(b)所示;
2)對(duì)上一步得到的道路區(qū)域類(lèi)別圖像進(jìn)行霍夫變換,得到所有可能的直線(xiàn),如圖4(c)所示,同時(shí)我們需要求得直線(xiàn)上每個(gè)點(diǎn)的位置信息;
3)接下來(lái),對(duì)第一步得到的二值圖像4(b)進(jìn)行輪廓提取,可以獲得圖像的所有連通區(qū)域。再利用第二步得到的直線(xiàn)點(diǎn)的位置信息,可以做一個(gè)判定:對(duì)于一個(gè)連通區(qū)域,如果存在一條直線(xiàn),確切的講應(yīng)該是線(xiàn)段,線(xiàn)段上的大部分點(diǎn)(這里取80%)都落在此連通區(qū)域內(nèi),則保留這個(gè)連通區(qū)域;如果不滿(mǎn)足這個(gè)條件,則將這個(gè)連通區(qū)域去除,如式(4)所示即可得到篩選后的連通區(qū)域圖像:
4)再經(jīng)過(guò)一些簡(jiǎn)單的后處理,即可得到最終的檢測(cè)結(jié)果,如圖4(d)所示。
圖4 去除道路區(qū)域中的干擾
本文算法在一臺(tái)i5CPU(2.6G Hz)和4G內(nèi)存的64位PC機(jī)上使用Matlab2013a實(shí)現(xiàn)。實(shí)驗(yàn)所用到的數(shù)據(jù)集有兩個(gè),其一是文獻(xiàn)[4]提供的的lin數(shù)據(jù)集,包含沙漠場(chǎng)景的多幅圖片,全部被用于性能測(cè)試;其二,我們通過(guò)Google圖像搜索自建了一個(gè)包含20幅圖像的數(shù)據(jù)集,包含多種復(fù)雜的場(chǎng)景。
基于本文方法的道路檢測(cè)過(guò)程如圖5所示。
圖5 算法檢測(cè)過(guò)程
1)定量分析
本文引入文獻(xiàn)中[17]的評(píng)價(jià)方法,定量地描述本文算法的性能。在該方法中,檢測(cè)結(jié)果包含4個(gè)類(lèi)別,如表1所示。
表1 定量評(píng)估方法定義
其中,TN表示groundtruth和檢測(cè)結(jié)果都為非路區(qū)域的像素點(diǎn)個(gè)數(shù);FN表示groundtruth為道路區(qū)域,檢測(cè)結(jié)果為非路區(qū)域的像素點(diǎn)個(gè)數(shù);FP表示groundtruth為非路區(qū)域,檢測(cè)結(jié)果為道路區(qū)域的像素點(diǎn)個(gè)數(shù);TP表示groundtruth和檢測(cè)結(jié)果都為道路區(qū)域的像素點(diǎn)個(gè)數(shù)。本文使用錯(cuò)誤率ER來(lái)體現(xiàn)算法的檢測(cè)精度:
本文所提出方法與文獻(xiàn)中提出的算法,在不同數(shù)據(jù)集中,各項(xiàng)性能指標(biāo)平均統(tǒng)計(jì)結(jié)果對(duì)比如表2所示??芍?,利用霍夫變換的算法耗時(shí)最少,但是錯(cuò)誤率最高,這是因?yàn)槠涮幚磉^(guò)程較為簡(jiǎn)單;基于圖割的算法準(zhǔn)確率有所提高但是耗時(shí)較高。與文獻(xiàn)中兩種算法相比,本文的算法錯(cuò)誤率最小,并且在耗時(shí)方面處于兩者之間,算法性能有所提升。
表2 各項(xiàng)性能指標(biāo)對(duì)比
2)定性分析
使用圖割模型實(shí)現(xiàn)道路區(qū)域的分割,初始需要訓(xùn)練圖像來(lái)建立道路區(qū)域和背景區(qū)域的顏色高斯混合模型,進(jìn)而作為數(shù)據(jù)項(xiàng)用于圖割模型,且跟蹤過(guò)程中,提供了種子區(qū)域需要盡可能充分。初始檢測(cè)訓(xùn)練樣本不充分時(shí)的檢測(cè)結(jié)果,以及在跟蹤過(guò)程中不夠充分的檢測(cè)結(jié)果。前者由于構(gòu)建GMM模型中,一些具有特殊顏色的道路,以及道路上的陰影,由于沒(méi)有充分的樣本,在構(gòu)建的GMM模型中不占主要成分,而導(dǎo)致圖割模型檢測(cè)結(jié)果不理想,后者,由于跟蹤誤差的累積導(dǎo)致,導(dǎo)致道路和非路區(qū)域樣本發(fā)生的錯(cuò)誤,導(dǎo)致分割結(jié)果的錯(cuò)誤。
利用概率霍夫變換來(lái)提取道路的方法,需要用到全局分割。同時(shí)實(shí)驗(yàn)發(fā)現(xiàn),該方法依賴(lài)道路和背景顏色存在較大差異,對(duì)道路分割和邊緣提取均構(gòu)成較大影響,對(duì)彎曲道路檢測(cè)準(zhǔn)確性較低。
相比而言,本文方法使用筆畫(huà)寬度變換,更能反映道路的寬度特征。錯(cuò)誤率較低,且對(duì)于彎曲的道路檢測(cè)效果很好。三種方法的檢測(cè)結(jié)果對(duì)比如圖6所示。
利用視覺(jué)傳感器自動(dòng)實(shí)現(xiàn)道路檢測(cè)是無(wú)人飛行器環(huán)境感知與視覺(jué)導(dǎo)航重要的研究?jī)?nèi)容。本文首先利用了自然場(chǎng)景文字檢測(cè)中的筆畫(huà)寬度變換算法來(lái)得到道路寬度,并對(duì)其進(jìn)行改進(jìn)使得道路寬度圖像更加準(zhǔn)確;然后使用道路特有的形狀特征和顏色特征,通過(guò)聚類(lèi)的方法自動(dòng)找出含有道路區(qū)域的類(lèi)別;最后去除道路區(qū)域類(lèi)別中的干擾和毛刺,實(shí)現(xiàn)道路的準(zhǔn)確檢測(cè)。通過(guò)定量實(shí)驗(yàn)證明,本文算法與現(xiàn)有算法相比提高了檢測(cè)精度,并且由于對(duì)道路的寬度信息比顏色等信息普適性更高,拓展了本文算法的適用范圍。此外,算法兼顧了處理效率。
圖6 算法檢測(cè)結(jié)果對(duì)比