周發(fā)華
(南寧職業(yè)技術(shù)學(xué)院,廣西 南寧 530008)
車道線檢測是實(shí)現(xiàn)車道線保持、車輛偏離預(yù)警等高級輔助駕駛的基礎(chǔ),但由于天氣、光照、路況、線損等外界條件的干擾,基于圖像識別的車道檢檢測檢測準(zhǔn)確率會降低。車道線誤檢輕則影響車輛在道路中的行駛狀態(tài),嚴(yán)重的會向車輛系統(tǒng)發(fā)出錯誤的指令,引導(dǎo)車輛突然偏離車道行駛,從而容易引發(fā)交通事故。因此在車道線檢測識別的基礎(chǔ)上,通過預(yù)測模型對車道線的發(fā)展進(jìn)行預(yù)測跟蹤,排除天氣、光照、路況、線損等干擾,對提高車道線的檢測準(zhǔn)確率,提升高級輔助駕駛安全有重要的意義。
目前車道線跟蹤識別應(yīng)用的方法是卡爾曼濾波法。鄧元望[1]等通過在車道線的兩邊劃定一個可信區(qū)域,實(shí)現(xiàn)了對擬合后的車道線進(jìn)行跟蹤;陳洋[2]等提出了一種融合車輛與車道線的檢測特征的卡爾曼濾波的車道線檢測的跟蹤系統(tǒng);吳彥文等[3]結(jié)合高精度地圖中車道線提出了一種擴(kuò)展卡爾曼濾波的車道線狀態(tài)追蹤方法。還有一些研究人員對其他的車道線跟蹤方法進(jìn)行了研究,但均為被廣泛應(yīng)用。李春明[4]提出一種基于幀差法與窗口搜索的車道線跟蹤方法。張森等在車道模型中引入多粒子濾波器,利用左右兩側(cè)車道線獨(dú)立傳播的粒子來偵測和追蹤一對車道邊界點(diǎn),實(shí)現(xiàn)車道線的識別和跟蹤[5]。
卡爾曼濾波法是主流的車道線跟蹤識別方法。本研究基于機(jī)器視覺,結(jié)合道路圖像中車道線的特點(diǎn),改進(jìn)優(yōu)化了卡爾曼濾波跟蹤方法,建立了跟蹤模型。并以車載行車記錄儀獲取的道路視頻為數(shù)據(jù)樣本,選取了受干擾的車道線圖像進(jìn)行了實(shí)驗(yàn),以驗(yàn)證文章提出的車道線內(nèi)跟蹤方法的有效性。
車道線跟蹤算法分車道線預(yù)測、車道線跟蹤判定2個部分。車道線預(yù)測包括,通過檢測獲取前一幀道路圖像和當(dāng)前幀道路圖像車道線的斜率、截距參數(shù),計算出2幀道路圖像車道線斜率、截距的變化率。檢測計算獲取的參數(shù)輸入Kalman濾波器后得到當(dāng)前幀道路圖像車道線的預(yù)測值,以預(yù)測車道線中心更新當(dāng)前幀道路圖像感興趣區(qū)域,通過opencv獲取感興趣區(qū)域內(nèi)的車道線的數(shù)據(jù),將獲取的數(shù)據(jù)通過最小二乘擬合處理后,完成車道線的跟蹤識別,車道線跟蹤模型如圖1所示。
圖1 車道線跟蹤流程圖
車道跟蹤算法處理的圖像是從車載記錄儀獲取的視頻行車記錄,視頻是由一幀一幀的圖像組成的。因此,基于機(jī)器視覺的車道線跟蹤實(shí)質(zhì)就是通過檢測計算獲取的上一幀道路圖像中車道線參數(shù)信息,來預(yù)判下一幀道路圖像中車道線的位置。預(yù)判的關(guān)鍵是要建立車道線跟蹤的算法。目前車道線跟蹤方法大多采用的是卡爾曼濾波??柭鼮V波算法利用前一時刻的狀態(tài)參數(shù)預(yù)估當(dāng)前時刻的狀態(tài),結(jié)合車道線跟蹤,卡爾曼濾波算法就是對當(dāng)前幀道路圖像對應(yīng)的噪時刻的車道線參數(shù)值與前一幀圖像對應(yīng)的噪-1時刻車道線的最優(yōu)參數(shù)值進(jìn)行比較,從而得出當(dāng)前幀道路圖像車道線的最優(yōu)參數(shù)值。由于當(dāng)前幀圖像的最優(yōu)參數(shù)值的確定只需要通過前一幀的狀態(tài)確定,而不涉及當(dāng)前幀往前的多幀圖像。因此,卡曼濾波算法極大減少了數(shù)據(jù)處理量,車道線跟蹤的實(shí)時性較好。
卡爾曼濾波方法是卡爾曼在20世紀(jì)60年代提出的一種線性濾波方法。為了排除因噪聲等原因引起的檢測結(jié)果失真和檢測準(zhǔn)確率不高的問題,卡爾曼濾波通過對檢測對象上一時刻的狀態(tài),來預(yù)測判定當(dāng)前時刻檢測對象的狀態(tài)。預(yù)測的前提條件是基于檢測對象狀態(tài)發(fā)展的連續(xù)性和狀態(tài)不出現(xiàn)突變。具體的做法就是將當(dāng)前狀態(tài)時刻測得的檢測值與前一狀態(tài)時刻系統(tǒng)計算的最優(yōu)值進(jìn)行加權(quán),加權(quán)的結(jié)果作為當(dāng)前檢測對象的狀態(tài),當(dāng)前的狀態(tài)符合系統(tǒng)狀態(tài)的變化發(fā)展趨勢。而不是只將當(dāng)前時刻的檢測結(jié)果作為當(dāng)前狀態(tài)判斷的依據(jù)。該方法可有效避免檢測錯誤和噪聲引發(fā)的系統(tǒng)狀態(tài)突變。
車道線卡爾曼濾波系統(tǒng)狀態(tài)方程和狀態(tài)評估方程可分別表示如下:
式中,用x(噪)表示噪時刻車道線的系統(tǒng)狀態(tài),Z(噪)表示噪時刻車道線的觀測方程。x(噪-1)為噪-1時刻車道線系統(tǒng)的狀態(tài);A和B為車道線系統(tǒng)的狀態(tài)參數(shù)矩陣;H為測量參數(shù)矩陣;U(噪)為噪時刻對車道線系統(tǒng)的控制量;W(噪)表示系統(tǒng)動態(tài)噪聲,V(噪)表示系統(tǒng)測量噪聲。
定義當(dāng)前時刻車道線系統(tǒng)狀態(tài)為x(噪),將上一幀道路圖像車道線狀態(tài)x(噪-1)輸入到車道線系統(tǒng)模型預(yù)測當(dāng)前時刻車道線狀態(tài)的值:
式中,X(噪-1/噪-1)為系統(tǒng)當(dāng)前車道線狀態(tài)X(噪)的預(yù)測值,該值是依據(jù)前一時刻X(噪-1)的值修正得出的最優(yōu)結(jié)果。車道線系統(tǒng)協(xié)方差預(yù)測方程:
式中,AT是A的轉(zhuǎn)置矩陣,P(噪/噪-1)是噪時刻預(yù)測值X(噪/噪-1)的協(xié)方差,P(噪-1/噪-1)是噪-1時刻更新后的協(xié)方差值,Q是系統(tǒng)工作過程中產(chǎn)生的噪聲。
接下來使用測量值對預(yù)測結(jié)果X(噪/噪-1)進(jìn)行修正,獲得時刻的最優(yōu)估計值X(噪/噪)為:
其中,Kg為卡爾曼增益:
最后,更新最優(yōu)估計值X(噪/噪)對應(yīng)的協(xié)方差進(jìn)行P(噪/噪-1)卡爾曼濾波的遞歸運(yùn)算。協(xié)方差更新后表達(dá)為:
從原理分析看,卡爾曼濾波系統(tǒng)包含了預(yù)測和校正2個步驟,系統(tǒng)重復(fù)進(jìn)行預(yù)測和校正的過程就是Kalman濾波。
Kalman濾波通過對車道線系統(tǒng)的預(yù)測狀態(tài)估計,實(shí)現(xiàn)對車道線的跟蹤。文章以左車道的跟蹤檢測為例定義卡爾曼濾波器如下。
當(dāng)前幀道路圖像對應(yīng)的噪時刻左車道線的跟蹤狀態(tài)向量X(噪)的定義為:
式(8)中slopeL和bL是當(dāng)前幀道路圖像對應(yīng)的時刻左車道線的斜率和截距,uL和vL是左車道線的斜率slopeL和截距bL的變化率。車道線跟蹤系統(tǒng)初始向量為:
系統(tǒng)的狀態(tài)轉(zhuǎn)移矩陣可以表示為:
系統(tǒng)測量矩陣為:
系統(tǒng)的測量向量為:
在分析了卡爾曼濾波原理和設(shè)定了車道線系統(tǒng)初值后,需要設(shè)計車道線跟蹤的具體工作流程,最終完成車道線的跟蹤檢測。首先要確定車道線卡爾曼濾波系統(tǒng)的2個工作狀態(tài):初始狀態(tài)和預(yù)測跟蹤狀態(tài)。初始狀態(tài)是卡爾曼濾波系統(tǒng)啟動的條件,預(yù)測跟蹤狀態(tài)是進(jìn)入卡爾曼濾波系預(yù)測車道線的工作狀態(tài)。
2.3.1 系統(tǒng)的初始化狀態(tài)
在進(jìn)行車輛跟蹤之前,需要獲取前一幀道路圖像車道線的參數(shù)作為卡爾曼濾波器的輸入。系統(tǒng)初始化,就是將當(dāng)前幀作為第一幀,識別擬合出第一幀圖像中的車道線,獲取車道線的斜率、截距等參數(shù),初始化獲取的參數(shù)就可以作為卡爾曼濾波器的輸入,用于預(yù)測下一幀車道線,判定當(dāng)前幀車道線是否為最優(yōu)估值。系統(tǒng)初始化的流程如圖2所示。將第一幀道路圖像所在區(qū)域設(shè)定為感興趣區(qū)域,提取所有車道線段的端點(diǎn)數(shù)據(jù)集,通過最小二乘完成車道線的擬合。
圖2 系統(tǒng)初始化
2.3.2 預(yù)測跟蹤
系統(tǒng)初始化之后,可以將初始化時獲得的第一幀車道線的參數(shù)作為卡爾曼濾波器的輸入計算預(yù)測當(dāng)前幀道路圖像車道線的估值,確定當(dāng)前幀道路圖像的感興趣區(qū)域,擬合出當(dāng)前車道線,完成車道線的跟蹤。預(yù)測跟蹤的主要步驟:
(1)修正車道線估值:最優(yōu)估計值是對當(dāng)前幀道路圖像車道線值估計,估計的基礎(chǔ)來自于前一幀道路圖像車道線的數(shù)據(jù)參數(shù)。具體步驟是:將上一幀道路圖像中車道線的參數(shù)作為卡爾曼濾波器的輸入,輸入的參數(shù)和當(dāng)前幀車道線測量值經(jīng)系統(tǒng)運(yùn)算后,得出當(dāng)前幀車道線的最優(yōu)估計值。估值修正的具體步驟是:設(shè)定一個偏離閾值作為判斷車道線跟蹤的誤差范圍,將卡爾曼濾波器計算出的車道線估值和最小二乘法計算出的車道線檢測值作差,差值如果在偏離閾值的范圍內(nèi),則判定當(dāng)前幀車道線車道線的檢測值有效;超出范圍則判定檢測值無效,系統(tǒng)以估計值作為卡爾曼濾波器的輸入,追蹤下一幀道路圖像的車道線。
(2)更新感興趣區(qū)域:跟蹤狀態(tài)下,利用連續(xù)2幀道路圖像車道線發(fā)展趨勢的連貫性,可以將跟蹤的區(qū)域設(shè)置在車道線附近,進(jìn)一步將當(dāng)前幀道路圖像的感興趣區(qū)域范圍縮小,以減少數(shù)據(jù)處理量,提高跟蹤系統(tǒng)響應(yīng)的速度。如當(dāng)前幀通過計算修正得到左右兩條車道線,則以左右車道線為中心,將向車道線分別向左向右平移1個車道線寬度的距離D,左右車道線平移后的2條直線構(gòu)成的區(qū)域即為下一幀道路圖像的感興趣區(qū)域。如圖3所示,更新后的感興趣區(qū)域RIO MASK明顯縮小了。
圖3 更新后的感興趣區(qū)域
2.3.3 車道跟蹤狀態(tài)切換
因?qū)嶋H道路路況復(fù)雜,車道線并不是完整清晰地呈現(xiàn)在道路圖像中。車道線的磨損、車道線的顏色污濁等會引起的道路圖像中車道線的缺失,導(dǎo)致系統(tǒng)檢測到的車道線參數(shù)發(fā)生突變。因此,忽略當(dāng)前幀的參數(shù),將前一幀的參數(shù)值作為輸入后一幀。如果連續(xù)4幀追蹤失效,則初始化系統(tǒng),重新對車道線進(jìn)行檢測。系統(tǒng)由初始狀態(tài)切換為跟蹤狀態(tài)的條件為:能夠在初始幀中檢測到左右2條車道線的參數(shù)。
為了驗(yàn)證改進(jìn)的卡爾曼濾波跟蹤算法的有效性,本實(shí)驗(yàn)用PC機(jī)配置為Intel Corei5-10代處理。在Pycharm開發(fā)環(huán)境下,以python3.7作為編程語言,利用OpenCV3計算機(jī)視覺庫,設(shè)計了車道線檢測跟蹤的程序。實(shí)驗(yàn)選用了4段視頻對車道線跟蹤的情況進(jìn)行了驗(yàn)證,包括車道線磨損、雨天、車道線中間噪聲等多種干擾情況,實(shí)驗(yàn)結(jié)果見表1。
表1 路視頻車檢檢測跟蹤的計算結(jié)果
是各種干擾情況下車道線檢測跟蹤的實(shí)驗(yàn)結(jié)果如圖4所示。
在圖4(a)中,車道線整體磨損明顯,尤其是右邊的車道線。系統(tǒng)檢測時會出現(xiàn)多幀道路圖像的車道線的丟失的情況。此時會將上一幀道路圖像車道線的修正值作為當(dāng)前幀道路圖像車道線的值,顯示出右邊的車道線。
在圖4(b)中,雨天路況比較復(fù)雜,水面掩蓋車道線的情況經(jīng)常發(fā)生,車道線參數(shù)信息會因此會丟失。此時系統(tǒng)會多次執(zhí)行初始化操作,檢測跟蹤車道線。
在圖4(c)中,道路中間的橫斷線橫跨了左右2條車道線,更新后的感興趣區(qū)域能將2車道線中間和2車道線外側(cè)的干擾信息排除,提高檢測的成功率。
在圖4(d)中,隧道中光線比較暗,但車道線信息丟失較少,檢測跟蹤效果較好。
圖4 干擾條件車道線下檢測跟蹤效果
針對干擾環(huán)境下車道線檢測失效的問題,提出一種改進(jìn)的卡爾曼濾波車道線跟蹤識別方法。該算法以結(jié)構(gòu)化道路車道線檢測為前提條件,將前一幀車道線參數(shù)作為基礎(chǔ),預(yù)測計算出當(dāng)前幀車道線的估值。通過實(shí)驗(yàn)驗(yàn)證,該算法有良好的準(zhǔn)確性與實(shí)時性。對排除因干擾引起的車道線錯檢漏檢,提高輔助駕駛的安全性有重要的理論和現(xiàn)實(shí)意義。