, ,
(北京工業(yè)大學(xué) 信息學(xué)部,北京 100124)
近年來,由于汽車保有量與使用率的增加,交通事故的發(fā)生呈現(xiàn)逐年上升的趨勢(shì)。其中汽車作為交通道路中的主要參與者,保證汽車的行車安全是智能車輛研究領(lǐng)域的重要課題。隨著先進(jìn)駕駛輔助系統(tǒng)(Advanced Driver Assistance Systems,ADAS)的有效應(yīng)用,智能車輛在輔助駕駛和遇險(xiǎn)報(bào)警等方面的功能已經(jīng)日趨完善。如何快速、準(zhǔn)確的檢測(cè)出城市道路中的車道線,有效提升駕駛系統(tǒng)的魯棒性及安全性,為后續(xù)的車道保持、車輛避障與路徑規(guī)劃提供可靠保障是智能車輛自主駕駛技術(shù)亟需解決的問題。
許多研究者對(duì)車道線檢測(cè)進(jìn)行了深入的研究。常見的方法是先進(jìn)行圖像預(yù)處理,包括灰度化、圖像降噪和二值化等,然后采用邊緣檢測(cè)算法[1]和Hough變換[2]檢測(cè)車道線。為了提高算法的實(shí)時(shí)性,Liu等[3]采用LSD算法[4]檢測(cè)車道線,但沒有考慮線段的相關(guān)性,所以在噪聲環(huán)境中提取車道線時(shí)會(huì)受到干擾。Guo等[5]采用LDA對(duì)道路圖像進(jìn)行有針對(duì)性的灰度化,然后再利用LSD提取直線,但沒有考慮道路其它標(biāo)志的干擾。Lee[6-7]等提出一種基于特征的車道線估計(jì)方法,采用直線模型匹配道路邊界,抗干擾能力強(qiáng),但彎曲的道路邊界會(huì)提取失敗。還有一些研究者利用卡爾曼濾波[8]和粒子濾波者[9]利用當(dāng)前幀對(duì)下一幀進(jìn)行估計(jì),但是由于算法復(fù)雜度高,實(shí)時(shí)性會(huì)有所下降。
通過閾值化對(duì)圖像進(jìn)行處理,可去除大量的無用信息,提高車道線擬合與檢測(cè)的準(zhǔn)確性。根據(jù)路面環(huán)境特點(diǎn),本文提出一種改進(jìn)SIS閾值[10]分割算法和改進(jìn)的順序RANSAC算法用于車道線擬合與檢測(cè)。
圖1 改進(jìn)SIS算法與改進(jìn)順序RANSAC算法流程圖
本文算法主要包括以下幾步,算法主要流程如圖1所示。第一步,如圖2所示,截取車道線感興趣區(qū)域(ROI),并進(jìn)行灰度化和圖像降噪處理;第二步,采用改進(jìn)的SIS閾值算法對(duì)圖像進(jìn)行閾值化;第三步,構(gòu)建車道線模型并簡(jiǎn)化為雙曲線模型;第四步,利用改進(jìn)順序隨機(jī)抽樣一致性(RANSAC)算法擬合車道線線,然后根據(jù)兩邊的車道線模型進(jìn)行模型配對(duì);最后,通過選取包含最多支持?jǐn)?shù)據(jù)點(diǎn)的組合確定車道線,與傳統(tǒng)的Hough變換和LSD等方法相比,提出的算法不僅可以檢測(cè)直線車道線,還可以進(jìn)行曲線車道線的擬合,而且在有效提高車道線識(shí)別準(zhǔn)確率的同時(shí)也滿足實(shí)時(shí)性要求,魯棒性也有所提高。
圖2 車道線感興趣區(qū)(ROI)
SIS算法是一種基于圖像本身統(tǒng)計(jì)特性的閾值算法,它執(zhí)行速度快,可以自動(dòng)選擇閾值,在目標(biāo)區(qū)域與背景區(qū)域有明顯梯度的圖像中有很好的效果。假設(shè)圖像為f(u,v),算法過程如下:
1)計(jì)算每個(gè)像素的水平方向梯度和垂直方向梯度,如式(1)所示:
(1)
2)取水平方向梯度和垂直方向梯度的最大值作為這個(gè)像素的權(quán)重,然后計(jì)算權(quán)重之和、加權(quán)像素之和,如式(2)所示:
(2)
3)加權(quán)像素之和和權(quán)重之和的比值即為最終的閾值,如式(3)所示:
(3)
其中:f(u,v)是像素點(diǎn)(u,v)的灰度值。
SIS算法在尋找閾值時(shí),降低非邊緣區(qū)域的像素權(quán)值,提高梯度邊緣的像素權(quán)值,在處理噪聲低的圖像時(shí)效果良好。但在噪聲多的圖像中,并且圖像中的噪聲灰度值介于目標(biāo)灰度值和背景灰度值,那么得到的閾值會(huì)變小。如果圖像中的噪聲灰度值大于目標(biāo)區(qū)域的灰度,得到的閾值會(huì)變大。所以在一些復(fù)雜情況下該算法效果一般。
所以本文對(duì)SIS算法進(jìn)行了改進(jìn),主要思想是由于車道線的亮度總是高于其周圍的道路,所以將亮于鄰近點(diǎn)的區(qū)域分離出來,也就相當(dāng)于將車道線部分分離出來。首先計(jì)算像素點(diǎn)周圍r鄰域內(nèi)的灰度值,并對(duì)灰度值做加權(quán)平均,然后用原灰度值減去加權(quán)平均的灰度值,如果小于零,將該點(diǎn)置零。
這種方法受r的影響很大,如果r取的過大,不會(huì)影響計(jì)算速度,且分離效果不理想。如果r取的過小則只會(huì)把圖像中的邊緣部分突出,無法有效去除圖像中的噪聲。結(jié)合車道線檢測(cè)的道路環(huán)境,對(duì)r取不同的值進(jìn)行多次計(jì)算比對(duì),當(dāng)r=7時(shí)可取得最佳效果,灰度圖像的處理結(jié)果如圖3所示。
圖3 灰度原圖以及高亮區(qū)分離圖
圖4(a)是圖3的灰度直方圖曲線,在這種情況下,一方面由于分離出的高亮車道線區(qū)域周圍像素灰度值均為0,并且這些像素處在高亮區(qū)域邊緣,權(quán)值較大,那么閾值會(huì)變?。涣硪环矫娲嬖诟吡炼仍朦c(diǎn),這些噪點(diǎn)的權(quán)值也較大,那么閾值會(huì)變大。所以很難通過基于直方圖的算法求得理想的閾值。
圖4 灰度曲線圖
為降低這些因素的影響,本文采用像素本身灰度值的平方根作為該像素的權(quán)值。這樣可以在去除灰度值為0的像素的影響的同時(shí)降低高亮噪點(diǎn)對(duì)閾值的影響。閾值的計(jì)算公式如式(4)所示:
(4)
改進(jìn)算法與比原算法節(jié)省大量計(jì)算,因?yàn)橹恍枰獙?duì)原直方圖進(jìn)行計(jì)算便可以得到閾值,而不再需要對(duì)每個(gè)像素進(jìn)行計(jì)算。根據(jù)直方圖計(jì)算閾值的公式為:
(5)
式中,i為灰度值,Pi為該灰度值的像素個(gè)數(shù)。
圖5 路面泛白情形下二值化對(duì)比
加權(quán)后的直方圖曲線如圖4(b)所示,改進(jìn)的算法與原算法及OTSU算法的效果對(duì)比如圖5~7所示,其中圖5的原圖為圖2。圖5是有陰影干擾和路面泛白的情形下,SIS算法、OTSU算法和本文的算法都取得了好的效果。圖6是在低亮度和有陰影干擾的情況下,本文的算法在保留了車道線前提下,濾除了噪聲,效果最好。改進(jìn)算法能更好地響應(yīng)圖像亮度和對(duì)比度的變化,對(duì)環(huán)境的適應(yīng)性更好。
圖6 陰影遮擋情形下二值化對(duì)比
通過實(shí)驗(yàn)測(cè)試,SIS算法處理一幅圖片需要2.45 ms,OTSU算法需要1.49 ms,本文提出的算法僅需0.98 ms。
假設(shè)路面為平面,并且車道線都是平行的,那么根據(jù)攝像機(jī)的位置和朝向,可以確定路面車道線和投影車道線的幾何關(guān)系,這里采用如圖7所示的道路模型,那么左右兩條車道線可分別由式(6)、(7)表示:
圖7 道路模型
(6)
(7)
為了更好地說明這個(gè)模型及其中的參數(shù),首先明確3個(gè)坐標(biāo)系:大地坐標(biāo)系(路面坐標(biāo)系)、汽車坐標(biāo)系和攝像機(jī)坐標(biāo)系。θ和φ是攝像機(jī)對(duì)于大地坐標(biāo)系的偏航角和俯仰角。(u,v)表示像素點(diǎn)相對(duì)于投影中心水平方向和垂直方向的位置,Eu和Ev表示攝像機(jī)在像素單元上水平方向與垂直方向的焦距,這些參數(shù)(投影中心、Eu和Ev)都可以通過攝像機(jī)的標(biāo)定來獲得。H是攝像機(jī)距離道路表面的距離。C0是道路的橫向曲率,如果C0=0那么道路為直的,即式(6)、(7)表示直線。xc和dr分別表示左右車道線距車輛的距離,L=xc+dr為車道寬度。
為了簡(jiǎn)化擬合過程,這里將車道線模型進(jìn)一步簡(jiǎn)化為以A、B、C、D為未知量的雙曲線形式,即:
(8)
以矩陣形式表示為
(9)
其中:E=C-BD,F(xiàn)=A-CD,Cr是對(duì)稱的,Cr·P表示雙曲線在P點(diǎn)的切線。
要確定一個(gè)模型需要4個(gè)像素點(diǎn),但多數(shù)情況下會(huì)存在超過4個(gè)候選像素,并且還存在一些異常像素,從而導(dǎo)致可能存在多模型問題,這里采用順序隨機(jī)抽樣一致性[11](Sequential RANSAC)算法來解決此問題。
順序RANSAC是將RANSAC算法運(yùn)行多次,直到找到所有的模型或者執(zhí)行一定次數(shù)的迭代。一旦確定一個(gè)模型后,它包含的支持?jǐn)?shù)據(jù)點(diǎn)就會(huì)從數(shù)據(jù)集中清除,然后RANSAC再在數(shù)據(jù)集剩余數(shù)據(jù)點(diǎn)中確定其它模型,也就是說如果前面確定的模型不準(zhǔn)確,會(huì)導(dǎo)致數(shù)據(jù)集中的數(shù)據(jù)點(diǎn)誤消除,這種情況在道路彎曲時(shí)尤為明顯。
為了解決這一關(guān)鍵問題,更準(zhǔn)確地檢測(cè)車道線,本文提出了一種改進(jìn)的順序RANSAC算法,加入了一種融合機(jī)制,該算法流程如圖8所示。
圖8 改進(jìn)的順序RANSAC算法流程圖
該方法分為以下6個(gè)步驟:
1)在像素集中隨機(jī)選擇4個(gè)像素?cái)?shù)據(jù)點(diǎn)。
2)創(chuàng)建模型并找到所有的支持?jǐn)?shù)據(jù)點(diǎn)。盡管4個(gè)不在一條線上的任一點(diǎn)可以產(chǎn)生一個(gè)唯一的雙曲線,但并不是每一個(gè)結(jié)果都能正確地描述車道線,所以這一步在尋找支持?jǐn)?shù)據(jù)點(diǎn)之前,需要對(duì)模型進(jìn)行校驗(yàn),式(8)中A、B、C、D的顯式解如式(10)~(13)所示:
(10)
(11)
(12)
D=-tanφEv
(13)
首先校驗(yàn)D,D的值隨φ的變化而變化,φ的變化是汽車懸架系統(tǒng)的壓縮和伸長變化決定的。當(dāng)車輛前懸架壓縮,后懸架伸長時(shí),攝像機(jī)向前下傾斜,φ可達(dá)到最大值;反之車輛前懸架伸長,后懸架壓縮時(shí),攝像機(jī)前傾減少甚至?xí)蛏蟽A斜,此時(shí)φ可達(dá)到最小值。通過實(shí)際車輛測(cè)試可知得φ的值浮動(dòng)變化為±3°,即±0.035 rad,所以φ值范圍為[φn-0.035,φn+0.035]。D確定后可以根據(jù)道路曲率校驗(yàn)A,A的大小取決于|C0|,一般車輛的最小轉(zhuǎn)彎半徑為10米,那么這里|C0|設(shè)置為0.1 m-1,對(duì)于直線,A=0。B和C與車輛的行駛姿態(tài)有關(guān),由于車輛可以在道路的任何位置行駛,所以對(duì)B、C不約束。如果沒有進(jìn)行D和A的校驗(yàn)就開始下一次迭代,會(huì)出現(xiàn)錯(cuò)誤的擬合結(jié)果。
3)4個(gè)隨機(jī)點(diǎn)可以產(chǎn)生一個(gè)唯一的雙曲線和六條直線,共7個(gè)模型,這7個(gè)模型中只有包含最多支持?jǐn)?shù)據(jù)點(diǎn)的模型會(huì)被保留,支持?jǐn)?shù)據(jù)點(diǎn)由ds確定,如式(14)所示,如果ds小于一個(gè)閾值,那么數(shù)據(jù)點(diǎn)將被判定為支持?jǐn)?shù)據(jù)點(diǎn)。
(14)
其中:Cr已由式(9)給出,(Cr·P)n表示向量的第n個(gè)元素。
4)將新模型與之前確定的模型進(jìn)行融合,如果新模型與之前的模型中有公共數(shù)據(jù)點(diǎn),那么保留具有更多數(shù)據(jù)點(diǎn)的模型,另一個(gè)模型移除釋放。如果沒有公共數(shù)據(jù)點(diǎn),則此模型被標(biāo)記為一個(gè)新的模型。由于車道線不存在交叉點(diǎn),所以此方法在此適用。
5)重復(fù)步驟1)~4),進(jìn)行一定次數(shù)的迭代,直到?jīng)]有數(shù)據(jù)點(diǎn)被消除,從而不會(huì)影響后續(xù)的擬合結(jié)果。
6)到本步驟為止,已經(jīng)得到了多個(gè)互不交叉的模型,為了提高執(zhí)行速度,消除這些已經(jīng)得到的模型的支持?jǐn)?shù)據(jù)點(diǎn),然后在剩余像素?cái)?shù)據(jù)集中重復(fù)步驟1)~4),進(jìn)行一定次數(shù)的迭代。擬合結(jié)果如圖9所示。
圖9 擬合結(jié)果
如圖10所示,以圖中的標(biāo)志為例,車道線與直行標(biāo)志最大區(qū)別是車道線由多條連續(xù)線段組成,所以可以計(jì)算得出箭頭在感興趣區(qū)域內(nèi)連續(xù)出現(xiàn)的幀數(shù)P。利用標(biāo)志位置到車輛的距離、車輛的行駛速度和視頻的幀率就可以計(jì)算出P值,如式(15)所示:
(15)
式中,S為箭頭、文字等被檢測(cè)的位置到車輛的距離,F(xiàn)為視頻幀率,v為車輛的行駛速度。
圖10 車道線與直行標(biāo)志
在連續(xù)的視頻幀中,P值可以作為判斷車道線是否存在的閾值。如果一條直線在P幀中連續(xù)出現(xiàn),那么就應(yīng)該加上這條車道線,反之如果在連續(xù)P幀中沒有出現(xiàn),那么就去除這條車道線。
確定單個(gè)車道線模型后要進(jìn)行車道線模型的配對(duì),從而得到一條車道,理想的配對(duì)結(jié)果取決于模型所具有的支持?jǐn)?shù)據(jù)點(diǎn)數(shù)量以及模型擬合出的車道寬度是否符合正常的數(shù)值。
逆透視映射(Inverse Perspective Mapping, IPM)變換圖像是將攝像機(jī)視圖轉(zhuǎn)換為從上到下的俯視視圖,如圖11所示。假設(shè)地面為零,相機(jī)分辨率為m×n像素,視場(chǎng)角為2α×2β弧度,θ為攝像機(jī)俯仰角,相機(jī)到地面距離為H。大地坐標(biāo)系[u,v]到圖像坐標(biāo)系[x,y]轉(zhuǎn)換關(guān)系如下[12]:
(16)
圖像中的點(diǎn)可通過這個(gè)方程得到大地坐標(biāo)系中的對(duì)應(yīng)點(diǎn)。
圖11 IPM變換圖
根據(jù)IPM變換圖結(jié)合式(6)、(7)可以得到車道寬度L,在現(xiàn)實(shí)情況中,機(jī)動(dòng)車道的寬度在2.45~3.75 m之間,可以由此建立車道寬度約束。一般情況下,兩條車道線獨(dú)立擬合的結(jié)果不會(huì)完全遵循平行的關(guān)系,所以這里會(huì)得到一個(gè)非恒定的L,為了獲得更加準(zhǔn)確的模型,需要對(duì)配對(duì)的兩個(gè)模型進(jìn)行微調(diào),使其遵循平行關(guān)系。根據(jù)式(6)、(7)可知,如果一個(gè)模型的形式與式(8)相同,那么另一個(gè)模型就如式(17)所示:
(17)
式(8)和(17)表明,要對(duì)這兩個(gè)模型進(jìn)行微調(diào)需要5個(gè)點(diǎn)來確定。但是這對(duì)車道線模型是由擬合步驟中的8個(gè)點(diǎn)(每條車道線模型各4個(gè))擬合推導(dǎo)出得到的,這里在其中一個(gè)模型的4個(gè)點(diǎn)中選取3個(gè)點(diǎn),另一個(gè)模型的4個(gè)點(diǎn)中選取2個(gè)點(diǎn),總的來說有48種選取組合,這48個(gè)組合中選取規(guī)定范圍內(nèi)具有最多支持?jǐn)?shù)據(jù)點(diǎn)的組合為最終模型。之后,利用式(16)將車道線的端點(diǎn)再轉(zhuǎn)換到原圖像中。
程序基于Visual Studio 2010和OpenCV2.4.10,硬件平臺(tái)為Intel(R)Core(TM)i5-7200CPU、GF920MX顯卡和4GB內(nèi)存,本文的算法基于單目視覺,為了驗(yàn)證本文所提出的基于改進(jìn)SIS算法和改進(jìn)順序RANSAC算法的車道線檢測(cè)方法的檢測(cè)性能,共采用6段視頻數(shù)據(jù)集進(jìn)行驗(yàn)證,其中四段視頻是加州理工學(xué)院的車道數(shù)據(jù)集,另外兩段為城市快速路、高速公路的視頻數(shù)據(jù),這6段視頻分辨率為640×480,涵蓋多種工況。其中加州理工學(xué)院的車道數(shù)據(jù)集與文獻(xiàn)[13]作了對(duì)比,結(jié)果如表1所示。高速路的檢測(cè)結(jié)果如表2所示。
其中,車道線檢測(cè)的正確率就是指檢測(cè)到的正確的車道線數(shù)目與實(shí)際車道線總數(shù)的比值,車道線的誤檢率是指本身圖像中不是車道線的信息被誤檢測(cè)成為了車道線,也就是誤檢測(cè)的直線與實(shí)際車道線總數(shù)的比值。單車道只考慮車輛當(dāng)前行駛的車道,多車道表示視車輛前方包括當(dāng)前車道在內(nèi)的多條車道。算法在多種工況下的擬合與檢測(cè)效果見圖12,可以看到效果圖清晰地展示了陰影、車輛干擾、車道標(biāo)志干擾等多種工況下良好的檢測(cè)效果。
表1 城市道路實(shí)驗(yàn)對(duì)比 %
表2 高速公路測(cè)試結(jié)果
圖12 各種工況下的車道線擬合
提出的算法識(shí)別準(zhǔn)確率高,誤檢率低,對(duì)不同的道路環(huán)境有較強(qiáng)的適應(yīng)性,在單車道即兩邊車道線的情況下有很高的魯棒性。算法每幀耗時(shí)為26.65 ms,實(shí)時(shí)性較強(qiáng),能滿足每秒30幀的攝像頭檢測(cè)。
本文針對(duì)車道線檢測(cè)時(shí)會(huì)遇到的光照變化、路面狀況不同以及陰影干擾等復(fù)雜環(huán)境,提出了改進(jìn)的SIS閾值算法和改進(jìn)順序RANSAC算法相結(jié)合的方法來擬合與檢測(cè)車道線。提出了改進(jìn)的SIS閾值算法,相比其他的閾值算法不易受陰影車輛干擾的影響,抗干擾能力強(qiáng),魯棒性好,而且算法的計(jì)算復(fù)雜度低,時(shí)間消耗低。采用改進(jìn)的順序RANSAC算法檢測(cè)車道線比采用傳統(tǒng)的RANSAC的檢測(cè)方法相比準(zhǔn)確率有了一定的提升,誤檢率有所減少。實(shí)驗(yàn)結(jié)果表明,本文提出的算法在滿足了實(shí)時(shí)性與魯棒性要求的基礎(chǔ)上,提高了檢測(cè)的準(zhǔn)確率,并且能適應(yīng)多種工況以及復(fù)雜環(huán)境的干擾。