李 夢
(安徽信息工程學院機械工程學院,安徽蕪湖241000)
隨著無人駕駛技術的不斷發(fā)展,車道線的檢測與跟蹤逐漸成為研究熱點,很多學者都提出了車道線識別與跟蹤算法。莊博陽等[1]根據(jù)連續(xù)視頻幀之間的時間相關性,利用光流對車輛前方背景的相對移動進行了檢測,結(jié)果表明分辨率為(1 280×720)像素的圖像的處理速度為24.81幀/s。王其東等[2]基于近視野車道直線信息與雙曲線擬合方法,對彎道車道線進行了識別和尋優(yōu),實驗結(jié)果表明:對分辨率為(640×480)像素的圖像中車道線的平均識別率達91%以上,雨霧天氣下車道線的識別率達84.5%以上。蔡英鳳等[3]通過計算興趣區(qū)域(region of interest,ROI)灰度各向結(jié)構(gòu)張量的旋度,選擇變化趨勢最大的像素點作為特征點,利用霍夫變換(Hough transform,HT)來識別車道線,識別準確率達94.72%以上。段建民等[4]提出了一種基于改進簡單圖像統(tǒng)計閾值算法的車道線識別算法,利用興趣區(qū)域來確定車道線的相對位置,結(jié)果表明該方法對單車道的識別準確率可達96.40%。王超等[5]利用霍夫變換和最小距離法求解預定區(qū)域內(nèi)的消失點,并建立了梯形興趣區(qū)域,通過垂直分割圖像和搜索車道線位置來進行車道線識別,結(jié)果表明車道線的平均識別準確率達94.70%以上。曹月花等[6]通過改進SUSAN(smallest univalue segment assimilating nucleus,最小單值段同化核)算子對夜間昏暗道路進行邊緣增強,以降低環(huán)境噪聲的干擾;同時利用反射模型消除道路積水中光反射的影響,以提高識別準確率。陳無畏等[7]提出利用投票機制檢測兩側(cè)車道線遠方匯聚消失點,根據(jù)梯度方向投影計數(shù)獲得車道線上的邊緣點,并對置信度高的2個點進行直線擬合,實現(xiàn)車道線識別。Park等[8]提出了一種改進貝葉斯過濾器,用于降低觀測數(shù)據(jù)的噪聲影響與自身測量誤差的不確定度,并利用數(shù)據(jù)協(xié)方差進行實時修正,以過濾不確定度較高的數(shù)據(jù),從而提高車道線的識別準確率,同時通過對司機進行提示預警來避免事故的發(fā)生,實驗結(jié)果表明該方法可使車道線的識別準確率提高25.3%。Chen等[9]利用高斯混合模型來解決車道場景中的遮擋問題,并采用漸進概率霍夫變換(progressive probabilistic Hough transform,PPHT)進行線段檢測,結(jié)果表明該方法在單車道和多車道場景下均具有很高的識別準確率,但對處理器硬件的要求很高,僅能處理離線視頻或離線圖片,無法實現(xiàn)實時在線處理,多用于交通智能監(jiān)控領域。Katru等[10]提出利用叉運算符劃分圖像并進行多線程并行處理,運用霍夫變換和動態(tài)閾值來檢測車道線以提高識別準確率,并利用MATALB軟件對15張離線圖片進行車道線識別,平均識別準確率為97.56%,平均圖像處理時間為39.95 幀/s。Filonenko等[11]提出了基于并行處理的車道線識別系統(tǒng),先采用基于距離-顏色擬合模型的邊緣特征處理方法來檢測車道標記點,再利用范圍聚類演化與曲線擬合方法識別車道線,結(jié)果表明不同環(huán)境下車道線的平均識別準確率為95.76%。Deusch等[12]提出了一種基于濾波器的多車道檢測方法,該方法考慮了車道之間的依賴關系,多應用于農(nóng)村道路的車道線檢測。Bounini等[13]提出了一種計算機透視算法,通過霍夫變換、Canny邊緣檢測器、最小二乘技術和卡爾曼濾波器等實現(xiàn)車道的邊界檢測。王杰等[14]提出了一種基于雙邊濾波的圖像增強算法,解決了弱光環(huán)境下車道線不易檢測的問題,利用MATLAB R2015b軟件仿真得到的結(jié)果表明,在凌晨與傍晚等光線較弱的條件下,車道線的識別準確率為92.5%。魏玉東等[15]提出利用Gist-SVM(support vector machine,支持向量機)機器學習算法對直線形與彎曲形車道線進行自動檢測分類,對檢測到的直線車道線和彎曲車道線分別進行霍夫變換和多數(shù)小線段直線擬合,并在MATLAB GUI界面上顯示分析結(jié)果;但是,由于該方法基于機器學習算法,使用時需要大量路面圖片樣本,而實際路面情況具有多樣性、隨機性與復雜性等特性,因此需不斷擴大樣本的覆蓋面、種類及數(shù)量,以提高識別準確率。
綜上所述,現(xiàn)有車道線識別方法主要分為2類:1)基于道路圖像特征(如邊緣、顏色等)進行圖像分割與處理,實現(xiàn)車道線識別;2)基于道路模型,通過提取車道線像素、擬合車道線來完成車道線識別,其中擬合方法有直線擬合、二次曲線擬合和同心圓曲線擬合等。這2類車道線識別方法主要借助OpenCV、MATLAB、Halcon等軟件來構(gòu)建車道線識別模型,對導入的圖片或視頻文件進行離線分析。這些方法雖具有較快的圖像處理速度,但無法實現(xiàn)車道線在線識別與顯示,也無法根據(jù)實時處理結(jié)果來獲取車輛行駛的偏離情況,從而無法進行及時有效的偏離預警干預。另外,大部分車道線識別方法為了提高圖片處理速度,通過設定興趣區(qū)域來減少圖片處理運行量。興趣區(qū)域的選擇取決于路面信息,對于離線圖片文件,可通過參數(shù)調(diào)試來獲得最佳區(qū)域坐標;但是,對于路面情況變化較大的視頻文件或?qū)崟r采集的圖片文件,若仍然利用固定的參數(shù)值,則會影響動態(tài)識別準確率和車道線擬合結(jié)果。
基于此,筆者提出一種基于機器視覺的不設定興趣區(qū)域的車道線在線識別系統(tǒng),并通過構(gòu)建車道線識別數(shù)學模型,對車輛行駛偏離超過安全范圍的情況進行提示與預警,以同步實現(xiàn)車道線識別與偏離預警。
借助VBAI(Vision Builder for Automation Inspection)平臺搭建車道線在線識別系統(tǒng),主要包括圖像預處理、車道線識別與偏離預警、LabVIEW平臺API(application programming interface,應用程序接口)腳本調(diào)用三部分,其設計框圖如圖1所示。
車道線在線識別系統(tǒng)的工作流程為:首先,對實時采集的彩色道路圖像進行灰度化、濾波、二值化處理,獲取利于后續(xù)車道線識別的低噪、高質(zhì)圖像;然后,構(gòu)建灰度值采集線,當采集線穿過車道線時,灰度值發(fā)生突變,當某點的灰度值超過設定閾值時,記該點為邊緣突變點,借助直線擬合算法對所有邊緣突變點進行擬合,完成車道線識別,并在此基礎上,計算在車輛行駛過程中左、右車道線的遠方消失交點坐標和車輛偏離車道中心線的相對航偏角,針對相對航偏角超過安全閾值的不同情況,通過在人機交互界面上顯示不同顏色的提示框來進行偏離提醒或預警;最后,利用LabVIEW平臺中的API腳本調(diào)用功能建立VI(virtual instrument,虛擬儀器)程序,載入與調(diào)用VBAI平臺中的圖像處理程序,完成對實時采集圖像的連續(xù)處理,以實現(xiàn)車道線在線識別。
圖1 車道線在線識別系統(tǒng)設計框圖Fig.1 Design block diagram of online lane line recognition system
攝像頭采集的道路圖像為彩色圖像,若直接用于車道線識別,會增加整體計算時間和計算機內(nèi)存使用量,影響識別速度。因此,需先對原始彩色圖像進行灰度化處理。
灰度化處理后的圖像經(jīng)濾波降噪后才能進行二值化處理。常見的線性濾波方法有線性梯度算子濾波、拉普拉斯算子濾波、平滑濾波和高斯算子濾波;常見的非線性濾波方法主要有差值濾波、Sobel算子濾波、Prewitt算子濾波和中值濾波等。根據(jù)本文所采集的道路圖像的特點,分別采用拉普拉斯算子濾波、Sobel算子濾波和高亮細節(jié)卷積濾波等方法對灰度圖進行處理。圖2所示為攝像頭采集的原始道路圖像和利用不同方法濾波后的道路圖像。
由圖2可知,利用高亮細節(jié)卷積濾波方法對圖像進行濾波后,車道線上的邊緣特征得到較好保留,周圍環(huán)境噪聲信息也被有效濾除,且無新的環(huán)境噪點,因此本文選擇高亮細節(jié)卷積濾波方法。
圖2 原始道路圖像和不同方法濾波后的道路圖像Fig.2 Original road image and filtered road images by different methods
道路圖像經(jīng)灰度化與降噪處理后,其像素點的灰度值變換范圍為0~255。為提高車道線邊緣點的識別準確率,對圖像進行二值化處理:通過對比原始圖像上像素點的灰度值與設定的灰度閾值,將灰度值設置為0或255,即呈現(xiàn)為黑白圖像。二值化處理可有效地分割車道線與周圍環(huán)境,尤其是在車道線圖像與周圍路面圖像的灰度值接近的情況下,有效的二值化處理可提高車道線識別準確率。假設經(jīng)灰度化和濾波處理后圖像中像素點的灰度值為f(x,y),設定的灰度閾值為T,則最簡單的圖像閾值分割方法可表示為:
式中:g(x,y)為二值化處理后圖像中像素點的灰度值。
由式(1)可知,若某像素點的灰度值大于等于設定的灰度閾值時,二值化處理后該點的灰度值為255,呈白色;若某像素點的灰度值小于設定的灰度閾值時,二值化處理后該點的灰度值為0,呈黑色。根據(jù)所設定的灰度閾值的不同,二值化處理后的圖像將呈現(xiàn)不同的效果。
圖3所示為采用不同灰度閾值時道路圖像的分割效果。通過對比發(fā)現(xiàn),當灰度閾值T=74時,左、右車道線附近仍保留了很多噪點;當灰度閾值T=92時,車道線信息得到較好保留,周圍噪點也被有效抑制?;诖?,本文選擇灰度閾值T=92,對道路圖像進行二值化處理,得到黑白道路圖像,如圖4所示。
圖3 采用不同灰度閾值時道路圖像的分割效果對比Fig.3 Comparison of segmentation effect of road images by using different gray thresholds
圖4 二值化處理后的道路圖像Fig.4 Road image after binary processing
本文設計的車道線識別過程為:首先,建立圖像坐標系,以拍攝的道路圖像下邊緣中心為原點,構(gòu)建間隔相應角度、方向向外輻射的灰度值采集線,當灰度值采集線與車道線的交點的灰度值超過設定的灰度閾值時,記該點為邊緣突變點,如圖5所示;然后,利用直線擬合算法對所有邊緣突變點進行擬合,得到擬合的車道線;最后,利用直線擬合得分(line fit score,LFS)方法找到精度等級最高的擬合車道線,完成車道線識別[16]。
圖5 車道線邊緣突變點檢測Fig.5 Detection of edge sudden change point of lane line
基于直線擬合算法和LFS方法的車道線擬合步驟如下:
1)根據(jù)像素半徑從由所有邊緣突變點組成的特征數(shù)據(jù)集中選擇數(shù)據(jù)子集。擬合前,隨機選擇2個像素點作一條直線,根據(jù)該直線附近像素點的分布情況,以包含直線兩側(cè)70%以上像素點作為覆蓋范圍,設定初始像素半徑。然后,根據(jù)設定的像素半徑,獲得有效像素點,組成數(shù)據(jù)子集,如圖6所示。
2)根據(jù)數(shù)據(jù)子集進行直線擬合,并計算所有有效像素點到擬合直線的平均平方距離(mean square displacement,MSD),記作LMSD。LMSD用于衡量擬合直線的精度,LMSD越小表明擬合直線的精度越高。LMSD的計算式為:
圖6 擬合直線與數(shù)據(jù)子集Fig.6 Fitting line and data subset
式中:dk為有效像素點到擬合直線的距離;N為有效像素點個數(shù)。
在初始像素半徑的基礎上,增大像素半徑,獲得與之對應的數(shù)據(jù)子集并計算LMSD。重復該步驟,選取LMSD較小的直線作為候選直線。
4)對候選直線進行優(yōu)化,求解出直線擬合得分TLFS達到要求的直線,記為擬合車道線[17]。TLFS的計算式為:
式中:R為像素半徑。
利用上述方法得到最佳擬合車道線。圖7所示為某車道右側(cè)內(nèi)車道線識別結(jié)果。
圖7 某車道右側(cè)內(nèi)車道線識別結(jié)果Fig.7 Lane line recognition result of the right side of a certain lane
完成內(nèi)側(cè)車道線識別后,通過建模計算出左、右內(nèi)側(cè)車道線遠方消失交點的坐標,并在此基礎上計算車輛與車道中心線的相對航偏角,即圖8中遠方消失交點O'與坐標系原點連線與x軸的夾角β。在車輛行駛過程中,當車輛偏離車道中心線且靠近左側(cè)車道線時,相對航偏角大于90°,如圖8(a)所示,隨著偏離加劇,相對航偏角增大;當車輛行駛偏離中心線且靠近右側(cè)車道線時,相對航偏角小于90°,如圖8(b)所示,隨著偏離加劇,相對航偏角減小。
圖8 車輛行駛偏離模型Fig.8 Vehicle driving deviation model
若車輛行駛時偏離車道中心線,當檢測到在駕駛員非主動變道行為下仍存在靠近一側(cè)車道線行駛的情況時,通過對比實測相對航偏角與設定的安全相對航偏角閾值,對車輛行駛安全進行判斷:當實測相對航偏角大于設定閾值時,表明行駛偏離嚴重,存在安全隱患,通過人機交互界面上不同顏色的提示框?qū)︸{駛員進行提示或預警,以敦促駕駛員調(diào)整行駛方向,避免發(fā)生交通事故;當車輛處于安全行駛范圍時,提示框中顯示左、右內(nèi)側(cè)車道線遠方消失交點O'的坐標與相對航偏角β,如圖9所示。
圖9 安全行駛時人機交互界面上提示框的顯示情況Fig.9 Display situation of prompt box on the human-computer interface during driving safely
為了實現(xiàn)對實時采集圖像的在線處理,通過LabVIEW平臺中的API腳本調(diào)用功能來調(diào)用VBAI平臺中的圖像處理程序,同時利用Development Toolkit工具包在while循環(huán)體中執(zhí)行相應的腳本程序,完成圖像顯示、引擎運行、檢測腳本啟用、Inspection檢測和退出等步驟,對車輛行駛過程中實時采集的道路圖像進行處理。圖10所示為LabVIEW平臺API腳本調(diào)用圖像處理程序界面,用戶可以通過圖像處理程序的連續(xù)運行獲得車道線識別結(jié)果。
圖10 LabVIEW平臺API腳本調(diào)用圖像處理程序界面Fig.10 Interface of image processing program called by Lab-VIEW platform APIscript
為了驗證所提出的車道線在線識別系統(tǒng)的準確性與可靠性,進行了實際的車道線識別試驗。選擇在蕪湖市弋江區(qū)大工山路、吳霞山東路、九華南路與花津南路路段開展試驗,試驗車輛為大眾新款捷達;計算機的硬件配置為Intel CORE i5處理器,主頻率為3.2 GHz,內(nèi)存為4 GB,系統(tǒng)為Windows10(32位);視覺采集硬件為大恒HV1300FM 1394相機和3Mega Pixel鏡頭(焦距為5~55 mm,光圈為F1.4IR固定光圈),安裝在前擋風玻璃車輛縱向中軸線處。根據(jù)中國道路標準,城市道路中機動車道寬度為3.5~3.75 m,新款捷達車的寬度為1.706 m,半寬為0.853 m,建立車輛-城市道路示意圖,如圖11所示。
圖11 車輛-城市道路示意圖Fig.11 Schematic illustration of vehicle-city road
在進行車道線識別試驗之前,需先標定車道中心線。根據(jù)前文理論分析可知,車輛行駛偏離車道中心線的程度由相對航偏角β來衡量:β>90°表示車輛行駛左偏,β=90°表示車輛中軸線與車道中心線重合,β<90°表示車輛行駛右偏?;诖耍瑢嚨乐行木€進行標定,將車輛停在車道中心,使得車輛中軸線與車道中心線重合,通過測量獲得多組試驗結(jié)果。實際測得的相對航偏角平均值為90.052°,誤差為0.052°,如圖12所示。然后,改變車輛的停放位置,再設計多組試驗進行對比,對車輛中軸線到車道中心線的距離進行標定測量,獲得車輛位于不同位置處時的相對航偏角,平均誤差為0.043°。
圖12 車道中心線標定結(jié)果Fig.12 Lane centerline calibration results
利用設計的車道線在線識別系統(tǒng)進行車道線識別試驗,結(jié)果如表1所示。結(jié)果表明:該系統(tǒng)能夠有效識別出車道線以及左、右車道線遠方消失交點,系統(tǒng)識別得到的相對航偏角與實際測得的相對航偏角的偏差為0.031°~0.056°;采用不同數(shù)量灰度值采集線進行車道線識別時的識別準確率是不同的。
根據(jù)試驗結(jié)果,設定車輛輪廓外邊界到車道線一側(cè)的距離為30 cm作為預警距離:當車輛行駛左偏且達到預警距離,即相對航偏角大于安全閾值114.5°時,發(fā)出左偏預警;當車輛行駛右偏且達到預警距離,即相對航偏角小于安全閾值76.5°時,發(fā)出右偏預警。當車輛左、右偏移達到預警距離閾值時,車道線在線識別系統(tǒng)人機交互界面中提示框呈紅色警示狀態(tài)。
表1 車道線識別試驗結(jié)果Table 1 Lane line recognition test results
由于行車速度的不同和路面情況的復雜性,為了進一步提高高速行駛狀態(tài)下車輛偏離安全預警的及時性,增設偏離距離40 cm為提醒閾值,當車輛行駛偏離距離為30~40 cm時,系統(tǒng)進行安全提醒,旨在為駕駛員爭取更多寶貴的反應時間,保證行駛安全。通過車道線識別試驗可得,當車輛行駛偏離距離為40 cm時,對應的相對航偏角為111.5°(左偏)與79.5°(右偏)。因此,當相對航偏角為111.5°~114.5°時,系統(tǒng)發(fā)出左偏提醒;當相對航偏角為76.5°~79.5°時,系統(tǒng)發(fā)出右偏提醒;當相對航偏角為79.5°~111.5°時,為安全行駛范圍,系統(tǒng)不作提醒。車道線在線識別系統(tǒng)發(fā)出偏離提醒時,人機交互界面中提示框呈粉紅色提醒狀態(tài)。
為了驗證所提出的車道線在線識別系統(tǒng)對不同環(huán)境的適應性,在不同的道路環(huán)境下展開大量車道線識別試驗。圖13所示分別為夜晚、積水、彎道等非常規(guī)環(huán)境下的車道線識別結(jié)果。
在不同環(huán)境下完成多組車道線識別試驗后,統(tǒng)計圖像處理速度和車輛行駛偏離預警準確率,結(jié)果如表2所示。結(jié)果表明,所設計的車道線在線識別系統(tǒng)在不同環(huán)境下均具有較高的圖像處理速度與行駛偏離預警準確率。
為進一步驗證本文車道線在線識別算法運行結(jié)果的準確性,與文獻[1,3-4,10]所得結(jié)果進行對比,如表3和表4所示。
部分現(xiàn)有車道線識別方法采用設定興趣區(qū)域的算法來減少圖像處理運行量和提高圖像處理速度,但由于被鎖定的興趣區(qū)域無法動態(tài)適應變化的路面,使得這些方法存在一定的識別誤差。通過對比設定興趣區(qū)域的車道線識別方法發(fā)現(xiàn),識別誤差一般在圖像快速采集與處理過程中出現(xiàn)。而本文所提出的車道線在線識別方法不設定固定的興趣區(qū)域,能夠?qū)Σ杉膱D像進行實時處理,確保了較高的識別準確率與較強的環(huán)境適應力。圖14所示為采用設定固定興趣區(qū)域的方法和本文方法的車道線識別結(jié)果比較。
圖13 不同環(huán)境下車道線識別結(jié)果Fig.13 Lane line recognition results under different circustances
表2 圖像處理速度和車輛行駛偏離預警準確率Table 2 Image processing speed and vehicle deviation warning accuracy
表3 車道線識別準確率對比Table 3 Comparison oflaneline recognition correct rate %
表4 圖像處理速度對比Table 4 Comparison of image processing speed
圖14 不同方法的車道線識別結(jié)果比較Fig.14 Comparison of lane line recognition results of different methods
此外,隨著人工智能技術在無人駕駛領域的應用,常通過借助深度學習理論來搭建卷積神經(jīng)網(wǎng)絡的識別算法,以對樣本進行訓練。利用卷積網(wǎng)絡函數(shù)model.add(Conv2D,padding='valid',strides,activation,name))、池化函數(shù) model.add(MaxPooling2D(pool_size=pool_size))、上采樣函數(shù)model.add(UpSampling2D(size=pool_size))和反卷積函數(shù)model.add(Conv2D Transpose,padding,stride,activation,name))等函數(shù)對離線視頻文件中的圖像進行處理時,一般需要采用圖形處理器(graphics processing unit,GPU)來提高圖片處理速度。圖15(a)所示為采用GPU(英偉達GTX1050)和傳統(tǒng)車道線識別算法,利用深度學習理論,在TensorFlow終端輸出的車道線識別結(jié)果[18],該方法對顯卡及圖像處理器配置的要求較高,且高速運行時仍然存在一定的邊緣識別誤差;圖15(b)所示為采用一般中央處理器(central processing unit,CPU)和本文算法得到的車道線識別結(jié)果,該方法硬件成本較低,且識別準確率較高。
圖15 采用不同圖像處理硬件時的車道線識別結(jié)果Fig.15 Recognition results of lane line by using different image processing hardware
為更好地服務自動駕駛車輛中的車道保持輔助系統(tǒng),基于現(xiàn)有多種車道線識別方法,開展了以下工作:
1)針對傳統(tǒng)車道線識別方法相對復雜且對硬件要求較高的問題,提出了一種基于機器視覺的車道線在線識別系統(tǒng),簡化了識別難度且提高了識別準確率。
2)針對傳統(tǒng)車道線識別方法只能對離線視頻或圖片進行處理,無法展開實時識別的問題,借助Lab-VIEW平臺中的API腳本調(diào)用功能來調(diào)用VBAI平臺中的圖像處理程序,實現(xiàn)車道線在線識別。
3)針對傳統(tǒng)車道線識別方法無法進行行駛偏離預警,功能較為單一的問題,對左、右車道線遠方消失交點坐標與相對航偏角進行實時測量并將其顯示在人機交互界面上,并根據(jù)偏離情況,利用不同顏色提示框進行提醒與預警,優(yōu)化了系統(tǒng)的功能,提高了系統(tǒng)的復合性與實用性。