王梓楠 何東 趙茂杰
(重慶交通大學(xué),重慶 400074)
車道線檢測是自動(dòng)駕駛車輛和駕駛輔助系統(tǒng)的關(guān)鍵技術(shù)之一[1]。通過準(zhǔn)確檢測車道線,智能車輛能夠?qū)崿F(xiàn)自動(dòng)駕駛、車道保持、車道偏離預(yù)警等功能,對改善車輛的主動(dòng)安全性具有重要作用[2-3]。
近年來,國內(nèi)外學(xué)者針對車道線檢測技術(shù)進(jìn)行了廣泛研究,提出了多種檢測算法。Borkar等[4]基于Hough 變換和迭代匹配濾波器,提出了一種利用隨機(jī)抽樣一致(RANdom SAmple Consensus,RANSAC)和卡爾曼濾波器實(shí)現(xiàn)魯棒的車道線檢測的方法;Liu等[5]提出基于Transformer 模型的車道線檢測算法,利用Transformer 模型的自注意力機(jī)制對車道線的細(xì)長結(jié)構(gòu)進(jìn)行建模;Zhao 等[6]利用深度強(qiáng)化學(xué)習(xí)引入粗略車道檢測模型,以進(jìn)行淮確的車道檢測和定位;劉康婷等[7]將圖像轉(zhuǎn)換為鳥瞰圖,使用LaneRidge檢測器提取車道線,并使用RANSAC算法對虛、實(shí)車道線進(jìn)行分類;翟煕照等[8]分析比較了目標(biāo)檢測算法和語義分割算法對車道線的識別能力和效果,結(jié)果表明,基于深度學(xué)習(xí)的語義分割網(wǎng)絡(luò)具有更好的車道線識別能力。盡管深度學(xué)習(xí)技術(shù)的引入使車道檢測算法的性能得到了提升,但現(xiàn)有的車道線檢測算法仍存在如下問題:算法的準(zhǔn)確性及魯棒性不足,在彎道工況下難以準(zhǔn)確識別車道線的位置,易發(fā)生偏移;大部分算法通常使用復(fù)雜的深度網(wǎng)絡(luò)提取圖像特征,導(dǎo)致實(shí)時(shí)性難以滿足實(shí)際應(yīng)用需求。
針對上述問題,本文提出一種基于滑動(dòng)窗口搜索的車道線檢測與車道偏離預(yù)警算法,首先對車載攝像頭拍攝的原始圖像進(jìn)行圖像預(yù)處理,包括攝像頭校準(zhǔn)、色彩和漸變過濾、透視變換等,再利用滑動(dòng)窗口搜索算法提取左、右車道線像素點(diǎn)坐標(biāo),并對像素點(diǎn)進(jìn)行二次多項(xiàng)式擬合獲取車道線,最后利用攝像頭單目測距原理判斷車輛是否偏離車道。
本文使用的道路視頻圖像由哈佛H6 車型前風(fēng)窗玻璃下沿車身正中位置的攝像頭采集,攝像頭與地面的距離為1.15 m,像平面垂直于車身行駛方向,采集地點(diǎn)為繞城高速公路,車速范圍為80~100 km/h。
本文采用的車道線檢測流程如圖1 所示,首先讀取車載攝像頭拍攝的實(shí)時(shí)道路視頻,將視頻按幀分隔為圖像,依次對每幀圖像進(jìn)行預(yù)處理,使用滑動(dòng)窗口搜索算法提取車道線像素點(diǎn),并利用二次多項(xiàng)式擬合車道線,然后通過計(jì)算車輛相對于中心線的位置判斷車輛是否偏離車道。為了直觀顯示車道線檢測結(jié)果,在輸出圖像上車道線區(qū)域內(nèi)分別使用綠色和紅色表示車輛未偏離車道和存在偏離車道的風(fēng)險(xiǎn)。

圖1 車道線檢測流程
2.1.1 攝像頭校準(zhǔn)
攝像頭在車載環(huán)境中捕捉道路圖像時(shí),車輛振動(dòng)、安裝角度和鏡頭特性等因素會(huì)造成透視畸變和鏡頭畸變,影響車道線位置和形狀,故需進(jìn)行攝像頭校準(zhǔn)[9]。
2.1.1.1 收集棋盤圖像
通過收集棋盤圖像,利用棋盤上已知的格點(diǎn)和邊緣來計(jì)算圖像的畸變情況,進(jìn)而估計(jì)攝像頭的畸變參數(shù)。將攝像頭固定,通過連續(xù)拍攝并調(diào)整攝像頭的角度和距離,獲得多個(gè)不同角度和距離的圖像,如圖2所示。

