彭 博,蔡曉禹,周 濤,李少博,張有節(jié),段連飛
(1. 山地城市交通系統(tǒng)與安全重慶市重點實驗室,重慶 400074; 2. 重慶交通大學(xué) 交通運輸學(xué)院,重慶 400074;3. 城市交通管理集成與優(yōu)化技術(shù)公安部重點實驗室,安徽 合肥 230088; 4. 重慶市交通規(guī)劃研究院,重慶 401147;5. 安徽科力信息產(chǎn)業(yè)有限責(zé)任公司,安徽 合肥 230088)
城市智能交通系統(tǒng)建設(shè)的基礎(chǔ)和關(guān)鍵在于交通信息獲取。目前,傳統(tǒng)交通信息的檢測方式有感應(yīng)線圈、地磁設(shè)備、超聲波、視頻卡口和浮動車等,這些檢測方式可有效提取占有率、流量、速度等交通信息,在城市交通系統(tǒng)中得到了廣泛應(yīng)用。但是,這些方式卻難以從廣域視角直觀地提供路網(wǎng)連續(xù)交通流信息。
2002年,美國運輸署和國家航空航天局開展了專項研究,結(jié)果顯示無人機在交通監(jiān)控管理領(lǐng)域具有較好的可行性[1]。由于小型無人機具有檢測區(qū)域廣、經(jīng)濟成本低、不干擾地面交通、可檢測多種交通參數(shù)等優(yōu)勢,受到了美國[1]、德國、俄羅斯[2]、韓國及中國[3]等國家管理部門和研究院所的重視,并開展了一系列研究,包括無人機路徑規(guī)劃[3]、交叉口監(jiān)測[4]、交通參數(shù)提取[5]和交通事件檢測[2,6]等。研究結(jié)果表明:利用無人機采集交通視頻,在交通信息采集、城市交通監(jiān)測等方面具有很大潛力,但同時也面臨車輛識別難、計算量大等挑戰(zhàn)。
無人機交通監(jiān)控與信息采集關(guān)鍵在于無人機視頻車輛檢測,目前學(xué)界對航拍視頻/圖像的車輛識別已有一定研究積累,例如:K.KOZEMPEL等[7]利用多個形態(tài)邊緣濾波器來快速識別航拍圖像的車輛;CHENG Penggen等[8]通過背景消除和背景配準(zhǔn)技術(shù)來識別無人機視頻車輛;劉慧等[9]針對背景像素移動提出了SURF特征穩(wěn)像和光流法向量相結(jié)合的方法來解決低空視頻車輛檢測;C.L.AZEVEDO等[10]采用中值背景差分法來識別無人機視頻車輛;張新[11]利用背景差分法來識別無人機視頻車輛,并在此基礎(chǔ)上提取交通信息、標(biāo)定城市道路車輛跟蹤模型;YU Xinran等[12]根據(jù)顯著性信息和Haar-like局部外形特征,建立了遙感圖像車輛檢測方法。這些方法均是基于背景差分和Haar-like、Harris角點、HoG、SURF、SIFT等圖像特征來進行車輛識別。
總而言之,專門針對無人機視頻的車輛檢測研究還處于起步發(fā)展階段,相應(yīng)的定量評價分析研究也較少。此外,無人機視頻場景廣而復(fù)雜,現(xiàn)有的車輛檢測算法適用性也有所不足,檢測準(zhǔn)確率和全面性有待于提高。故筆者提出了一種新的基于形態(tài)分析的無人機視頻車輛自動識別方法,并基于548幀圖像進行了系統(tǒng)的測試與分析。
筆者以邊緣檢測圖像為基礎(chǔ),基于候選目標(biāo)圖像的骨架形態(tài)特征和區(qū)域形態(tài)特征進行車輛識別。所采用的視頻數(shù)據(jù)由無人機懸停于道路正上方100~200 m處、攝像機鏡頭垂直向下拍攝,視頻分辨率為3 840 px × 2 160 px(寬×高)。算法基本流程如圖1。其步驟如下:
1)圖像預(yù)處理。人工勾勒出感興趣區(qū)域(ROI, region of interest),并對圖像進行灰度化處理可獲得ROI灰度圖像;
2)圖像骨架分析與處理。檢測ROI灰度圖像邊緣并據(jù)此生成圖像骨架,然后將骨架圖像分解為直線和曲線單元,最后根據(jù)鄰近性原則進行重連接。該步驟生成重構(gòu)骨架圖像,可增強候選目標(biāo)圖像結(jié)構(gòu)的封閉性、連續(xù)性和完整性。
3)基于區(qū)域形態(tài)分析的車輛識別。填充重構(gòu)骨架圖像的封閉區(qū)域,利用膨脹和腐蝕操作、基于矩形度、面積、外接橢圓軸長等閾值規(guī)則識別車輛。
圖1 算法流程Fig. 1 Algorithm flowchart
隨著無人機云臺和減震技術(shù)不斷發(fā)展,經(jīng)主/被動減震處理,懸停拍攝的無人機視頻能較好地避免抖動現(xiàn)象,因此懸停無人機視頻的廣域場景相對穩(wěn)定。由于車輛識別時僅需針對一定道路范圍進行處理,因此有必要通過人工勾畫出ROI,后續(xù)檢測工作只需對該區(qū)域展開運算,進而降低減少運算量、節(jié)省運行時間,也可改善檢測效果,如圖2。
圖2 ROI勾畫Fig. 2 ROI sketching
根據(jù)既有視頻和圖像識別研究的常見做法,筆者將彩色圖像轉(zhuǎn)化為灰度圖像,后續(xù)步驟針對灰度圖像ROI展開邊緣檢測、骨架重構(gòu)和區(qū)域形態(tài)分析處理?;叶葓D像如圖3,其中的矩形線框范圍為ROI。
圖3 灰度圖像Fig. 3 Grayscale image
對于視頻圖像目標(biāo)檢測而言,邊緣信息提取可大幅度地減少數(shù)據(jù)量,剔除大部分無關(guān)或弱相關(guān)信息,保留圖像結(jié)構(gòu)屬性,因此許多研究均以邊緣特征進行目標(biāo)識別。文中算法以Canny邊緣檢測圖像為基礎(chǔ),提取、分解和重構(gòu)圖像骨架,為車輛識別奠定基礎(chǔ)。
3.1.1 Canny邊緣檢測
Canny邊緣檢測算法是一種廣泛應(yīng)用的經(jīng)典邊緣檢測算法。該算法主要思想和步驟為:① 應(yīng)用高斯濾波消除圖像噪聲;② 通過Sobel算子卷積獲得圖像梯度強度與方向;③ 應(yīng)用非極大抑制技術(shù)(non-maximum suppression)保留每個像素點上梯度強度的極大值,而刪掉其他的值;④通過雙閾值技術(shù)界定弱邊界和強邊界,并進行邊緣連接處理、形成邊緣圖像。
以圖3灰度圖像為例,對ROI進行Canny邊緣檢測,獲得邊緣強度圖像;然后利用簡單閾值分割法或OTSU分割法,得到二值邊緣圖像,如圖4。
圖4 邊緣強度和二值化邊緣Fig. 4 Edge amplitude and binary edges
3.1.2 生成亞像素級骨架圖像
為對ROI邊緣圖像的骨架圖進行分解和重構(gòu),需生成亞像素級骨架圖像。亞像素(sub-pixel)的概念如圖5,每個物理像素可以分為m×m個亞像素,用數(shù)學(xué)插值算法可計算每個亞像素值,通過亞像素圖像處理可更大限度利用圖像信息。
圖5 亞像素Fig. 5 Sub-pixel
ROI邊緣圖像中的線條寬度為1px。圖5中:每個像素的中心亞像素相連即可構(gòu)成亞像素骨架。以圖4中ROI邊緣圖像左上角第1個候選車輛區(qū)域為例,其亞像素骨架生成如圖6。
圖6 亞像素骨架生成Fig. 6 Generation of sub-pixel skeleton
利用Ramer多邊形逼近算法[13]將亞像素骨架分解為直線段或弧線段,其主要步驟為:① 沿邊界分配若干點作為初始點,按順序連接初始點形成初始多邊形;② 在任意兩相鄰斷點之間,沿著骨架曲線段找到距離兩斷點連線的垂直距離最大的點,若該距離d>d1,那么把這一點作為新的斷點繼續(xù)分割;③ 不斷進骨架分解,直到全部滿足閾值條件d≤d1;④ 設(shè)定閾值d2(d2 圖7 骨架分解Fig. 7 Skeleton decomposition 步驟①~③骨架分解算法偽代碼如下,第④步與之類似,此處不再贅述。 算法1:圖像骨架分解算法(“←”表示賦值) ①:int SkeletonNum←骨架圖像的曲線數(shù)量; ②:intd1←距離閾值; ③:For inti=1 to SkeletonNum; ④:Curve[i]←第i個骨架曲線; ⑤:InitPt[ ]←Curve[i]的初始斷點集; ⑥:Line[ ]←任意初始斷點形成的線段集; ⑦:maxDist←Curve[i]與? Line最大垂直距離; ⑧:pTemp←Curve[i]上產(chǎn)生maxDist的點; ⑨:If maxDist>d1; ⑩:從斷點pTemp分割Curve[i]; 根據(jù)骨架分解結(jié)果,對于任意相鄰骨架曲線,若其端點距離小于閾值d3,則連接這兩個端點,處理結(jié)果如圖8。由圖8可看出:通過骨架連接處理,能有效增強候選目標(biāo)圖像結(jié)構(gòu)的封閉性、連續(xù)性和完整性,有助于車輛識別。 圖8 骨架重構(gòu)過程Fig. 8 Skeleton reconstruction process 由于骨架連接結(jié)果仍為亞像素級圖像,為便于開展后續(xù)車輛識別工作并降低運算成本,還需將其還原為像素級圖像(圖8)。根據(jù)圖4中的 ROI邊緣圖像,處理后得到的像素級骨架圖像如圖9。 圖9 骨架重構(gòu)圖像Fig. 9 Reconstructed skeleton image 主要利用膨脹、腐蝕、填充、閉運算這4種形態(tài)學(xué)算子對骨架重構(gòu)圖像進行處理,同時結(jié)合連通域的面積、矩形度、等效橢圓長短軸等多種形態(tài)特征提取車輛目標(biāo)。 膨脹利用t×t的結(jié)構(gòu)元素使目標(biāo)區(qū)域邊界向外部擴張,可用來填補圖像區(qū)域的部分空隙。腐蝕與膨脹相反,是利用t×t結(jié)構(gòu)元素使目標(biāo)區(qū)域邊界向內(nèi)部收縮,從而消除尺寸較小且無意義的物體。先膨脹后腐蝕的過程稱為閉運算,可用來填補物體內(nèi)細(xì)小空洞、連接鄰近物體、平滑邊界。填充則是將輪廓包圍的區(qū)域全部充實,以消除物體內(nèi)部的空洞和間隙,如圖10。左圖為中圖的腐蝕效果,反之,中圖為左圖的膨脹效果,而右圖為中圖的填充效果。閉運算效果如圖11。 圖10 腐蝕、膨脹和填充Fig. 10 Erosion, dilation and filling 圖11 閉運算Fig. 11 Closed operations 在圖像中,像素是最小單位,每個像素周圍有8個鄰接像素,常見的鄰接關(guān)系有2種:4鄰接與8鄰接。4鄰接有上下左右4個鄰接點;8鄰接有8個鄰接點,包括了上下左右及對角線位置的點,如圖12。 圖12 4鄰接和8鄰接Fig. 12 4-neighbourhood and 8-neighbourhood 根據(jù)4鄰接或8鄰接關(guān)系,彼此連通的像素點形成區(qū)域稱為連通域。在圖像處理中,常常對連通域展開計算分析,以達(dá)到圖像分割、噪聲去除和目標(biāo)識別等目的。筆者基于8鄰接關(guān)系建立連通域,并展開面積、矩形度和等效橢圓長短軸等形態(tài)特征計算分析。 1)面積S:連通域所含像素總數(shù); 2)矩形度R:連通域面積S與最小外接矩形面積W比值,反映區(qū)域?qū)ζ渫饨泳匦蔚某錆M度(圖13); 圖13 矩形度Fig. 13 Rectangularity 3)等效橢圓[14]長短軸:每個連通域可求得一個對應(yīng)的橢圓,其方程與連通域轉(zhuǎn)動慣量形式一致。假定某橢圓區(qū)域是均質(zhì)的且與連通域的轉(zhuǎn)動慣量相同,那么該橢圓參數(shù)就能反映前述連通域的特性,這個橢圓就稱為等效橢圓。據(jù)此可求得等效橢圓長軸ra和短軸rb(圖14)。 圖14 等效橢圓Fig. 14 Equivalent ellipse 車輛識別過程主要包括4個步驟:① 對骨架重構(gòu)圖像進行膨脹[15]、填充操作,獲得連通域圖像,結(jié)果如圖15(a);② 基于連通域矩形度、面積和等效橢圓短軸閾值,初步提取滿足條件的連通域,結(jié)果如圖15(b)。由圖15(b)可看出:此步驟剔除了一些面積較小的區(qū)域和狹長的車道標(biāo)線;③ 基于面積和等效橢圓長軸閾值,選擇較大的連通域,對其進行閉運算、膨脹和腐蝕操作,結(jié)果如圖15(c)。由圖15(c)可看出:該步驟有效分割了大型連通域,進一步消除了狹長的車道標(biāo)線和道路邊緣;④ 基于面積和等效橢圓短軸閾值篩選滿足要求的連通域,將其作為最終的車輛目標(biāo),結(jié)果如圖16。 綜上所述,算法主要利用形態(tài)學(xué)運算[16]對骨架結(jié)構(gòu)圖像進行線-面轉(zhuǎn)換,進而計算和分析連通域形態(tài)特征,最終識別車輛。步驟①~④的車輛識別算法偽代碼如下。 算法2:基于形態(tài)分析的車輛識別算法(“←”表示賦值) ①:Skeleton←骨架重構(gòu)圖像; ②:Image0←對Skeleton進行膨脹、填充處理; ③:R[i]、A[i]←第i個連通域的矩形度、面積; ④:ra[i]、rb[i]←第i個連通域等效橢圓的長軸長度、短軸長度; ⑤:For inti= 1 toM//M為Image0的連通域個數(shù); 圖15 連通域圖像Fig. 15 Connected component image 圖16 車輛識別結(jié)果Fig. 16 Vehicle detection result ⑥:IfR[i]∈[r1,r2] orA[i]>s1orrb[i]∈[b1,b2]; ⑦:保留Image0第i個連通域//r1、r2、s1、b1、b2為閾值參數(shù); ⑧:End For // 令為Image1; ⑨:For intj=1 toN//N為Image1連通域個數(shù); ⑩:IfA[j]>s2orra[j]>a2//s2、a2為閾值參數(shù); 車輛識別結(jié)果存在著準(zhǔn)確檢測、漏檢等多種可能情況,可細(xì)分為如下4類:① 準(zhǔn)確檢測車輛,即單個輛車被準(zhǔn)確識別為一輛車;② 車輛重檢,即一輛車被檢測成兩個或多個車;③ 車輛漏檢;④ 其他物體被識別為車輛。為此,可對如下4個指標(biāo)性能進行評估,如式(1)~(4)。 PT=NT/NS (1) PR=NR/NS (2) PM=NM/NS (3) PW=(NR+NE)/NS (4) 式中:PT為正檢率;PR為重檢率;PM為漏檢率;PW為錯檢率;NT為檢測區(qū)內(nèi)準(zhǔn)確檢測的車輛數(shù);NR為檢測區(qū)內(nèi)被重復(fù)檢測的車輛數(shù);NM為檢測區(qū)內(nèi)被漏檢的車輛數(shù);NE為檢測區(qū)內(nèi)被檢測成車輛的非車輛物體個數(shù);NS為實際車輛數(shù),NS=NT+NM+NR。 由此可見:正檢率越高,重檢率、漏檢率和錯檢率越低,算法越優(yōu)。 在VS2013+Halcon11.0+OpenCV2.4.9環(huán)境下編制文中算法程序,識別無人機視頻車輛。對于每一幀檢測結(jié)果圖像,可分別由人工判讀出NT、NR、NM、NE和NS,進而計算出一組正檢率、重檢率、漏檢率和錯檢率。對548幀檢測結(jié)果圖像的評價指標(biāo)值進行統(tǒng)計分析,結(jié)果如表1。 由表1可看出:算法正檢率均值95.02%;重檢率均值為2.20%,表明算法很少將一輛車識別為多輛車;漏檢率均值2.77%、錯檢率均值為8.24%,即很少出現(xiàn)漏檢情況,也較少將其他物體誤認(rèn)為是車輛。4個評價指標(biāo)的均值和中值都顯示算法具有較優(yōu)的檢測效果。從標(biāo)準(zhǔn)差來看,正檢率、重檢率、漏檢率和錯檢率標(biāo)準(zhǔn)差分別為2.09%,1.67%,1.67%和2.56%,說明評價指標(biāo)值大都集中于均值附近、離散程度較小,檢測算法穩(wěn)定性較高。 表1 算法指標(biāo) Table 1 Algorithm indexes % 圖17是算法評價指標(biāo)值分布。由圖17可看出:① 只有7個樣本(占樣本總量的1.28%)的正檢率低于90%,分布于85.42%~ 89.89%;其余541個樣本(占樣本總量的98.72%)正檢率均高于90%,表明對于絕大部分圖像,正檢率都能達(dá)到較高水平② 有2個樣本重檢率為8.99%和8.33%,其余546個樣本重檢率均在6.52%以下,97.26%的樣本重檢率分布于0~5%,表明算法對車輛目標(biāo)分割效果較好,可保證車輛完整性;③ 漏檢率分布范圍為0~10.11%,其中只有1個樣本漏檢率為10.11%,其余樣本重檢率均在8.14%以下,表明車輛漏檢幾率較低;④ 錯檢率分布范圍為0~ 16.84%,其中有5個樣本錯檢率為15.12%、15.22%、15.79%、16.09%和16.84%,其余樣本的錯檢率均在15%以下,絕大部分集中于4%~12%,表明算法很少將其他物體誤判為車輛。 圖17 算法評價指標(biāo)值分布Fig. 17 Distribution of algorithm evaluation indexes 上述分析表明:該算法在正檢率、重檢率、漏檢率和錯檢率方面表現(xiàn)良好,對交通擁擠狀態(tài)下的車輛識別也比較準(zhǔn)確全面(圖16)。相對而言,算法錯檢率還不甚滿意,有待進一步改善。從測試結(jié)果來看:錯檢主要原因在于車道標(biāo)線或路面指路文字的形狀與車輛形狀較為相似,算法可能會將其誤識為車輛。如何有效區(qū)分車輛與路面非車輛物體,將是筆者下一步著重研究的課題。此外需說明的是,文中算法人工勾勒感興趣區(qū)域,適用于懸停拍攝的穩(wěn)定視頻。 筆者針對無人機視頻,提出了一種基于形態(tài)分析的車輛自動識別方法。該方法基于邊緣檢測生成亞像素級圖像骨架,然后對骨架圖像進行分解和重構(gòu),最后通過連通域形態(tài)學(xué)運算和形態(tài)分析識別車輛目標(biāo)。通過對548幀視頻圖像測試分析表明:算法具有較高的正檢率,而重檢率、錯檢率和漏檢率均較低。 文中方法可準(zhǔn)確有效地實現(xiàn)車輛識別,為基于無人機視頻的廣域交通信息(例如:車輛密度、車輛軌跡、車輛速度和加速度等)實時采集奠定基礎(chǔ),有望作為傳統(tǒng)交通信息采集技術(shù)(感應(yīng)線圈、定點攝像機、超聲波和浮動車等)的補充,為推動廣域中微觀交通流建模分析等相關(guān)研究,具有較大應(yīng)用價值和理論意義。由于交通場景復(fù)雜多樣,準(zhǔn)確無誤地識別低空視頻的車輛目標(biāo)仍充滿挑戰(zhàn),需要進行更全面測試和長期深入研究。3.3 圖像骨架重構(gòu)
4 基于形態(tài)分析的車輛識別
4.1 形態(tài)學(xué)算子簡介
4.2 連通域形態(tài)特征
4.3 基于形態(tài)分析的車輛識別算法
5 算法性能評價與分析
5.1 評價方法
5.2 評價結(jié)果分析
6 結(jié) 論