, ,
(北京工業大學 信息學部,北京 100124)
近年來,由于汽車保有量與使用率的增加,交通事故的發生呈現逐年上升的趨勢。其中汽車作為交通道路中的主要參與者,保證汽車的行車安全是智能車輛研究領域的重要課題。隨著先進駕駛輔助系統(Advanced Driver Assistance Systems,ADAS)的有效應用,智能車輛在輔助駕駛和遇險報警等方面的功能已經日趨完善。如何快速、準確的檢測出城市道路中的車道線,有效提升駕駛系統的魯棒性及安全性,為后續的車道保持、車輛避障與路徑規劃提供可靠保障是智能車輛自主駕駛技術亟需解決的問題。
許多研究者對車道線檢測進行了深入的研究。常見的方法是先進行圖像預處理,包括灰度化、圖像降噪和二值化等,然后采用邊緣檢測算法[1]和Hough變換[2]檢測車道線。為了提高算法的實時性,Liu等[3]采用LSD算法[4]檢測車道線,但沒有考慮線段的相關性,所以在噪聲環境中提取車道線時會受到干擾。Guo等[5]采用LDA對道路圖像進行有針對性的灰度化,然后再利用LSD提取直線,但沒有考慮道路其它標志的干擾。Lee[6-7]等提出一種基于特征的車道線估計方法,采用直線模型匹配道路邊界,抗干擾能力強,但彎曲的道路邊界會提取失敗。還有一些研究者利用卡爾曼濾波[8]和粒子濾波者[9]利用當前幀對下一幀進行估計,但是由于算法復雜度高,實時性會有所下降。
通過閾值化對圖像進行處理,可去除大量的無用信息,提高車道線擬合與檢測的準確性。根據路面環境特點,本文提出一種改進SIS閾值[10]分割算法和改進的順序RANSAC算法用于車道線擬合與檢測。

圖1 改進SIS算法與改進順序RANSAC算法流程圖
本文算法主要包括以下幾步,算法主要流程如圖1所示。第一步,如圖2所示,截取車道線感興趣區域(ROI),并進行灰度化和圖像降噪處理;第二步,采用改進的SIS閾值算法對圖像進行閾值化;第三步,構建車道線模型并簡化為雙曲線模型;第四步,利用改進順序隨機抽樣一致性(RANSAC)算法擬合車道線線,然后根據兩邊的車道線模型進行模型配對;最后,通過選取包含最多支持數據點的組合確定車道線,與傳統的Hough變換和LSD等方法相比,提出的算法不僅可以檢測直線車道線,還可以進行曲線車道線的擬合,而且在有效提高車道線識別準確率的同時也滿足實時性要求,魯棒性也有所提高。

圖2 車道線感興趣區(ROI)
SIS算法是一種基于圖像本身統計特性的閾值算法,它執行速度快,可以自動選擇閾值,在目標區域與背景區域有明顯梯度的圖像中有很好的效果。假設圖像為f(u,v),算法過程如下:
1)計算每個像素的水平方向梯度和垂直方向梯度,如式(1)所示:
(1)
2)取水平方向梯度和垂直方向梯度的最大值作為這個像素的權重,然后計算權重之和、加權像素之和,如式(2)所示:
(2)
3)加權像素之和和權重之和的比值即為最終的閾值,如式(3)所示:
(3)
其中:f(u,v)是像素點(u,v)的灰度值。
SIS算法在尋找閾值時,降低非邊緣區域的像素權值,提高梯度邊緣的像素權值,在處理噪聲低的圖像時效果良好。但在噪聲多的圖像中,并且圖像中的噪聲灰度值介于目標灰度值和背景灰度值,那么得到的閾值會變小。如果圖像中的噪聲灰度值大于目標區域的灰度,得到的閾值會變大。所以在一些復雜情況下該算法效果一般。
所以本文對SIS算法進行了改進,主要思想是由于車道線的亮度總是高于其周圍的道路,所以將亮于鄰近點的區域分離出來,也就相當于將車道線部分分離出來。首先計算像素點周圍r鄰域內的灰度值,并對灰度值做加權平均,然后用原灰度值減去加權平均的灰度值,如果小于零,將該點置零。
這種方法受r的影響很大,如果r取的過大,不會影響計算速度,且分離效果不理想。如果r取的過小則只會把圖像中的邊緣部分突出,無法有效去除圖像中的噪聲。結合車道線檢測的道路環境,對r取不同的值進行多次計算比對,當r=7時可取得最佳效果,灰度圖像的處理結果如圖3所示。

