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