圖2 攝像頭拍攝棋盤圖像
2.1.1.2 計(jì)算校準(zhǔn)矩陣和失真系數(shù)
在特定的攝像頭標(biāo)定軟件中對每幀圖像進(jìn)行分析,檢測出棋盤格內(nèi)部的角點(diǎn),提取每幀圖像中棋盤格角點(diǎn)的坐標(biāo)信息,如圖3所示。

圖3 攝像頭校準(zhǔn)檢測
通過將棋盤圖像中的角點(diǎn)與實(shí)際棋盤格的物理尺寸進(jìn)行對應(yīng),建立起角點(diǎn)的映射關(guān)系,利用提取的角點(diǎn)坐標(biāo)信息和建立的角點(diǎn)映射關(guān)系,由標(biāo)定軟件計(jì)算攝像頭的內(nèi)、外部參數(shù),并生成攝像頭校準(zhǔn)矩陣和失真系數(shù)。校準(zhǔn)矩陣用于將三維空間中的點(diǎn)投影到圖像平面上,失真系數(shù)用于校正攝像頭鏡頭引入的畸變,主要包括徑向畸變和切向畸變。
徑向畸變的校正過程可表示為:
切向畸變的校正過程可表示為:
式中,xdistort、ydistort為經(jīng)畸變處理后圖像中的橫、縱坐標(biāo);x、y為原始圖像中的橫、縱坐標(biāo);r為徑向畸變的徑向距離;k1、k2、p1、p2、k3為失真系數(shù)。
攝像頭校準(zhǔn)矩陣Mcam為:
式中,fx、fy分別為攝像頭水平和垂直方向上的焦距;cx、cy分別為圖像平面上光學(xué)中心點(diǎn)的橫、縱坐標(biāo)。
2.1.1.3 失真校正
采集到的實(shí)時(shí)道路圖像存在徑向畸變和切向畸變,失真校正的主要目標(biāo)是使用失真系數(shù)逆向模擬并消除畸變效應(yīng),從而使圖像更加符合真實(shí)場景的幾何形狀,如圖4所示。

圖4 失真校正結(jié)果
2.1.2 色彩和漸變過濾
車道線在不同環(huán)境條件下可能呈現(xiàn)不同的顏色和亮度,并且可能受到光照、陰影等因素的影響,導(dǎo)致其視覺特征變化較大。為在各種復(fù)雜場景下準(zhǔn)確檢測車道線,本文對色彩過濾和漸變過濾兩種方法進(jìn)行組合創(chuàng)建通道過濾閾值,并生成二進(jìn)制圖像。
首先,將原始圖像由RGB 空間轉(zhuǎn)換到HLS 空間。在HLS空間中,利用L通道過濾圖像,在不同照明條件下對L通道進(jìn)行閾值處理均有助于更精確地從圖像中提取車道線信息。然后,采用索貝爾(Sobel)算子沿水平方向和垂直方向處理圖像,主要目的在于消除圖像中大部分水平線,同時(shí)去除噪聲和與車道線無關(guān)的信息,以更好地聚焦于垂直方向上的車道線特征。
將色彩和漸變過濾后的結(jié)果相結(jié)合生成二進(jìn)制圖像,如圖5 所示。其中車道線部分呈現(xiàn)較明顯的白色像素,其他區(qū)域?yàn)楹谏袼亍?/p>