圖3 灰度原圖以及高亮區分離圖
圖4(a)是圖3的灰度直方圖曲線,在這種情況下,一方面由于分離出的高亮車道線區域周圍像素灰度值均為0,并且這些像素處在高亮區域邊緣,權值較大,那么閾值會變小;另一方面存在高亮度噪點,這些噪點的權值也較大,那么閾值會變大。所以很難通過基于直方圖的算法求得理想的閾值。

圖4 灰度曲線圖
為降低這些因素的影響,本文采用像素本身灰度值的平方根作為該像素的權值。這樣可以在去除灰度值為0的像素的影響的同時降低高亮噪點對閾值的影響。閾值的計算公式如式(4)所示:
(4)
改進算法與比原算法節省大量計算,因為只需要對原直方圖進行計算便可以得到閾值,而不再需要對每個像素進行計算。根據直方圖計算閾值的公式為:
(5)
式中,i為灰度值,Pi為該灰度值的像素個數。

圖5 路面泛白情形下二值化對比
加權后的直方圖曲線如圖4(b)所示,改進的算法與原算法及OTSU算法的效果對比如圖5~7所示,其中圖5的原圖為圖2。圖5是有陰影干擾和路面泛白的情形下,SIS算法、OTSU算法和本文的算法都取得了好的效果。圖6是在低亮度和有陰影干擾的情況下,本文的算法在保留了車道線前提下,濾除了噪聲,效果最好。改進算法能更好地響應圖像亮度和對比度的變化,對環境的適應性更好。

圖6 陰影遮擋情形下二值化對比
通過實驗測試,SIS算法處理一幅圖片需要2.45 ms,OTSU算法需要1.49 ms,本文提出的算法僅需0.98 ms。
假設路面為平面,并且車道線都是平行的,那么根據攝像機的位置和朝向,可以確定路面車道線和投影車道線的幾何關系,這里采用如圖7所示的道路模型,那么左右兩條車道線可分別由式(6)、(7)表示:

圖7 道路模型

(6)
(7)
為了更好地說明這個模型及其中的參數,首先明確3個坐標系:大地坐標系(路面坐標系)、汽車坐標系和攝像機坐標系。θ和φ是攝像機對于大地坐標系的偏航角和俯仰角。(u,v)表示像素點相對于投影中心水平方向和垂直方向的位置,Eu和Ev表示攝像機在像素單元上水平方向與垂直方向的焦距,這些參數(投影中心、Eu和Ev)都可以通過攝像機的標定來獲得。H是攝像機距離道路表面的距離。C0是道路的橫向曲率,如果C0=0那么道路為直的,即式(6)、(7)表示直線。xc和dr分別表示左右車道線距車輛的距離,L=xc+dr為車道寬度。
為了簡化擬合過程,這里將車道線模型進一步簡化為以A、B、C、D為未知量的雙曲線形式,即:
(8)
以矩陣形式表示為
(9)
其中:E=C-BD,F=A-CD,Cr是對稱的,Cr·P表示雙曲線在P點的切線。
要確定一個模型需要4個像素點,但多數情況下會存在超過4個候選像素,并且還存在一些異常像素,從而導致可能存在多模型問題,這里采用順序隨機抽樣一致性[11](Sequential RANSAC)算法來解決此問題。
順序RANSAC是將RANSAC算法運行多次,直到找到所有的模型或者執行一定次數的迭代。一旦確定一個模型后,它包含的支持數據點就會從數據集中清除,然后RANSAC再在數據集剩余數據點中確定其它模型,也就是說如果前面確定的模型不準確,會導致數據集中的數據點誤消除,這種情況在道路彎曲時尤為明顯。
為了解決這一關鍵問題,更準確地檢測車道線,本文提出了一種改進的順序RANSAC算法,加入了一種融合機制,該算法流程如圖8所示。

