張欣,魏志恒,王兵
(1.河北大學(xué) 電子信息工程學(xué)院,河北 保定 071002;2.河北大學(xué) 數(shù)學(xué)與信息科學(xué)學(xué)院,河北 保定 071002)
在自動(dòng)駕駛系統(tǒng)中,為了讓汽車能夠安全行駛,避免追尾事故的發(fā)生,需要對(duì)前車以及前車所在位置進(jìn)行識(shí)別,判斷其是否為監(jiān)測(cè)車輛;再對(duì)本車與前方監(jiān)測(cè)車輛之間的車距進(jìn)行檢測(cè),并結(jié)合當(dāng)前的車速與交通法規(guī)判斷本車與前方監(jiān)測(cè)車輛之間是否為安全距離.這些問(wèn)題是自動(dòng)駕駛領(lǐng)域中的研究熱點(diǎn)之一.
針對(duì)車距檢測(cè),主要基于單目視覺(jué)[1-2]、雙目視覺(jué)[3]、多目視覺(jué)[4]、雷達(dá)[5-6]等方案.程瑤等[1]根據(jù)車牌在圖像中像素的數(shù)量實(shí)現(xiàn)車距的測(cè)量.梁炳春等[2]根據(jù)攝像機(jī)的小孔成像原理,通過(guò)坐標(biāo)變換的方式,將平面圖中的位置關(guān)系換算為真實(shí)距離.馬朝陽(yáng)等[3]基于雙目視覺(jué)獲取目標(biāo)物的深度信息對(duì)車距進(jìn)行檢測(cè).佘彩云等[4]基于多目視覺(jué),相比于雙目視覺(jué)提升了精度,增強(qiáng)了對(duì)不同環(huán)境的適應(yīng)能力.張海煥等[5]基于超聲波雷達(dá)進(jìn)行測(cè)距.黃智勇[6]基于毫米波雷達(dá)進(jìn)行測(cè)距.針對(duì)車速檢測(cè)問(wèn)題,主要基于單目視覺(jué)[7]、雙目視覺(jué)[8]、定位技術(shù)[9-10]等.顧柏園[7]基于單目視覺(jué),通過(guò)檢測(cè)一段車道線通過(guò)特定區(qū)域所需時(shí)間來(lái)計(jì)算車速.張書(shū)佩[8]基于雙目視覺(jué),利用雙目相機(jī)的圖像進(jìn)行三維還原,并計(jì)算其運(yùn)動(dòng)速度.祁昊等[9]應(yīng)用了GPS定位技術(shù)進(jìn)行測(cè)速.孫培嘉等[10]應(yīng)用了北斗定位技術(shù)進(jìn)行測(cè)速.
本文針對(duì)前車位置識(shí)別及安全車距監(jiān)測(cè)提出了一種單目視覺(jué)下的解決方案,相比于雙目視覺(jué)、多目視覺(jué)以及雷達(dá)和定位系統(tǒng)等方案,更簡(jiǎn)單方便,成本低.首先,通過(guò)單目攝像機(jī)拍攝的視頻圖像中前方所有車輛的輪廓與本車道及同向車行道分界線是否相交確定是否為監(jiān)測(cè)車輛.其次,依據(jù)國(guó)家標(biāo)準(zhǔn)規(guī)定的可跨越同向車行道分界線(以下簡(jiǎn)稱白色虛線)長(zhǎng)度及間隔,根據(jù)白色虛線的兩端點(diǎn)在像素坐標(biāo)系及空間坐標(biāo)系中的長(zhǎng)度,構(gòu)建轉(zhuǎn)換模型,計(jì)算前方監(jiān)測(cè)車輛與本車的真實(shí)車距.最后,根據(jù)白色虛線在視頻圖像幀中的位置變化計(jì)算本車的行駛速度,并依據(jù)交通法規(guī)判斷本車與前方最近的一輛監(jiān)測(cè)車輛之間是否為安全距離.
單目視覺(jué)下的前車位置識(shí)別及安全車距監(jiān)測(cè)系統(tǒng)分為4個(gè)主要部分:系統(tǒng)校準(zhǔn)、前車位置識(shí)別、車距檢測(cè)、車速檢測(cè).系統(tǒng)流程如圖1所示.
圖1 安全車距監(jiān)測(cè)系統(tǒng)流程Fig.1 Safety distance monitoring system flowchart
識(shí)別前車與本車是否處于同一車行道或壓線位置.首先在如圖2a所示的單目視頻幀圖像中,使用車道分界線識(shí)別算法[11]提取本車所在車道的同向車行道分界線二值圖,如圖2b所示;然后使用車輛識(shí)別算法[11]識(shí)別前車,并使用Canny算子提取前車輪廓,如圖2c所示;最后設(shè)本車道及車道分界線像素點(diǎn)坐標(biāo)集合為Φ1,前車輪廓像素點(diǎn)坐標(biāo)集合為Φ2,當(dāng)Φ1∩Φ2≠?時(shí),前車為監(jiān)測(cè)車輛.監(jiān)測(cè)車輛判定標(biāo)準(zhǔn)如表1所示.
a.原圖;b.同向車道分界線二值圖;c.提取前車輪廊.圖2 前車位置識(shí)別過(guò)程Fig.2 Vehicle ahead position recognition process
表1 監(jiān)測(cè)車輛判定標(biāo)準(zhǔn)Tab.1 Monitored vehicle determination criteria
車距檢測(cè)即從圖像中的像素車距計(jì)算出真實(shí)空間的車距.因此,需要構(gòu)建圖像的像素坐標(biāo)系與道路空間坐標(biāo)系的對(duì)應(yīng)關(guān)系轉(zhuǎn)換模型.圖3b為像素坐標(biāo)系示意圖,采用圖像視角,y軸的單位為與原點(diǎn)之間的像素?cái)?shù)量;圖3c為空間坐標(biāo)系示意圖,采用三維空間俯視視角,Y軸的單位為與原點(diǎn)之間的空間實(shí)際距離.以本車參考點(diǎn)作為兩坐標(biāo)系的共同原點(diǎn).
a.原圖;b.像素坐標(biāo)系示意;c.空間標(biāo)系示意.圖3 白色虛線在不同坐標(biāo)系中的示意Fig.3 Diagram of the white dotted line in different coordinate systems
從原點(diǎn)開(kāi)始將圖像中本車道右側(cè)(左側(cè)同理)每一條白色虛線的兩端點(diǎn)的y坐標(biāo)分別記為A、B、C、D、E、F、G、H.根據(jù)國(guó)家標(biāo)準(zhǔn)GB5768.3—2009《道路交通標(biāo)志和標(biāo)線 第3部分:道路交通標(biāo)線》[12]中的白色虛線在空間坐標(biāo)系中的實(shí)際距離(設(shè)計(jì)速度小于60 km/h的道路為2 m,不小于60 km/h的道路為6 m),以及白色虛線各端點(diǎn)在像素坐標(biāo)系中的坐標(biāo),擬合得到空間實(shí)際距離與像素坐標(biāo)系的縱坐標(biāo)近似為指數(shù)函數(shù)關(guān)系,如圖4所示,由此得到像素坐標(biāo)系與空間坐標(biāo)系的模型轉(zhuǎn)換經(jīng)驗(yàn)公式為
圖4 實(shí)際距離與像素坐標(biāo)系縱坐標(biāo)對(duì)應(yīng)曲線Fig.4 Curve of the real distance and the Y-coordinate of the pixel coordinate system
Y=iy-1,
(1)
其中,Y為空間坐標(biāo)系中縱坐標(biāo);y為空間坐標(biāo)系中的點(diǎn)在像素坐標(biāo)系中的縱坐標(biāo);i為待擬合參數(shù),與攝像機(jī)的安裝角度有關(guān).
根據(jù)交通法規(guī)規(guī)定,不同的車速下要保持不同的安全車距.因此在獲得本車與監(jiān)測(cè)車輛的車距基礎(chǔ)上,要對(duì)本車進(jìn)行車速檢測(cè).
單目視覺(jué)圖像中可以持續(xù)作為車速檢測(cè)參照物的只有白色虛線,而在只有白色實(shí)線(不可跨越同向車行道分界線)的情況下,按定速巡航處理.以圖像最底端白色虛線的上端點(diǎn)為參考點(diǎn),如圖5中點(diǎn)S1、S2所示,通過(guò)2相鄰圖像幀中參考點(diǎn)在像素坐標(biāo)系中的縱坐標(biāo)變化,結(jié)合2幀間隔時(shí)間t,代入公式(2)中計(jì)算本車在單位時(shí)間內(nèi)的平均車速近似瞬時(shí)車速v.
圖5 白色虛線參考點(diǎn)在兩相鄰圖像幀中的位置變化Fig.5 Reference point of the white dotted line in two adjacent image frames
v=(iyS1-iyS2)/t.
(2)
在上述車距檢測(cè)和車速檢測(cè)的過(guò)程中,需要確定本車原點(diǎn)O和參數(shù)i,而單目攝像機(jī)在不同的汽車上的安裝角度都會(huì)導(dǎo)致本車參考點(diǎn)的位置和圖像比例發(fā)生變化,因此在安裝后必須要進(jìn)行系統(tǒng)校準(zhǔn).
系統(tǒng)校準(zhǔn)方法是汽車在有白色虛線的公路上以一個(gè)固定車速勻速行駛,為了與25幀/s的視頻幀率匹配,建議車速為40 km/h或80 km/h.首先根據(jù)圖像底部的本車邊緣確定本車原點(diǎn);然后確定當(dāng)前道路的白色虛線長(zhǎng)度;再根據(jù)白色虛線上下端點(diǎn)在像素坐標(biāo)系中的坐標(biāo)求得i值.具體步驟如下所示:
步驟1確定本車原點(diǎn).從絕對(duì)安全的角度考慮,要保證檢測(cè)距離小于或等于實(shí)際距離,因此將圖像底部本車邊緣的上端點(diǎn)作為本車原點(diǎn),如圖6中點(diǎn)O所示.這就要求設(shè)備在安裝的過(guò)程中必須要在圖像底部露出一部分本車邊緣,才能夠保證系統(tǒng)的正常校準(zhǔn),否則無(wú)法確定本車原點(diǎn)的位置.
圖6 本車參考點(diǎn)位置Fig.6 Position of this vehicle reference point
步驟2確定當(dāng)前道路的白色虛線長(zhǎng)度d.國(guó)家標(biāo)準(zhǔn)[12]中規(guī)定白色虛線的長(zhǎng)度只有6 m或2 m 2種情況,因此假設(shè)當(dāng)前道路的白色虛線長(zhǎng)度為6 m,輸入當(dāng)前的估值車速,計(jì)算以該車速行駛6 m所需的時(shí)間,經(jīng)過(guò)該時(shí)間之后若白色虛線的上端點(diǎn)位于之前下端點(diǎn)的位置附近,則當(dāng)前道路的白色虛線長(zhǎng)度為6 m;如果位于之前下端點(diǎn)位置以下一段距離,則當(dāng)前道路的白色虛線長(zhǎng)度為2 m.
步驟3計(jì)算i值.根據(jù)白色虛線的兩端點(diǎn)A和B在像素坐標(biāo)系中的縱坐標(biāo),結(jié)合步驟2得到的當(dāng)前道路白色虛線的長(zhǎng)度d,代入公式iyB-iyA=d,求得i值.
實(shí)驗(yàn)數(shù)據(jù)共選取了50段用同一車載單目攝像頭拍攝的短視頻,每段視頻中本車都以不同的車速勻速行駛,每段視頻的時(shí)長(zhǎng)在10 s左右,視頻格式為avi,分辨率為960*540.實(shí)驗(yàn)硬件為Intel(R) Core(TM) i5處理器,2.50 GHz主頻,8 G內(nèi)存,操作系統(tǒng)為Windows10,軟件環(huán)境為Matlab R2016a,編程語(yǔ)言為Matlab.
根據(jù)《中華人民共和國(guó)道路交通安全法實(shí)施條例》[13]第八十條規(guī)定,機(jī)動(dòng)車在高速公路上行駛,車速超過(guò)100 km/h時(shí),應(yīng)當(dāng)與同車道前車保持100 m以上的距離,車速低于100 km/h時(shí),與同車道前車距離可以適當(dāng)縮短,但最小距離不得少于50 m.因此至少要對(duì)距離本車100 m以內(nèi)的前車位置做出準(zhǔn)確的識(shí)別.考慮到不同距離的前車位置識(shí)別準(zhǔn)確率會(huì)有所不同,因此分別對(duì)50 m以內(nèi)、50~80 m、80~100 m的前車位置識(shí)別準(zhǔn)確率進(jìn)行統(tǒng)計(jì),如表2所示.
表2 前車位置識(shí)別結(jié)果Tab.2 Position recognition results of the vehicle ahead
采用本文方法檢測(cè)車距的結(jié)果如圖7a所示,當(dāng)i值固定時(shí),隨著車距的增大,測(cè)量結(jié)果與實(shí)際距離之間的誤差也在加大.因此在實(shí)際應(yīng)用當(dāng)中,依據(jù)實(shí)測(cè)數(shù)據(jù)對(duì)式(1)進(jìn)行分段校正,將像素坐標(biāo)系中公路所在區(qū)域依照實(shí)際距離平均分成5段,每段確定一個(gè)平均i值,最終的檢測(cè)結(jié)果如圖7b所示.為了保證絕對(duì)安全的車距,要對(duì)車距計(jì)算結(jié)果進(jìn)行修正,在校準(zhǔn)階段計(jì)算每段的最大絕對(duì)誤差作為該段的修正值,如表3所示.在實(shí)測(cè)過(guò)程中用計(jì)算結(jié)果減去該段的修正值,使得檢測(cè)的距離一定小于等于實(shí)際距離.
a.固定i值檢測(cè)結(jié)果;b.分段i值檢測(cè)結(jié)果.圖7 車距檢測(cè)結(jié)果Fig.7 Detecting results of vehicle distance
表3 各段最大絕對(duì)誤差Tab.3 Maximum absolute error of each segment
由于在公路上行駛車輛的車速通常是漸變的,故利用短時(shí)間內(nèi)的平均車速代表瞬時(shí)車速.本文算法中的最小時(shí)間單位是視頻中相鄰2幀圖像的拍攝間隔時(shí)間,每1幀圖像計(jì)算1次車速;每計(jì)算1次車速后,將車速值放入一個(gè)集合中,當(dāng)集合中的元素累計(jì)達(dá)到5時(shí),計(jì)算集合中所有元素的平均值作為當(dāng)前的瞬時(shí)車速;清空集合,再將下一幀測(cè)得的車速放入集合中,如此循環(huán).使用本文方法檢測(cè)得到的車速與實(shí)際計(jì)算車速的最大絕對(duì)實(shí)驗(yàn)誤差約為2.70 km/h .為使檢測(cè)結(jié)果有益于安全駕駛,對(duì)計(jì)算結(jié)果進(jìn)行修正,使檢測(cè)車速大于等于實(shí)際車速,計(jì)算得到的車速值均為正誤差.
本文為使用單目視覺(jué)進(jìn)行前車位置識(shí)別、車距檢測(cè)及車速檢測(cè)提供了一種新的解決方案.通過(guò)實(shí)驗(yàn)分析,該解決方案可以有效地識(shí)別前車位置、監(jiān)測(cè)安全車距并降低系統(tǒng)成本,并且由于能夠根據(jù)視頻圖像中白色虛線端點(diǎn)在像素坐標(biāo)系和空間坐標(biāo)系中的位置擬合模型參數(shù)i值,解決了單目視覺(jué)系統(tǒng)對(duì)不同車型及攝像機(jī)不同安裝角度的適應(yīng)性問(wèn)題.接下來(lái)的主要工作目標(biāo)是改進(jìn)算法,進(jìn)一步提高系統(tǒng)的實(shí)時(shí)性和精度.