圖5 色彩和漸變過濾相結(jié)合生成二進(jìn)制圖像
2.1.3 透視變換
透視變換的目的是將攝像頭的斜視角圖像轉(zhuǎn)換為鳥瞰圖,從而獲得更準(zhǔn)確、直觀的車道線信息。將圖片投影到新的視平面上,使平行線在新的視角中依然保持平行,從而消除原始圖像中的透視畸變[10]。該過程是二維(x,y)到三維(x',y',z'),再到另一個(gè)二維空間(x",y")的映射,原理如圖6所示。

圖6 透視變換原理
透視變換公式為:
本文透視變換的具體實(shí)現(xiàn)步驟為:
a. 定義源點(diǎn)和目標(biāo)點(diǎn):源點(diǎn)即圖像中的4 個(gè)角點(diǎn),這些角點(diǎn)構(gòu)成一個(gè)矩形,包圍車道區(qū)域。在透視變換后的圖像中,要保證車道線平行,需要定義目標(biāo)點(diǎn),即輸出圖像中的4 個(gè)角點(diǎn)。本文源點(diǎn)和目標(biāo)點(diǎn)的坐標(biāo)如表1所示。

表1 透視變換中源點(diǎn)和目標(biāo)點(diǎn)坐標(biāo)
b. 使用源點(diǎn)和目標(biāo)點(diǎn)計(jì)算透視變換矩陣。通過使用OpenCV getPerspective Transform 函數(shù)實(shí)現(xiàn),將源圖像中的像素映射到目標(biāo)圖像中的像素。
c.將計(jì)算得到的透視變換矩陣應(yīng)用于原始圖像,對圖像進(jìn)行變換,使車道線在輸出圖像中保持平行。
通過上述步驟,透視變換可以糾正原始圖像中的透視畸變,從而使得車道線在圖像中保持平行。為驗(yàn)證透視變換是否實(shí)現(xiàn)預(yù)期效果,本文將源點(diǎn)和目標(biāo)點(diǎn)繪制到測試圖像及其扭曲的對應(yīng)點(diǎn)上,觀察線條在扭曲后的圖像中是否平行,如圖7 所示。

圖7 透視變換結(jié)果
在對實(shí)時(shí)道路圖像應(yīng)用失真校準(zhǔn)、色彩和漸變過濾以及透視變換后,通過對圖5 中的二進(jìn)制圖像進(jìn)行透視變換,獲得了經(jīng)過校準(zhǔn)糾正的二進(jìn)制圖像,如圖8所示。然后,使用滑動(dòng)窗口搜索方法更容易找到清晰突出的車道線像素,但仍需進(jìn)一步處理以確定哪些像素屬于車道線,并區(qū)分左、右車道線。為此,需進(jìn)行圖像區(qū)域劃分、繪制直方圖、車道線像素識別、多項(xiàng)式曲線擬合和車道線繪制。

圖8 校準(zhǔn)糾正后二進(jìn)制圖像
2.2.1 圖像區(qū)域劃分
根據(jù)道路的幾何形狀,將圖像分為左、右2個(gè)區(qū)域,分別用于檢測對應(yīng)的車道線。本文通過定義一條垂直線來劃分圖像,將其分為左、右2個(gè)部分。
2.2.2 繪制直方圖
在透視變換后的二進(jìn)制圖像中繪制直方圖,如圖9所示。直方圖反映了不同像素在圖像中的分布情況,車道線通常在圖像中形成明顯的峰值,通過觀察直方圖能夠確定車道線所在的像素位置。

圖9 像素直方圖
2.2.3 車道線像素識別
本文針對每個(gè)區(qū)域,采用滑動(dòng)窗口搜索算法識別車道線所在的像素。滑動(dòng)窗口搜索是一種在圖像中定位目標(biāo)的方法,核心原理是通過滑動(dòng)一個(gè)固定大小的窗口,逐行掃描圖像,以識別目標(biāo)的位置。如圖10所示,本文滑動(dòng)窗口搜索的實(shí)現(xiàn)步驟如下:

圖10 滑動(dòng)窗口搜索過程
a. 創(chuàng)建一個(gè)滑動(dòng)窗口,從圖像底部開始,在圖像高度范圍內(nèi),將圖像劃分成9個(gè)滑動(dòng)窗口,每個(gè)滑動(dòng)窗口的寬度為50像素,高度為20像素。
b.在每個(gè)滑動(dòng)窗口中,繪制窗口內(nèi)白色像素的直方圖,并獲取直方圖峰值位置,峰值位置通常對應(yīng)于車道線所在的像素。
c.找到當(dāng)前滑動(dòng)窗口內(nèi)的車道線像素后,將下一個(gè)滑動(dòng)窗口的起始點(diǎn)移動(dòng)到上一個(gè)滑動(dòng)窗口中心的位置,并循環(huán)繼續(xù)進(jìn)行下一輪的搜索。
該方法能夠逐步、系統(tǒng)地在圖像中定位車道線像素的位置,為后續(xù)車道偏離預(yù)警提供關(guān)鍵信息。在實(shí)際應(yīng)用中,通過調(diào)整滑動(dòng)窗口的尺寸、位置和搜索策略,可以進(jìn)一步優(yōu)化該方法,以滿足不同道路情況和車輛行駛速度的需求。
2.2.4 多項(xiàng)式曲線擬合
在車道線檢測中,通過滑動(dòng)窗口搜索獲得車道線像素的位置后,使用二次多項(xiàng)式擬合得到車道線的曲線模型。二次多項(xiàng)式的數(shù)學(xué)形式為:
式中,v、k分別為車道線的橫、縱坐標(biāo);a、b、c為需確定的系數(shù)。
通過擬合二次多項(xiàng)式,可以獲得車道線曲線的系數(shù),根據(jù)已知的車道線像素點(diǎn)的坐標(biāo)計(jì)算最優(yōu)的參數(shù)a、b、c,從而得到車道線的二次多項(xiàng)式曲線模型。
2.2.5 車道線繪制
通過擬合算法得到左側(cè)車道線和右側(cè)車道線的二次多項(xiàng)式系數(shù),可以在圖像上直觀地顯示出車道線的位置,從而可視化車道線檢測結(jié)果,如圖11所示。


圖11 車道線可視化結(jié)果
如圖12所示,本文利用單目攝像頭測距算法計(jì)算識別出的車道線底部端點(diǎn)至圖像中間的距離,將此距離與車輛寬度的一半進(jìn)行比較,即可判斷車輛是否偏離車道。若車輛沒有偏離車道,車道線區(qū)域呈現(xiàn)為綠色,若車輛偏離車道,車道線區(qū)域?qū)⒂删G色變?yōu)榧t色,并發(fā)出偏離預(yù)警信號。