圖8 改進的順序RANSAC算法流程圖
該方法分為以下6個步驟:
1)在像素集中隨機選擇4個像素數據點。
2)創建模型并找到所有的支持數據點。盡管4個不在一條線上的任一點可以產生一個唯一的雙曲線,但并不是每一個結果都能正確地描述車道線,所以這一步在尋找支持數據點之前,需要對模型進行校驗,式(8)中A、B、C、D的顯式解如式(10)~(13)所示:
(10)
(11)
(12)
D=-tanφEv
(13)
首先校驗D,D的值隨φ的變化而變化,φ的變化是汽車懸架系統的壓縮和伸長變化決定的。當車輛前懸架壓縮,后懸架伸長時,攝像機向前下傾斜,φ可達到最大值;反之車輛前懸架伸長,后懸架壓縮時,攝像機前傾減少甚至會向上傾斜,此時φ可達到最小值。通過實際車輛測試可知得φ的值浮動變化為±3°,即±0.035 rad,所以φ值范圍為[φn-0.035,φn+0.035]。D確定后可以根據道路曲率校驗A,A的大小取決于|C0|,一般車輛的最小轉彎半徑為10米,那么這里|C0|設置為0.1 m-1,對于直線,A=0。B和C與車輛的行駛姿態有關,由于車輛可以在道路的任何位置行駛,所以對B、C不約束。如果沒有進行D和A的校驗就開始下一次迭代,會出現錯誤的擬合結果。
3)4個隨機點可以產生一個唯一的雙曲線和六條直線,共7個模型,這7個模型中只有包含最多支持數據點的模型會被保留,支持數據點由ds確定,如式(14)所示,如果ds小于一個閾值,那么數據點將被判定為支持數據點。
(14)
其中:Cr已由式(9)給出,(Cr·P)n表示向量的第n個元素。
4)將新模型與之前確定的模型進行融合,如果新模型與之前的模型中有公共數據點,那么保留具有更多數據點的模型,另一個模型移除釋放。如果沒有公共數據點,則此模型被標記為一個新的模型。由于車道線不存在交叉點,所以此方法在此適用。
5)重復步驟1)~4),進行一定次數的迭代,直到沒有數據點被消除,從而不會影響后續的擬合結果。
6)到本步驟為止,已經得到了多個互不交叉的模型,為了提高執行速度,消除這些已經得到的模型的支持數據點,然后在剩余像素數據集中重復步驟1)~4),進行一定次數的迭代。擬合結果如圖9所示。

圖9 擬合結果
如圖10所示,以圖中的標志為例,車道線與直行標志最大區別是車道線由多條連續線段組成,所以可以計算得出箭頭在感興趣區域內連續出現的幀數P。利用標志位置到車輛的距離、車輛的行駛速度和視頻的幀率就可以計算出P值,如式(15)所示:
(15)
式中,S為箭頭、文字等被檢測的位置到車輛的距離,F為視頻幀率,v為車輛的行駛速度。

