王 敬
(福建師范大學閩南科技學院,福建 泉州 362332)
據(jù)相關統(tǒng)計,有半數(shù)交通事故都與車道偏離存在關聯(lián),為解決此類問題給人們帶來的困擾,需在駕車行駛前了解車道偏離情況。為此,如何有效識別車道線圖像成為相關研究的重點課題[1]。
文獻[2]中李超等人提出的根據(jù)道路特征獲取圖像,對圖像進行灰度化處理,并對圖像進行去噪處理。再根據(jù)自適應閾值邊緣提取檢測算法,對圖像邊緣進行劃分,完成檢測。但該算法處理時間較長并且魯棒性較低。文獻[3]中提出的基于改進簡單圖像統(tǒng)計(SIS)閾值算法,在圖像預處理階段進行二值化;采用直線段檢測(LSD)算法檢測平行線。利用車道線連續(xù)性和車道間距確定車道線感興趣區(qū),確定車道線位置。但該方法的識別率較低,在車流量大且交通路線繁瑣的環(huán)境下識別結(jié)果不盡如人意。文獻[4]中提出了一種能夠根據(jù)實時視頻流提取車道線的算法。采取的是對圖像進行分塊處理,從而縮短了數(shù)據(jù)處理時間。再對圖像進行灰度處理、雙邊濾波濾除高頻噪聲,最后用最大類間差分(OTSU)方法得到二值圖像。但這種方法不能實現(xiàn)精確的圖像識別,達不到預想的效果。
現(xiàn)階段多數(shù)識別方法計算繁瑣,消耗時間長,不能滿足生活的實際需求。對此提出一種新的識別方法,在直線模型基礎上對圖像加以改進,隨后使用新sobel算子實行邊緣檢測[5]。并且根據(jù)自適應雙閾值技術(shù)加強圖像呈現(xiàn)效果,利用Hough變換方法,通過極角約束來確定車道線的具體位置。降低了在圖像范圍內(nèi)被選中的設定點數(shù),通過降低設定范圍使車道線圖像識別的時效性和準確性有所提升。
為了能夠得到車道線實時視頻圖像,需要在車上安裝CCD,但有許多其它信息干擾和噪音妨礙。為了解決這些問題,需要在直線模型基礎上加強原始圖像呈現(xiàn)效果。過程中主要用到邊緣檢測和二值化,提高壓縮圖像所占的內(nèi)存,計算效率也明顯提升。
在進行視頻圖像采集的時候,由于攝像頭的位置并不固定,拍攝的視頻圖像存在較大誤差,導致后續(xù)識別過程中浪費大量時間。因此將其換為俯視圖像,逆透視變換[6]如下式(1)所示
(1)
(2)
令a33=1,只需要知道未轉(zhuǎn)變的4個點在坐標軸上的位置和轉(zhuǎn)變后的4個點在坐標軸上的位置,將這8個坐標的x、y、X和Y代入式(2)即可求解出逆透視變換的矩陣。
在車道上應用四點標定的方法,解出變換矩陣,然后把原圖像相對應的每個點帶入式(1)中,計算完成后再按原位置放到新的圖像中。如果有的點沒有與新圖像相對應,這種情況為“空洞”,解決這種問題可用臨近插值法,如圖1是改變前的圖像,圖2是改變后的圖像。該方法彌補了拍攝的圖像與實際圖像有差異的缺點。
圖1 主視圖
圖2 俯視圖
將圖中的每個點逐一改變,會消耗較多的時間。所以在實際操作當中,只需找到兩個點,即每條車道線上的起點和終點,再將起點和終點連接上,最終得到逆透視后的車道線。不僅能節(jié)省時間,且得到的結(jié)果較為精確。
如果想要用邊緣檢測的方法來對圖像進行前期的處理,要先挑選適合的邊緣檢測算子。經(jīng)典方法對圖像預處理通常使用Sobel算子進行邊緣檢測,把X設為水平梯度算子,Y設為垂直方向梯度算子,得出的方式如下所示
(3)
(4)
利用式(3)和(4)對圖像進行卷積,然后計算水平Gx和垂直Gy的梯度,對此可以算出車道距離邊緣的大小Gm,公式如下:
(5)
根據(jù)式(4)得出的圖像邊緣大小,每個方向都具有同樣的性質(zhì),所有的邊緣都會在邊緣圖像中顯示出來。為了提高識別的實時性,應盡可能的顯示出距離最近的邊緣,控制其余方向的邊緣。針對車道圖像,如果遇到車道線向左、右方向偏離的現(xiàn)象,則會采用重新改造過的Sobel算子來增加對偏離邊緣的影響,重新改造Sobel算子,公式如下
(6)
(7)
應用重新改造后的Sobel算子,可以增強偏離邊緣圖像特征,而其它冗余邊緣會被自動忽略,從而減少干擾向量,提升識別精準度。
基于邊緣檢測,還需采用二值化處理方法對圖像進行相關比對?,F(xiàn)階段,多數(shù)方法都使用了自適應閾值選擇計算的方法,通過圖像灰度值來進行分割[7],為了避免不同強度的光照對識別的影響,運用自適應雙閾值的方式來增強圖像呈現(xiàn)效果。
在圖像的中下部截取倆鄰近的矩形,規(guī)格為10×10,這樣可以確保顯示出的數(shù)據(jù)是路面的平均灰度值。在求出這兩個矩形所在位置的灰度值,分別記為V1和V2,V1和V2中相對小的值被稱之為自適應閾值[8],公式如下
(8)
在式(6)中Torigin代表未被處理圖像的閾值;Ttreat代表邊緣增加后圖像的閾值;Ctreat代表計算Ttreat的加權(quán)系數(shù);Corigin代表計算Torigin的加權(quán)系數(shù)。圖3(b)~(e)是對未被處理的圖像(a)是通過Sobel、Robert、Canny與LOG方式改進圖像清晰度,用自適應閾值的方式增強圖片呈現(xiàn)效果;圖(f)是對未處理圖像用重新改造后的Sobel算子改進圖像清晰度后,通過自適應雙閾值法加強圖片呈現(xiàn)效果。由此可以看出圖(f)少了許多噪音和其它方面的干擾,車道線也變得更清晰,對比圖(b)~(e)更有實時性。
圖3 車道圖像對比
車道線在圖像坐標系中的定位,是由車內(nèi)攝像頭的位置和拍攝到的視頻畫面決定的,圖像規(guī)格為640×480。如圖4,車道線最后漸漸消失的點在圖像的上半部,為坐標軸的1/3處。經(jīng)過計算得出左車道線在坐標軸上的角度α為45°,右車道線在坐標系上的角度β為135°。
圖4 車道線角度
車輛在崎嶇的道路上行駛,車身抖動導致攝像機在拍攝圖像時與實際路況有差異,坐標軸上的定位不準確。當車輛在上坡時,消失點會在圖像的最頂端,角度為56.3°;當車輛在下坡時,消失點會在圖像的中間位置,這時的角度為36.9°。得出結(jié)論:左側(cè)車道線識別的角度在40~60°之間,右側(cè)車道線識別的角度在130~150°之間,把攝像機安裝在摩托車把手的1/3處,系統(tǒng)的橫縱安裝位置分別如圖5和圖6所示。
圖5 橫軸攝像機位置
圖6 縱軸攝像機位置
圖7中,由于上半部分的車道受到天氣、路面等因素的干擾,對識別的準確率產(chǎn)生影響,所以在對車道進行識別時將選擇圖像的后半部分,具體分為6個步驟:
圖7 坐標與角度值
1)確定圖像的像素矩陣,橫向為m,縱向為n,系統(tǒng)會自動把圖片左上角的坐標定為(0,0),然后加強原圖像呈現(xiàn)效果;
2)從圖像橫向中間位置開始向下掃描,當像素值為255時會出現(xiàn)一個小白點,此時開始計數(shù)。在掃描到m行之前,要把小白點的坐標保存到密封器中。
3)將在平面坐標系中識別的“點”替換到極坐標上,算出小白點在通過某一個位置上的密度,分析車道線的位置以及密封器中小白點的峰值坐標。若在40~60°之間,且白點的數(shù)量超出30,則在左側(cè)畫出一條車道線:若在130~150°之間,且白點的數(shù)量超出30,則在右側(cè)畫出一條車道線。
4)根據(jù)圖6,經(jīng)對車道線傾斜度的分析,左下方位置起始點為(a,b)、角度α1,右下方起始點為(c,d)、角度α2,消失點為(x,y)。
5)當沒有識別出車道線時:
第一,α1、α2分別等于0時,識別不出相對應的左右車道線。當可以操控車輛行駛時,若只顯示出一條車道線,則讓車輛的中間位置和車道線有一定的距離;若沒有檢測出車道線,則停止車輛前行。
第二,當角度在40°到60°之間時,或者角度在130°到150°之間時,依據(jù)步驟3)識別出直線,確定點坐標為(a,b)和(c,d)以及角度α1、α2。
y=k1(x-a)+b
(9)
y=k2(x-c)+d
(10)
由式(9)和(10)可以得出
(11)
y=k1(x-a)+b
(12)
根據(jù)上式分析得出車道線彎曲的方向。
由于現(xiàn)實中的道路比較復雜,所以較難實現(xiàn)對所有車道線進行精準識別。普通攝像機會在一秒鐘拍攝大概25張圖片。但在車道偏離預警系統(tǒng)中,對實時性的要求較高,需要對每張視頻圖像進行處理。每兩張圖片之間的拍攝間隔時間只有0.04秒,即使車輛行駛的速度快,行駛時拍攝到的圖片距離也非常短。所以兩張圖片上的車道線位置并不會有太大差別。
通過對大量圖片的車道線位置進行識別,可知,車道線的角度和距離與上一張圖片相比,分別相差3°和20個像素點。所以只需前一張車道線在圖片中的位置,可以判斷出下一張圖片中車道線的大概位置,這樣可以節(jié)省很多處理時間。在計算過程中,把方程式、偏移度和距離保留下來。當計算下一張圖片時,會優(yōu)先使用上一張車道線位置范圍進行車道線識別,并根據(jù)前后兩張圖片車道線的交接點距離為15個像素點,分析出車道線是否為直線,由此提高圖像識別的實時性及準確性。綜合上述分析,完成對車道偏離預警中車道線實時視頻圖像識別研究。
為檢驗識別方法的可行性,同時也為了以后的改進能夠更加完善,在系統(tǒng)Matlab R2016a中采用工具箱編輯對圖片進行處理,并用GUI檢測計算方式的魯棒性。除此之外,還會對路面進行實地考察和測量,對計算結(jié)果的準確性進行驗證。
在車輛拍攝的實時視頻中挑選出一段圖像,分別運用此次提出方法、文獻[3]提出的基于改進簡單圖像統(tǒng)計(SIS)閾值算法的車道線識別算法和文獻[4]提出的基于改進簡單圖像統(tǒng)計(SIS)閾值算法的車道線識別算法進行對比檢驗。對比效果如圖8所示,其中a為原圖像,b為文獻[3]方法,c為文獻[4]方法,d為此次提出方法。
圖8 不同方法下車道線識別效果對比
對比圖中的車道線識別效果可看出,文獻[3]方法識別的圖像像素低、噪點多,與原圖車道線對比差距大。文獻[4]方法識別的圖像比較清晰,噪點少,與原圖車道線差距較小,但效果仍不理想。本文方法識別的圖像清晰,基本無噪點,呈現(xiàn)的車道線基本與原圖一致,效果十分理想。
為驗證此次提出方法的實用性,測試其是否能增強圖像呈現(xiàn)效果,對圖像進行二值化處理。處理結(jié)果通過灰度直方圖來呈現(xiàn)。所謂灰度直方圖灰度直方圖是將數(shù)字圖像中所有像素,按照灰度值的大小,統(tǒng)計其出現(xiàn)的頻率,呈現(xiàn)出圖像中某種灰度出現(xiàn)的頻率。未處理圖像的灰度直方圖如圖9所示,通過提出方法處理的圖像灰度直方圖如圖10所示。
圖9 處理前
圖10 處理后
分析上圖數(shù)據(jù)可知,處理前圖像直方圖窄而集中于灰度級的中部,說明圖像對比度較低,圖片質(zhì)量不佳。而處理后的圖像直方圖成分覆蓋的灰度級較寬,且像素的分布比較均勻,說明圖像對比度較高,圖片質(zhì)量好。綜上所述,提出的方法能夠有效的增強圖像呈現(xiàn)效果。
當車輛行駛的速度較快時,如果時效性沒有達到要求,基于車道線實時視頻圖像識別的車道偏離預警系統(tǒng)很可能會延后提示,容易發(fā)生事故。所以時效性對于識別方法是至關重要的,如果對每一張圖片都進行識別,平均每張圖片的識別時間只有40ms。那么對90秒視頻進行識別實驗,并逐個記下時間來驗證時效性,最終結(jié)果如表1所示,最長的時間段為35ms,沒有超出預測時間,而達到了時效性的條件。
表1 各階段需要時間
在計算車身的偏移和距離上,所要求的準確率非常高。如果準確率達不到要求,便會影響駕駛員做出正確的判斷。對此進行了多次實際操作實驗,分析實驗結(jié)果,角度的偏移主要是由于道路的曲折程度引起,但誤差不超過1度。距離的長短主要是路面高低起伏導致的,對識別的影響不超過0.09米,說明達到了精確度要求。
圖像進行預處理能夠讓車道線變得更加清晰,使用改造后的Sobel算子檢測距離最近的車道線。通過自適應閾值的方式增強圖像的呈現(xiàn)效果,這樣能有效提高時間效率。利用改進后的Hough變換識別視頻圖像車道線,讓其精確坐落在有固定長度車道標識線的中心點,使所提方法不論在何種條件下,都能夠精準識別出視頻圖像車道線,而且時間短,時效性高,誤差小。