圖12 車道偏離預(yù)警算法
首先,計(jì)算識別出的車道寬度dwidth,即左、右側(cè)車道線之間的距離。然后,計(jì)算車輛相對于左、右側(cè)車道線的水平偏移量m、n:
式中,lleft、lright分別為左、右側(cè)車道線在圖像中的位置;lmid為車輛在圖像中的位置。
m>n時(shí),車輛向右偏離車道,m Toffset>0 時(shí),車輛向右偏離車道,Toffset<0 時(shí),車輛向左偏離車道,且|Toffset|越大,車輛偏離越遠(yuǎn)。本文參考文獻(xiàn)[11]中基于橫向判斷的車道偏離預(yù)警算法中的閾值設(shè)定,取0.5 m 作為車輛相對于車道中心線的偏離閾值。 本文算法采用Python3.7 編寫并使用OpenCV3.2.0 實(shí)現(xiàn),使用的計(jì)算機(jī)硬性條件為:銳龍75800X8C16T 處理器、Kingston 16 GB 內(nèi)存、Leadteck Quadro RTX4000 8 GB 內(nèi)存顯卡。采用的車道數(shù)據(jù)集由哈佛H6 車載攝像頭在繞城高速公路上拍攝獲得,得到的道路圖像視頻幀速率為30 幀/s、分辨率為1 920×1 080,共1 350 幀。拍攝的交通場景中融合了多種干擾路況,如車道線不清晰、周圍車輛及高速公路上標(biāo)志線干擾等情況。 本文對上述視頻進(jìn)行處理,并與基于霍夫變換的車道線檢測跟蹤及車道偏離預(yù)警算法[12]和基于深度學(xué)習(xí)的快速車道線檢測方法[13]進(jìn)行對比,測試結(jié)果如圖13 和表2 所示。由表2 可知,本文算法在識別正確率方面和實(shí)時(shí)性方面具備明顯優(yōu)勢。 表2 不同算法性能對比結(jié)果 圖13 車道偏離預(yù)警結(jié)果 經(jīng)過對多組實(shí)時(shí)道路視頻樣本的采集與分析,針對車速在80~100 km/h 范圍內(nèi)的各種情境,本文提出的滑動(dòng)窗口搜索算法均能在保證高識別準(zhǔn)確率和高預(yù)警率的同時(shí)滿足實(shí)時(shí)性要求。 本文針對車道線檢測和車道偏離預(yù)警問題,首先,對車載攝像頭采集到的實(shí)時(shí)道路圖像進(jìn)行圖像預(yù)處理,再采用滑動(dòng)窗口搜索算法對車道線進(jìn)行檢測,然后利用單目攝像頭測距算法判斷車輛是否偏離車道。試驗(yàn)驗(yàn)證結(jié)果表明,與檢測效果較好的現(xiàn)有檢測算法相比,所提出的算法在車道線檢測的準(zhǔn)確性和實(shí)時(shí)性方面顯著提升。3 試驗(yàn)結(jié)果及分析


4 結(jié)束語