蔡英鳳 高 力 孫曉強 陳 龍 王 海
江蘇大學汽車工程研究院,鎮(zhèn)江,212000
目前,無人駕駛技術吸引了人們極大的興趣。根據(jù)車道線對車輛定位是無人駕駛技術的基本功能。從車道線的位置可以推測出車輛自身的位置、航向等信息。陳無畏等[1]提出一種基于邊緣點投影的車道線快速識別算法,在目標搜索區(qū)域內,用邊緣信息提取車道特征。何鵬等[2]通過背景減除和二值化方法得到車道線的特征點,使用Hough變換和Catmull-Rom樣條曲線確定近場和遠場的車道線。王楠[3]利用白色在YCbCr彩色空間的Y分量和黃色在Cb分量的屬性區(qū)分黃色和白色車道線,但是沒有給出區(qū)分虛線和實線的方法。NIU等[4]使用逆透視映射來生成道路圖像的俯視圖,使用簡化的Hough變換檢測得到車道線。王海等[5]提出基于方向可變Haar特征和雙曲線模型的分布式車道線檢測方法,采用方向可變Haar特征提取邊緣特征點并擬合車道線模型。由于車道線在時空中是連續(xù)的,故有些算法用上一幀的檢測結果約束下一幀的搜索范圍和參數(shù)空間。李超等[6]在用Hough變換求解車道線參數(shù)后,利用幀間關聯(lián)的算法對當前幀車道線模型進行約束,從而減少了圖像數(shù)據(jù)的運算量。由于實際環(huán)境中的不確定性,如來自汽車和樹木的陰影,照明條件的變化,破舊的車道標線和其他標志(指向箭頭、警告字、斑馬線等),對現(xiàn)有的識別算法造成了很大的干擾,因此,基于局部對比的車道線識別算法存在很大的局限性,車道線識別依然是一個充滿挑戰(zhàn)的課題,需要設計一種綜合考慮周圍環(huán)境的車道線識別算法。
基于邊緣特征的車道線提取算法利用閾值區(qū)分車道線和其他物體,有一個明顯的缺點在于對噪聲敏感(即在不同環(huán)境下需要選用不同的閾值),當光照充分時需要高閾值,當存在陰影時需要選擇低閾值,因此,閾值的選擇需要采用其他算法,如大津閾值法[7]等。此外,另一個問題在于閾值局限于較小的范圍,特征點選取僅通過比較相鄰2個像素點的灰度值得到,而不考慮鄰近像素點的相似性。為解決上述問題,LóPEZ等[8]使用了“脊度量”的新特征提取算法進行車道線識別,且取得了較好的效果。該算法首先對圖像進行預處理,然后計算脊度量提取特征點,最后擬合車道線并用隨機抽樣一致(random sample consensus,RANSAC)算法進行檢驗。但該算法存在以下缺點:①噪聲過濾機制不健全;②在脊度量篩選過程中使用固定的閾值,無法適用于復雜的場景;③無法區(qū)分車道線中的虛線和實線。
為解決上述問題,本文在基于脊度量特征的車道線識別的傳統(tǒng)算法基礎上提出了一種基于自適應閾值的噪聲過濾方法,該方法可有效地提高識別速度和識別效率,在檢測出車道線的前提下,增加了線形判斷,以區(qū)分虛線和實線。
在城市等道路工況下,車道線邊緣部分由于磨損,往往出現(xiàn)相對暗淡、對比度變差的情況,這使得傳統(tǒng)基于梯度突變的各類邊緣提取算子失效。而車道線中間區(qū)域白色部分往往保存較好,從形態(tài)學模型上來看,將每行車道線最白的部分連接起來就形成了“脊”。求解脊度需要比較該像素點和周圍像素點的灰度值,因此脊是一個全局算子,不易受到局部污染的影響,所以脊度特征提取算法比邊緣檢測算法更具魯棒性。
脊度沒有嚴謹?shù)臄?shù)學定義,本文采用文獻[8]的定義。對原圖進行灰度化處理,再用高斯濾波器進行卷積,得到
其中,Lσd(x)為卷積后的圖像;L(x)為原始的灰度圖像;Gσd(x)為各向異性高斯濾波器,其協(xié)方差矩陣=diag(σdx,σdy),其中σdy為固定值,σdx為變化值,隨著車道線的寬度變化而改變,具體變化取決于相機的焦距和俯仰角。
計算每個像素點沿第u行和第v列方向的梯度向量:
通過計算梯度向量的點乘,得到二階偏導矢函數(shù)sσd(x),其作用類似于Hessian矩陣,表達式為
計算 sσd(x)與另一個高斯濾波器 Gσi(x)的卷積,得到結構張量場 Sσdσi(x):
其中,Gσi(x)表示相機標定的修正,與相機安裝位置有關,默認為1。
將Sσdσi(x)較大的特征值對應的特征向量定義為并將投影在 wσd(x)上得到
定義一個新向量 w?σdσi(x):
圖1中,針對方框內的區(qū)域(圖1b)計算脊度量,可以得到圖1c中的結果,可以看出,脊度量在Z軸方向相對于路面其他區(qū)域有明顯突變,可以通過閾值提取。有關脊度量算法的詳細解釋和參數(shù)設置,可以參考文獻[7]。
通過計算可知,車道線軸線方向的脊度量數(shù)值明顯大于其他區(qū)域的脊度量數(shù)值,因此可以通過閾值法提取。整個圖像尺寸為480像素×720像素。考慮到圖片上部區(qū)域為天空和遠景,因此興趣區(qū)域選擇下部區(qū)域,大小為255像素×720像素,見圖1a。理論上,車道線短于對角線長度,即不大于750像素。極端情況下,車道兩邊均為雙白線,車道線的有效像素點也少于750×4=3 000個。通過直方圖(圖2)可以看到脊度量的分布,像素對應的脊度量大致范圍為[-2,2],因此,可以認為累加到3 000個像素點的區(qū)間所對應的最小值即為脊度量的閾值。將像素對應的脊度量按照數(shù)值從大到小排列,選取脊度量的前3 000個像素點進行分析。
圖1 脊度量數(shù)值計算Fig.1 Calculation of ridge value
圖2 脊度量直方圖Fig.2 Ridge histogram
車道線特征點的提取見圖3。提取閾值后得到圖3c,從圖中可以明顯看出車道線,但由于陰影和路面不規(guī)則,在車道上依然存在各種噪聲像素點,這會對Hough變換造成很大干擾。通過聚類可以剔除絕大多數(shù)無用的特征點,見圖3d。按照道路的規(guī)定,虛線長度不少于3 m,結合攝像頭的標定,遠處的虛線在圖像中占5個像素點,因此,設置連續(xù)的閾值為5,即剔除連續(xù)不超過5個像素點的特征點。
圖3 車道線特征點提取Fig.3 Feature point extraction of lane line
車道線的模型主要有直線、雙曲線、拋物線等,各有優(yōu)勢,不存在絕對的優(yōu)劣區(qū)別。考慮到車道線的曲率,可以將近處的車道線近似為直線。綜上,本文采用直線車道線進行研究。直線模型的優(yōu)勢在于模型簡單,近視場干擾少,識別準確率高。
常用的直線擬合算法通過Hough變換實現(xiàn)。Hough變換是從二維空間到參數(shù)空間的一種映射,對于直線變換,這種映射表現(xiàn)為從二維空間中的某點到參數(shù)空間中的某條曲線的對應關系。由數(shù)學對偶性原理可知,二維空間中點的共線性對應于參數(shù)空間中曲線的共點性,以此為依據(jù)來提取直線的相關參數(shù),其映射關系表達式如下:
式中,(x,y)表示圖像中的像素點位置;ρ為經(jīng)過像素點(x,y)的直線距原點的法線距離;θ為該法線與軸的夾角。
經(jīng)過Hough變換得到圖片中所有的直線,見圖4,具體做法可參考文獻[9]。在此基礎上,通過消失點的算法可以過濾其他直線得到本車道兩側的車道線。
圖4 用Hough變換獲取車道線Fig.4 Lane line from Hough transform
主要的車道線線形有虛線和實線,但大多數(shù)識別算法不區(qū)分兩者。在道路環(huán)境感知中,虛線和實線有非常重要的作用,區(qū)分兩者有利于車輛進一步推斷自身所在環(huán)境,如在車道保持算法中對虛線和實線的偏離預警應有不同的策略,避免過于嚴苛的報警而成為駕駛員的負擔。本文提出一種利用特征點距離方差區(qū)分實線和虛線的算法。本文算法基于兩個假設:①虛線是間斷的,在較小的區(qū)域內會觀測不到車道線;②在距離本車較近區(qū)域內,不存在或極少有其他車輛等障礙物的遮蔽干擾。
算法流程如下:①識別車道線;②選取圖像中350~400行內的車道線特征點放入集合S中;③計算S中一段像素點的行方向距離方差;④對比連續(xù)10幀的方差,若方差平均值小于閾值,則認為是虛線;若方差平均值大于閾值,則認為是實線。
圖5為連續(xù)的10幀圖片,可以看出,左側車道線因連續(xù)而一直可見,右側車道線則間斷可見。由此可以認為,右車道是虛線,而左車道是實線。
圖5 連續(xù)的局部車道線Fig.5 Continuous local lane line
表1給出了對應圖5中局部車道線內特征點的行方向坐標方差。因左車道線是實線,故坐標方差值穩(wěn)定;而右車道是虛線,所以坐標方差值波動較大。圖6通過折線圖更直觀地反映了這一趨勢。
表1 特征點行方向坐標方差Tab.1 Variance of feature points in row direction
圖6 坐標方差折線圖Fig.6 Coordinate variance line diagram
為驗證該算法的實時性和有效性,使用MATLAB編程進行了大量實驗。測試環(huán)境為Intel i5處理器(2.60 GHz)的Windows7操作系統(tǒng)。實驗環(huán)節(jié)采集由不同工況下的道路圖片組成的測試集,用以檢驗車道標記線的識別效果。
本節(jié)用多個圖片集對比了傳統(tǒng)的噪聲過濾算法和本文提出的過濾算法,見圖7。每組圖片集選擇相同數(shù)量的圖片進行定量比較。第一列為攝像頭采集的原圖,第二列為傳統(tǒng)算法的處理效果,第三列為本文算法的處理效果。圖7a所示為一個簡單的場景,兩種算法的識別結果類似。圖7b所示為有地標干擾的情況,兩種算法均能識別白色長條狀物體,區(qū)別不明顯。圖7c所示為在黃昏場景下的對比,車道線和路面對比度相對白天的對比度較低,傳統(tǒng)算法的閾值固定,故剔除了大量有效特征點。圖7d所示為雨天情況,地面存在大量水漬,車道線被雨水淹沒,兩種濾波均存在被干擾的情況,但改進后的方法更多地保留了正確的特征點。
從定性對比結果中可以發(fā)現(xiàn),本文算法在普通場景下與傳統(tǒng)算法的處理效果類似,但是在有陰影、字符等干擾的情況下,本文所提方法能有效地去除誤導信息,保留有效的車道線。
圖7 濾波效果對比Fig.7 Comparion of the filtering effect
本實驗中,選擇一組車輛在三車道中變換車道的圖片集,檢驗算法對車道線線形的識別效果。車輛從最右側車道變換到中間車道,換道前后,左側車道線由實線變成虛線,而右側車道線始終為虛線。檢測效果見圖8,其中1表示左車道線為實線,0.5表示左車道線為虛線,-1表示右車道線為虛線。在幀數(shù)為923~997范圍內,由于換道使得車道線連續(xù)檢測失敗,從而導致無法檢測出虛線和實線,因此,左右車道線的線形檢測結果均為0。實驗結果表明,在車道線檢測無誤的情況下,該算法均能區(qū)分線形。通過線形檢測,可以知道兩側車道是否可用,可供下一步換道決策作參考。
圖8 虛、實車道線識別結果Fig.8 Recognition result of virtual and real lane line
為檢測本文算法的效果,采集由多種工況下的道路圖片組成的測試集。測試圖片分為普通工況和復雜工況。圖片集場景和工況情況見表2。
測試圖片檢測效果見圖9,其中每組圖片的左側為攝像頭采集的原圖,右側為脊度量算法的檢測結果。圖9a顯示了晴天工況下車道線清晰完整且遠處的車輛不受影響的場景。這種情況下的誤檢率極低,且與真實車道線貼合效果好。圖9b顯示了晴天工況下車道線邊緣出現(xiàn)其他車輛干擾的場景。通過噪聲濾波方法可以排除車輛的邊緣特征干擾,保留車道線的邊緣特征。圖9c顯示了校園內車道線受損的場景。在這種情況下,基于邊緣點灰度対比的算法可能遇到失敗,但通過脊度量算法依然能找到正確的特征點。圖9d顯示了在雨天工況下天空灰暗,地面積水,車道線特征變得模糊的場景。此時通過脊度量算法擴大了特征點選取的對比區(qū)域,提高了檢測結果的正確率。圖9e顯示了夜晚工況下僅有自身車燈提供照明的場景。通過脊度量算法綜合區(qū)域內灰度值變化的情況,選擇變化趨勢最集中的像素點作為特征點,可以有效減少車道線邊緣對比不明顯帶來的干擾。
表2 測試圖片集Tab.2 Test picture sets
圖9 5組不同場景的檢測結果Fig.9 Results of 5 groups of different scenarios
在車道線識別程序的質量評價中,實時性和識別率是最重要的指標。通過人工觀測手動選出檢測錯誤的幀數(shù)。各種工況下檢驗的正確率見表3。
表3 檢驗正確率Tab.3 Accuracy of test
由表3可知:在普通工況即晴天工況下的正確率為99.18%;在復雜工況即雨天工況下的正確率為97.19%,受損路面工況下的正確率為94.72%,夜晚工況下的正確率為97.62%。
傳統(tǒng)算法提出使用脊度量來檢測車道線,通過這種新的特征提取方法以及綜合區(qū)域內灰度值變化的趨勢來選擇特征點,可以在復雜的情況下更準確地提取車道線。本文在傳統(tǒng)算法的基礎上展開了進一步深入研究:
(1)針對傳統(tǒng)算法中特征點篩選存在的缺陷,改進了特征點篩選方法,簡化了算法的難度并提高了算法的通用性。
(2)針對傳統(tǒng)算法中識別車道線線型單一的問題,提出了一種識別虛線和實線的方法。通過本文的優(yōu)化,該算法可更好地感知周圍環(huán)境。