李 堯,王 彥
(南華大學(xué) 電氣工程學(xué)院,湖南 衡陽 421001)
隨著國內(nèi)外汽車輔助技術(shù)受到廣泛關(guān)注,汽車數(shù)量迅速增加,隨之而來的安全問題也日益突出,為了解決這一問題,車道識別已經(jīng)成為智能交通系統(tǒng)領(lǐng)域中的重要研究方向。同時,為了更好地匹配和識別各種車道線,國內(nèi)外研究學(xué)者近幾年來提出了許多關(guān)于車道線檢測的方法。車道線識別的最關(guān)鍵部分包括圖像分割和目標(biāo)檢測。關(guān)于圖像分割,孫偉等通過運(yùn)用Sobel邊緣檢測和梯度方向角計(jì)算來選取合適的閾值,將鄰域灰度變化超過閾值的像素點(diǎn)設(shè)置為目標(biāo)點(diǎn),否則設(shè)置為背景[1]。趙婭琳等提出一種基于Canny的自適應(yīng)彩色圖像邊緣檢測算法,該算法可以通過一階直方圖的統(tǒng)計(jì)特性自適應(yīng)地選取參數(shù)[2]。其次,采用圖像梯度二階導(dǎo)數(shù)進(jìn)行閾值選取,來自適應(yīng)地選取合適的閾值,該算法可以很好地改善傳統(tǒng)Canny算子的缺陷[2]。唐陽山等通過優(yōu)化邊緣閾值參數(shù)對車道圖像進(jìn)行分割,改進(jìn)了Roberts算子[3]。以上提出的閾值分割是基于梯度的,此類型的圖像分割方法主要用于識別差異較大的目標(biāo)和背景,但在對于復(fù)雜的場景(例如地面陰影,太強(qiáng)或太弱的光線),識別效果很差。J.Duan等提出一種基于中值濾波的閾值算法和泛洪填充算法來分割灰度圖像[4],該算法可以突出顯示邊緣,但不能過濾噪聲。因此,本文采用全局閾值,不僅可以大大降低噪聲對目標(biāo)車道線的干擾,而且可以在復(fù)雜場景中準(zhǔn)確將目標(biāo)和背景分開。
關(guān)于目標(biāo)檢測,H.Z.Chen等使用Sobel形態(tài)學(xué)梯度算法結(jié)合霍夫變換,使用直線重構(gòu)二維車道線,該算法可以準(zhǔn)確地檢測車道線[5]。而F.Zhang等提出一種利用車道線的平行特性、長度特性、截距特性和角度特性改進(jìn)霍夫變換的方法,與傳統(tǒng)的檢測算法相比,檢測精度得到顯著的改善[6]。文獻(xiàn)[5]和[6]可以準(zhǔn)確識別高速公路和結(jié)構(gòu)化道路上的直線,但是對大曲率曲線的識別效果并不理想。鄒自明等針對霍夫變換直線擬合效果好,但曲線擬合效果差這一問題,提出分段交換車道模型的方法[7]。將車道線圖像分為兩種情況:直線和曲線,直線用霍夫變換擬合,彎道用貝塞爾曲線擬合[7]。然而,基于分段識別的方法不僅復(fù)雜,且在光照不足,車道線不清晰等復(fù)雜場景中也存在很大的局限性。針對這一問題,M.Bai等提出一種新穎的深度學(xué)習(xí)網(wǎng)絡(luò),該網(wǎng)絡(luò)將LiDAR和相機(jī)傳感器結(jié)合起來識別車道線[8]。即使在陰影和遮擋等復(fù)雜道路環(huán)境中,該方法也可以準(zhǔn)確估計(jì)和識別車道線。K.V.Manohar等提出一種構(gòu)建用于端到端訓(xùn)練的神經(jīng)網(wǎng)絡(luò)的方法,將車道線檢測問題轉(zhuǎn)換為實(shí)例分割問題[9]。每條車道線形成一個獨(dú)立的實(shí)例,即哪些像素屬于哪個車道,然后對每條線進(jìn)行擬合,最終可以識別多個車道線[9]。為了獲得更好的結(jié)構(gòu)信息, S.Lee等提出使用消失點(diǎn)的附加標(biāo)簽來訓(xùn)練網(wǎng)絡(luò)[10],而X.Liu和W.P.Sanberg等使用卷積神經(jīng)網(wǎng)絡(luò),在帶有道路注釋的帶標(biāo)簽圖像上對其進(jìn)行訓(xùn)練[11-12]。 S.Chougule等將車道標(biāo)記檢測和分類問題視為回歸問題[13]。N.Garnett和N.G.Dan Levi等則通過圖像中每個車道標(biāo)記的水平位置的集合,將圖像分為行,并使用卷積神經(jīng)網(wǎng)絡(luò)為每個車道標(biāo)記獲得行式表示[14-15]。同時L.Caltagirone等使用了一種數(shù)據(jù)融合策略,在基于深度學(xué)習(xí)的算法中使用圖像和LIDAR數(shù)據(jù),并在KITTI數(shù)據(jù)集基準(zhǔn)上獲得最新的道路檢測性能[16]。以上文獻(xiàn)都是通過深度學(xué)習(xí)構(gòu)建網(wǎng)絡(luò)模型,基于深度學(xué)習(xí)的方法致力于從不同方面解決車道標(biāo)志檢測,通過以上深度學(xué)習(xí)的方法雖能達(dá)到效果,但計(jì)算量大、運(yùn)算過程復(fù)雜。故綜合考慮后最終選擇了滑動窗多項(xiàng)式擬合的方法進(jìn)行車道線識別。它不僅可以準(zhǔn)確識別各種復(fù)雜環(huán)境中的車道線,而且算法簡單,計(jì)算速度快,總體流程圖如圖1所示。
圖1 車道線識別總體流程圖Fig.1 Overall flow chart of lane line recognition
由于相機(jī)拍攝的圖片與原始圖像不同,因此需通過數(shù)學(xué)關(guān)系來校準(zhǔn)圖片,以減少相機(jī)造成的形變。本文設(shè)置黑白棋盤格來進(jìn)行相機(jī)標(biāo)定,標(biāo)定前,相機(jī)需要拍攝不同角度和距離的照片,本文拍攝了20張照片,校準(zhǔn)板上的個數(shù)設(shè)置為54,分別設(shè)置為6行和9列。通過將棋盤格圖片的灰度圖以及水平和垂直內(nèi)點(diǎn)坐標(biāo)數(shù)量傳入函數(shù),可以獲得黑白棋盤格內(nèi)角的世界坐標(biāo)和相應(yīng)的圖片坐標(biāo)。將這兩個坐標(biāo)傳遞到相應(yīng)的函數(shù)中,以獲得相機(jī)內(nèi)部參數(shù)矩陣和失真參數(shù),然后開始相機(jī)標(biāo)定測試。標(biāo)定后,可看到車道線圖片的結(jié)果如圖2所示。
圖2 原圖與校正后圖片F(xiàn)ig.2 The original picture and the corrected picture
為了從道路圖像中提取出車道線,需要通過閾值分割將目標(biāo)與背景區(qū)分開。首先,將圖像二值化以減少非目標(biāo)干擾因素。然后進(jìn)行邊緣檢測,通?;谔荻鹊倪吘墮z測,是通過在圖像中對一階導(dǎo)數(shù)的最大值和最小值進(jìn)行檢測,顯然,一階導(dǎo)數(shù)的最大值表示變化最顯著的點(diǎn),因此邊界通常位于最大梯度的方向上,主要有基于Roberts算子、Prewitt算子、Sobel 算子、Laplacian 算子,Canny算子的方法。除了基于梯度的閾值分割方法外,還有基于灰度直方圖的閾值分割,該類方法主要是通過一個或多個閾值,將圖像的灰度直方圖分成幾類,通過圖像的灰度值確定相同類型的像素是否屬于同一對象。主要有全局閾值、自適應(yīng)閾值、最大類間方差閾值等方法。
全局閾值是通過對整個圖像的全局信息找到最優(yōu)分割閾值,它包括基于點(diǎn)和區(qū)域的兩種全局閾值方法。在進(jìn)行全局閾值分割之前,確保輸入圖片是灰度圖像。通過設(shè)置不同的特征閾值,可將圖像像素分為幾類,即輸入原始圖像的灰度和顏色特征,選擇初始估計(jì)值T可將圖像分為兩部分。即當(dāng)像素高于閾值時,為該像素賦予一個新值,否則賦予另一值。本文將圖像轉(zhuǎn)換為灰度圖像,并通過整個圖像的全局信息找到最優(yōu)分割閾值為127,當(dāng)像素超過了閾值部分不改變,否則將其設(shè)置為0,識別效果如圖3所示。
圖3 原圖與全局閾值過濾圖Fig.3 The original image and the global threshold filtering image
最大類間方差閾值算法根據(jù)圖像的灰度特性,將圖像分為背景和目標(biāo)。在類間方差即灰度分布均勻性差異最大的原則下獲得到最佳閾值,即目標(biāo)和背景之間差異最大時獲得相應(yīng)的閾值。此方法基于圖像的相對直方圖來計(jì)算一維陣列,一般用于圖像直方圖中存在兩個峰的圖片,此時,需要從兩個峰中選擇一個閾值,即通過雙峰值,根據(jù)直方圖自動計(jì)算出一個閾值。同時可通過添加一個5×5的高斯核,以防止噪聲對車道線識別結(jié)果的影響,識別效果如圖4所示。
圖4 原圖與最大類間方差閾值過濾圖Fig.4 The original image and the OTSU threshold filtering image
從圖4分析可看出, 最大類間方差二值化閾值分割可以識別出車道線,但不能很好地抑制噪聲,從而導(dǎo)致非車道線錯誤分類,影響最終識別結(jié)果。因此,本文采用全局閾值分割方法,從圖3的識別效果來看,它不僅可以將車道線和背景分開,而且可以大大降低噪聲對目標(biāo)車道線的干擾。同時,該算法是根據(jù)灰度直方圖的特征進(jìn)行計(jì)算,計(jì)算簡單,運(yùn)算效率高可達(dá)到準(zhǔn)確識別的要求。
因車載攝像頭拍攝的圖片是三維空間圖,所以在識別的時候,需要將其轉(zhuǎn)換為二維空間投影,即將空間坐標(biāo)(x,y,z)轉(zhuǎn)換為(n,m),
(1)
其中透視變換矩陣為:
通過源目標(biāo)點(diǎn)和目標(biāo)點(diǎn),得到變換矩陣和逆變換矩陣。可以通過輸入圖3中的閾值分割后獲得的圖片和變換矩陣來獲得變換后的圖片,如圖5所示。
圖5 原圖與透視后圖片F(xiàn)ig.5 The original picture and the perspective picture
首先,需要確定左右車道線,即確定車道線的基點(diǎn)。由于車道線的像素集中分布在橫軸的某個范圍內(nèi),因此圖片分為上下兩部分,本文使用透視圖下半部分的像素分布為依據(jù),橫軸上的像素分布峰值極可能是左右車道線的基點(diǎn)。通過首先截取圖片的下半部分,將像素按列相加,通過繪制直方圖,從圖可看到每一列像素之和的峰值,來確定車道線像素點(diǎn)的位置。如圖6所示可知左右車道線分布在像素峰值在150和400左右,分別代表左右兩個峰值。
圖6 透視圖與直方圖Fig.6 The perspective view and the histogram
通過透視圖定位基點(diǎn)后,直方圖將獲得左右兩峰,使兩峰作為左右車道線的起點(diǎn)。同時通過滑動窗口進(jìn)行遍歷與檢測,目的是獲得左右車道線的像素索引。準(zhǔn)備工作:本文選擇滑動窗口數(shù)量為9,寬度選擇為100,重新繪制滑動窗口的條件:最小像素數(shù)為50。同時設(shè)置變量和列表以記錄其滑動窗的起點(diǎn)位置和左右像素的索引。
具體步驟:在單通道圖像中通過遍歷逆透視中所有非零像素的坐標(biāo),并將其保存在列表中,在程序迭代循環(huán)時,遍歷并記錄左右滑動窗口位置的起點(diǎn)和左右車道線的像素索引,然后開始遍歷滑動窗口的數(shù)量,即可實(shí)現(xiàn)滑動窗口的繪制。通過設(shè)置窗口中有效像素數(shù)來確定有效像素數(shù)是否滿足重繪滑動窗口的條件,同時,將有效像素的橫坐標(biāo)平均值用作下一個窗口的基點(diǎn)坐標(biāo),依次迭代檢測至滿足循環(huán)次數(shù)。
多項(xiàng)式擬合問題是通過給定數(shù)據(jù)點(diǎn)p(xi,yi),其中i=1,2,3,…,m,獲得近似曲線y=φ(x),使φ(x)與表示輸入x和輸出y的關(guān)系f(x)偏差最小。常用的擬合評價指標(biāo)是通過偏差平方和最小來進(jìn)行評估,即最優(yōu)多項(xiàng)式系數(shù)是通過偏差平方和最小求得。通常,偏差平方和被用作損失函數(shù),損失函數(shù)等效于計(jì)算的預(yù)測值和真實(shí)值之間的差距,其值越小,則訓(xùn)練的模型越好。推導(dǎo)過程如下:首先,將擬合多項(xiàng)式設(shè)置為:
φ(x)=a0+a1x+a2x2+…+akxk
(2)
其中a0,a1,a2,…,ak為多項(xiàng)式系數(shù)。
然后使得偏差平方和最?。?/p>
(3)
來求得最優(yōu)多項(xiàng)式系數(shù)a0,a1,a2,…,ak。
本文通過滑動窗擬合獲得左右車道線像素的位置坐標(biāo),以生成用于繪制的x和y值,可以使用二階多項(xiàng)式來擬合左右車道線,繪制出相應(yīng)的左右車道線。多項(xiàng)式擬合結(jié)果如圖7所示。
最后,通過透視變換獲得逆變換矩陣,把繪制的左右車道線的鳥瞰二進(jìn)制圖通過逆變換矩陣轉(zhuǎn)換為原始圖像空間,并將結(jié)果與原始圖像合并。同時通過數(shù)學(xué)關(guān)系計(jì)算出曲率半徑和中心偏移位置,并在圖形上標(biāo)注它們。最終的車道線識別結(jié)果如圖8所示。
圖7 透視圖與滑動窗多項(xiàng)式擬合結(jié)果Fig.7 The perspective view and the sliding window polynomial fitting result
圖8 左邊為原圖,右邊為識別結(jié)果(黑色粗線區(qū)域)Fig.8 The original image and the recognition result
本文采用全局閾值及滑動窗多項(xiàng)式擬合車道線的方法,將全局閾值與其他閾值方法進(jìn)行比較,全局閾值不僅可以大大減少噪聲對目標(biāo)車道線的干擾,而且可以準(zhǔn)確地將目標(biāo)和背景分割開來。使用滑動窗多項(xiàng)式擬合方法,與全圖遍歷相比,只需要滿足窗口遍歷條件才能遍歷滑動窗檢測著重點(diǎn),它更適合復(fù)雜的環(huán)境,并且該算法簡單,高效且能準(zhǔn)確識別車道線。