圖10 車道線與直行標志
在連續的視頻幀中,P值可以作為判斷車道線是否存在的閾值。如果一條直線在P幀中連續出現,那么就應該加上這條車道線,反之如果在連續P幀中沒有出現,那么就去除這條車道線。
確定單個車道線模型后要進行車道線模型的配對,從而得到一條車道,理想的配對結果取決于模型所具有的支持數據點數量以及模型擬合出的車道寬度是否符合正常的數值。
逆透視映射(Inverse Perspective Mapping, IPM)變換圖像是將攝像機視圖轉換為從上到下的俯視視圖,如圖11所示。假設地面為零,相機分辨率為m×n像素,視場角為2α×2β弧度,θ為攝像機俯仰角,相機到地面距離為H。大地坐標系[u,v]到圖像坐標系[x,y]轉換關系如下[12]:
(16)
圖像中的點可通過這個方程得到大地坐標系中的對應點。

圖11 IPM變換圖
根據IPM變換圖結合式(6)、(7)可以得到車道寬度L,在現實情況中,機動車道的寬度在2.45~3.75 m之間,可以由此建立車道寬度約束。一般情況下,兩條車道線獨立擬合的結果不會完全遵循平行的關系,所以這里會得到一個非恒定的L,為了獲得更加準確的模型,需要對配對的兩個模型進行微調,使其遵循平行關系。根據式(6)、(7)可知,如果一個模型的形式與式(8)相同,那么另一個模型就如式(17)所示:
(17)
式(8)和(17)表明,要對這兩個模型進行微調需要5個點來確定。但是這對車道線模型是由擬合步驟中的8個點(每條車道線模型各4個)擬合推導出得到的,這里在其中一個模型的4個點中選取3個點,另一個模型的4個點中選取2個點,總的來說有48種選取組合,這48個組合中選取規定范圍內具有最多支持數據點的組合為最終模型。之后,利用式(16)將車道線的端點再轉換到原圖像中。
程序基于Visual Studio 2010和OpenCV2.4.10,硬件平臺為Intel(R)Core(TM)i5-7200CPU、GF920MX顯卡和4GB內存,本文的算法基于單目視覺,為了驗證本文所提出的基于改進SIS算法和改進順序RANSAC算法的車道線檢測方法的檢測性能,共采用6段視頻數據集進行驗證,其中四段視頻是加州理工學院的車道數據集,另外兩段為城市快速路、高速公路的視頻數據,這6段視頻分辨率為640×480,涵蓋多種工況。其中加州理工學院的車道數據集與文獻[13]作了對比,結果如表1所示。高速路的檢測結果如表2所示。
其中,車道線檢測的正確率就是指檢測到的正確的車道線數目與實際車道線總數的比值,車道線的誤檢率是指本身圖像中不是車道線的信息被誤檢測成為了車道線,也就是誤檢測的直線與實際車道線總數的比值。單車道只考慮車輛當前行駛的車道,多車道表示視車輛前方包括當前車道在內的多條車道。算法在多種工況下的擬合與檢測效果見圖12,可以看到效果圖清晰地展示了陰影、車輛干擾、車道標志干擾等多種工況下良好的檢測效果。

表1 城市道路實驗對比 %

表2 高速公路測試結果

圖12 各種工況下的車道線擬合
提出的算法識別準確率高,誤檢率低,對不同的道路環境有較強的適應性,在單車道即兩邊車道線的情況下有很高的魯棒性。算法每幀耗時為26.65 ms,實時性較強,能滿足每秒30幀的攝像頭檢測。
本文針對車道線檢測時會遇到的光照變化、路面狀況不同以及陰影干擾等復雜環境,提出了改進的SIS閾值算法和改進順序RANSAC算法相結合的方法來擬合與檢測車道線。提出了改進的SIS閾值算法,相比其他的閾值算法不易受陰影車輛干擾的影響,抗干擾能力強,魯棒性好,而且算法的計算復雜度低,時間消耗低。采用改進的順序RANSAC算法檢測車道線比采用傳統的RANSAC的檢測方法相比準確率有了一定的提升,誤檢率有所減少。實驗結果表明,本文提出的算法在滿足了實時性與魯棒性要求的基礎上,提高了檢測的準確率,并且能適應多種工況以及復雜環境的干擾。