邢笑笑,姚雨琴,李杰
(商洛學院,陜西商洛 726000)
隨著汽車產業(yè)的發(fā)展、運輸量的加大以及汽車持有量的快速增長,我國交通道路變得越來越擁堵,交通事故呈不斷上升趨勢。為了從根本上解決這一問題,人們開始使用各種方法和技術,其中自動駕駛技術是這一研究領域非常熱點的問題,而在自動駕駛領域中,車道線檢測是必不可少的一個環(huán)節(jié)。
近年來,許多國內外研究學者都致力于研究車道線檢測技術,并提出了一系列的相關算法。Borkar等人[1]在使用Hough變換和迭代匹配濾波器進行車道檢測的基礎上,提出了一種利用RANSAC 和卡爾曼濾波器的魯棒性來檢測車道線的方法,Duong 等人[2]利用邊緣檢測和形態(tài)學操作來生成邊緣圖像,使用Hough變換和滑動窗口提取車道線,用擬合的方法來提取車道線。Aminuddin 等人[3]提出了一種基于Hough 變換的高速公路車道線檢測算法,該方法首先使用圖像增強和Sobel 濾波器的邊緣提取技術,最后使用Hough變換實現(xiàn)車道線的檢測。唐陽山等人[4]提出了一種基于Canny 算子和Hough 變換的車道線識別算法。劉康婷等人[5]提出了一種基于視覺的車道線檢測技術,該方法首先將圖像轉換為鳥瞰圖,然后車道線提取使用LaneRidge 檢測器,最后用RANSAC 算法對虛實車道線進行分類。
本文提出了一種基于OpenCV的車道線檢測算法。首先對圖像進行預處理,主要包括對彩色圖像進行灰度化處理、運用中值濾波去除圖像中的椒鹽噪聲、進行灰度增強優(yōu)化處理以及使用Canny算子進行邊緣檢測;其次使用Hough變換與Shi-Tomasi角點檢測相結合的方法檢測車道線;最后使用最小二乘法對每個車道上的線路進行最小擬合,將擬合好以后得到的直線映射到原視頻中,使得車道線被識別出來。
為了得到更好的車道線檢測結果,對圖像進行預先的處理是非常有必要的。預處理的主要目的是消除圖像里面無關的信息,凸顯出有用的信息。
攝像頭獲取到的道路圖像通常都是彩色圖像,處理起來非常麻煩。因此需要對彩色圖像進行灰度化處理,使得三個通道轉換成一個通道。這樣做的目的主要是減少算法的計算量,從而降低算法的運行時間。對彩色圖像進行灰度化處理是使用RGB顏色空間到YUV顏色空間的轉換來實現(xiàn)的[6],其中YUV色彩模型中明視度信息Y與色調信息U和V是相互獨立的,由亮度信息Y構成的圖為灰度圖,U和V的為單色彩圖。本文根據(jù)YUV和RGB的函數(shù)關系,建立了YUV顏色空間Y通道與R、G、B三通道之間模型公式:
可以得到如下公式:
因此本文只采用YUV 顏色空間Y 通道圖作為后續(xù)車道線檢測的樣本圖像。
用車載攝像頭采集的道路圖像會混雜一些沒有用的噪聲。通常情況下,所需要的車道線檢測特征信息會被這些噪聲信息所覆蓋。噪聲的存在對圖像后續(xù)的車道線檢測和分析有極大的影響,在實際的圖像處理過程中對圖像進行預先的去噪處理是非常重要的。OpenCV中經典的圖像去噪算法有:高斯濾波、均值濾波、中值濾波和非局部平均濾波[7-10]。用車載攝像頭采集到的道路圖像中的噪聲主要是椒鹽噪聲,因此本文中使用的濾波算法是中值濾波。中值濾波可以將圖像中的噪聲或干擾去除,同時又能使圖像中的邊緣結構信息得以保留。該方法首先以待處理像素點為中心,確定一定大小的模板,然后將這個模板里面的像素值按從大到小的順序進行排序,取排序結果的中間值代替初始圖像中待處理像素點處的值,可以表示為:
在陽光充足的情況下,車道線能夠很好地展現(xiàn)在圖像畫面中,這樣能夠更好地判斷車是否在車道線區(qū)域中,但在光線弱的情況下,對車道線的檢測會有一定的影響。因此,為了得到更好的結果,在車道線檢測之前需要對圖像進行增強處理,本文所使用的方法是直方圖均衡化。
圖像中像素的灰度值發(fā)生跳躍性變化的地方稱為圖像邊緣,圖像絕大部分信息都在邊緣處。因此,能否準確地提取出圖像的邊緣信息對于后續(xù)分析整個圖像具有非常重要的意義。本文選擇的是Canny 邊緣檢測算法,因為Canny 邊緣檢測算法能夠盡可能多地標識出圖像中的實際邊緣。Canny算子采用的是一階微分方程算子,在抑制噪聲干擾中起到很好的作用,能夠較好地掌握方向和精度。
圖像經過上面一系列預處理后,可以很好地顯現(xiàn)出圖像里面的車道線信息,然后識別出車道圖像中的車道線并使用最小二乘法擬合出車道線的輪廓將其加入到彩色視頻圖像中。
Hough變換[11-12]是車道線直線提取算法中最常用的方法之一。該方法是對直線進行檢測,表示直線的方法很多,最常用的表示方法就是將直線方程用y=a*x+b表示。在這種情況下,如果當直線趨近于垂直方向,即直線斜率無窮大時就無法表示,解決這一問題的一個方法是使用法線來表示直線:
式中,直線到原點的距離用r表示,θ表示直線與橫軸的夾角。
在圖像中由已知的一個點(r,θ)可以計算出直線方程,以此得到想要的車道線。Hough 變換有很好的抗干擾和直線檢測能力。但是在面對多變路況的車道線檢測時,結果不太理想,如:車道線的缺失、陰影地方過大、對比度的降低、其他物品的遮擋等不利因素。因此,需要在此基礎上使用Shi-Tomasi角點檢測來對車道線信息進行提取,首先通過提取識別出局部道路區(qū)域的車道線,然后通過一個動態(tài)的區(qū)域特征點進行劃分,篩選視頻車道線的特征點,這樣有利于多方面車道線的擬合。利用Hough 特征變換與Shi-Tomasi 角點檢測結合可以提取出兩種方法累加的車道線,使得車道線的檢測結果更加準確。
最小二乘法是車道線檢測過程中常用的一種擬合方法,它是將誤差的平方和最小化,來尋找數(shù)據(jù)的最佳函數(shù)匹配。在這種操作過程中,可以高效快速地進行計算,獲取不一定需要事先知道的數(shù)據(jù)點,并且數(shù)據(jù)點子集間計算的平方誤差和是最小的。本文主要用的擬合方法是通過改進的最小二乘法來進行車道線直線的擬合,然后將直線檢測擬合以后得到的直線映射到原彩色圖像中,最終使得車道線被識別出來。
本文的算法采用C/C++編寫并使用OpenCV2.4.9 來實現(xiàn),計算平臺為dell-PC Intel(R) Core(TM) i7-7700 VPU @ 3.60 GHZ,8GB 內存的計算機。采用的車道數(shù)據(jù)集是由車載相機在高速公路上進行拍攝,得到車輛前方的道路圖像視頻,一共有632幀。所有場景中包含許多干擾路況的場景,比如車道線不清楚、其他車輛以及高速公路上標志線干擾等。
圖1 所展示的道路圖像是從車道視頻中提取出的若干幀車道視頻圖像,并進行車道線檢測結果的擬合圖,圖中的直線是Hough變換與Shi-Tomasi角點檢測相結合提取出來的。
如果只用Hough變換進行車道線檢測,有一些車道線是沒有被檢測出來的,而本文算法得到的直線是兩者結合起來,這樣可以使車道線檢測的效果提高。由實驗結果圖可以看出,對于典型路況的場景,本文的算法可以接近準確地將車道線展現(xiàn)出來。但是圖1最后兩幅圖像在一些外物干擾的情況下,如其他車輛產生的陰影、光照不佳的環(huán)境下車道線檢測的效果不太理想,需要進一步改進。
圖1 不同環(huán)境下車道線檢測結果圖
本文研究了一種基于OpenCV的車道線檢測算法。該算法首先采用一系列的圖像處理方法對車載攝像頭采集到的道路圖像進行預處理,達到定位出圖像中車道線的目的,然后使用Hough變換與Shi-Tomasi角點檢測相結合的方法對具體的道路圖像進行車道線的檢測。通過采用該算法對采集到的視頻進行車道線檢測實驗,試驗結果表明,該算法對高速公路上沒有干擾的車道線能夠準確識別,但是對一些有干擾的情況還需要進一步研究??偟膩碚f,本文的算法具有一定的使用價值,可以為自動駕駛中車道線的識別起到一定的輔助作用。