龍眾鵬,徐展鵬,趙文瑜,侯金劍
(1.華東理工大學(xué),上海,200237;2.思特威(上海)電子科技股份有限公司,上海,200237)
自動(dòng)駕駛在汽車領(lǐng)域的應(yīng)用愈發(fā)廣泛,其中車道線檢測(cè)是其中至關(guān)重要的一環(huán),從L1到L5的自動(dòng)駕駛分級(jí)標(biāo)準(zhǔn)中車道線檢測(cè)都是重要的判斷指標(biāo)之一[1]。車道線的正確識(shí)別可以實(shí)現(xiàn)車輛在正確的道路上行駛、車道線偏離預(yù)警、以及自適應(yīng)巡航等功能。
本文的車道線識(shí)別主要是通過識(shí)別道路圖像信息并通過算法模型過濾掉無關(guān)信息最終完成車道線擬合任務(wù)。這其中采用了動(dòng)態(tài)劃分感興趣區(qū)域的方法,同時(shí)對(duì)圖像的行灰度值和列灰度值進(jìn)行計(jì)算,通過灰度值來動(dòng)態(tài)的劃分出圖像中車道線部分。完成感興趣區(qū)域劃分后引用用濾波降噪后的Canny邊緣檢測(cè)來提取車道線信息,最后采用與最小二乘法相結(jié)合的Hough變換來擬合車道線,完成車道線檢測(cè)的任務(wù)。
未經(jīng)處理過的車道線圖像中含有太多冗余的信息,直接對(duì)原圖像進(jìn)行車道線檢測(cè)會(huì)造成大量的誤差,因此進(jìn)行車道線檢測(cè)之前先進(jìn)行圖像預(yù)處理是至關(guān)重要的一步[2]。圖像預(yù)處理主要是消除原車道線圖像中的噪音,盡可能的保存真實(shí)有用的圖像信息。常見的圖像預(yù)處理是將圖像灰度化,再將灰度圖進(jìn)行濾波處理并轉(zhuǎn)換為閾值分割圖,再進(jìn)行邊緣檢測(cè),最后劃分感興趣區(qū)域并做圖像增強(qiáng)處理,經(jīng)過這樣的圖像預(yù)處理后,圖像不僅可以消除了圖像存在的無關(guān)干擾因素,同時(shí)也大大減少了圖像的計(jì)算和處理所消耗的計(jì)算資源,這樣可以保證在相同的時(shí)間內(nèi),處理更多的圖像,提高車道線檢測(cè)的效率以及無人駕駛的安全性。
一張未進(jìn)行劃分的車道線圖像中存在大量的無關(guān)部分或者有效信息極少的部分,而感興趣區(qū)域的確定就是將圖片中最關(guān)鍵的車道線部分給劃分出來。通過感興趣區(qū)域的劃分后,可以在很大程度上限定并縮小圖像需要處理的范圍,這樣可以減少算法運(yùn)行時(shí)間,以此大大提升算法的時(shí)效性。通常情況,對(duì)車道線進(jìn)行感興趣劃分主要選定圖像的下2/3處[3],但這樣的劃分太過死板,無法高效的處理一些復(fù)雜的道路情況,因此本文嘗試根據(jù)不同的道路場(chǎng)景劃定不同的感興趣區(qū)域,動(dòng)態(tài)對(duì)感興趣區(qū)域進(jìn)行確定。
動(dòng)態(tài)劃分感興趣區(qū)域是將進(jìn)行灰度化的圖像再進(jìn)一步的處理,將每一行的灰度值進(jìn)行計(jì)算,通過比較每一行灰度值的大小,來判斷出地面與天空的界限,這樣與傳統(tǒng)的選取圖像下2/3處會(huì)有更好的適應(yīng)性,能在各種行駛路段上更準(zhǔn)確的消除天空等無關(guān)噪音。但僅對(duì)行灰度進(jìn)行計(jì)算不能完全剔除無關(guān)噪音,本文還繼續(xù)計(jì)算圖像的列灰度值,以消除圖像左右兩側(cè)風(fēng)景、標(biāo)識(shí)牌等無關(guān)信息,相當(dāng)于進(jìn)一步縮小了車道線的范圍。圖1詳細(xì)展示完成動(dòng)態(tài)獲得感興趣區(qū)域的流程。
圖1
因?yàn)樾旭偼局械穆窙r不一致,用動(dòng)態(tài)劃分感興趣區(qū)域的方法可以根據(jù)不同的行駛環(huán)境劃分出不同的感興趣區(qū)域,在不同的感興趣去區(qū)域中就可以更加準(zhǔn)確的獲取車道線信息,經(jīng)過感興趣區(qū)域的劃分后,可以極大程度的減少后期算法的不必要工作,同時(shí)也可以提升車道線識(shí)別的精度和魯棒性。
邊緣檢測(cè)的思想是找到圖像的每個(gè)像素點(diǎn)的梯度,并設(shè)置相應(yīng)的閾值,當(dāng)梯度的值大于設(shè)定的閾值范圍,算法就將其判定為邊緣。本文采用的是Canny邊緣檢測(cè)算法[4],其關(guān)于梯度的方向主要采用0°、45°、90°、135°,由于梯度有正負(fù),因此可以視作為采用了8個(gè)方向的梯度值,對(duì)這幾個(gè)方向的梯度進(jìn)行綜合運(yùn)算后可以得出該位置的梯度值。同時(shí)Canny邊緣檢測(cè)算法與常規(guī)的邊緣檢測(cè)算法在閾值設(shè)定上也有所不同,傳統(tǒng)的邊緣檢測(cè)算法設(shè)定單閾值,可這樣很容易導(dǎo)致一些不是邊緣的位置被誤判為邊緣,從而影響算法的精確性[5]。Canny邊緣檢測(cè)算法設(shè)定2個(gè)閾值,分別為高閾值和低閾值,當(dāng)一個(gè)位置的梯度高于高閾值時(shí)判定為強(qiáng)邊緣,當(dāng)一個(gè)位置的梯度低于低閾值時(shí)判定為弱邊緣,若一個(gè)位置的梯度值介于高閾值與低閾值之間時(shí),只有當(dāng)該位置存在與強(qiáng)邊緣連接時(shí)才判定為邊緣,如圖2所示,A和C判定為邊緣,而B則不判定為邊緣。
圖2 雙閾值檢測(cè)圖
結(jié)合以上Canny邊緣檢測(cè)算法的優(yōu)勢(shì),本文在車道線檢測(cè)上采用的是Canny邊緣檢測(cè)算法,其算法實(shí)現(xiàn)步驟如下:
(1)高斯濾波:利用高斯濾波器可以平滑圖像,其主要目的就是給圖像進(jìn)行降噪的處理,原圖像為 F( x,y ) ,高斯掩模為 G( x,y),新的圖像通過原圖像與高斯掩模作卷積可得到,與原圖像相比較無關(guān)的信息會(huì)減少,新圖像 H( x,y)可以表示為:
(2)計(jì)算梯度:從四個(gè)方向計(jì)算圖像的梯度值,通過梯度值的大小來判定邊緣強(qiáng)度。其中邊緣強(qiáng)度和邊緣方向分別由 M( x,y)和θ(x,y)表示:
當(dāng) M( x,y)取得局部最大值的方向角θ(x,y)就是邊緣方向,以此方法確定圖像的梯度值與邊緣方向。
(3)非極大值抑制:圖像中會(huì)存在一些并非邊緣信息的噪聲,為了消除這些噪音的影響,讓邊界更加清晰,可以將圖像的極大值進(jìn)行保留,而對(duì)其他非極大值進(jìn)行抑制,刪除其值對(duì)邊緣檢測(cè)的影響。
(4)雙閾值檢測(cè):如上文中提到的對(duì)梯度判別設(shè)定高低兩個(gè)閾值,高于高閾值的判定為強(qiáng)邊緣,低于低閾值的判定為弱邊緣,若介于兩者之間的同時(shí)與強(qiáng)邊緣連接的同樣判定為邊緣。
圖3 邊緣檢測(cè)圖
在圖像邊緣檢測(cè)結(jié)束后,就是對(duì)車道線進(jìn)行識(shí)別,將圖像中的多個(gè)邊緣進(jìn)行識(shí)別,找出需要的左右車道線,本文采取的是Hough變換來找到圖像中的車道線。
Hough變換可以從圖像中分離出幾何特征一致的形狀,如直線、圓等[6]。而在通常情況下,車道線在短距離的情況下,以及在車速較快的情況下都可以視作直線,因此用Hough變換來識(shí)別車道線是可取的。Hough變換將圖像從直角坐標(biāo)系轉(zhuǎn)換為極坐標(biāo)系,與直角坐標(biāo)系中的點(diǎn)斜式和和兩點(diǎn)式表示直線(x,y)不同,極坐標(biāo)下用(r,θ)表示直線,用r表示直線到原點(diǎn)的距離,用θ表示直線的法線與直角坐標(biāo)系下的x軸之間的夾角,如圖4所示。
圖4 Hough變換圖
根據(jù)統(tǒng)計(jì)學(xué)的原理,當(dāng)圖像上有多個(gè)點(diǎn)都近似的統(tǒng)計(jì)到某個(gè)特定的è的值且統(tǒng)計(jì)到某個(gè)特定的r值時(shí)則判斷這些點(diǎn)都是屬于同一直線上的點(diǎn),以此方法來判定出需要識(shí)別的直線。
但是實(shí)際的圖像經(jīng)過邊緣處理的圖像車道線也是有寬度的,簡(jiǎn)單的使用霍夫變換可能會(huì)導(dǎo)致一條車道線上檢測(cè)出太多的直線,而這些直線可以近似的看做為同一車道線,因此就需要利用到最小二乘擬合來找到合適的車道線,同時(shí)一張圖像上很可能還存在屬于其他車道的車道線,如何剔除其他車道線,找到屬于車輛行駛過程之中的車道線也是需要解決的問題[7]。
完成初步的Hough變換后,圖像中依然存在許多噪點(diǎn),為了進(jìn)一步消除這些噪點(diǎn)的影響,就需要先進(jìn)行離群值過濾,讓車道線檢測(cè)的精度更高。
離群值過濾具體思想就是先將Hough變換后的所有直線的斜率計(jì)算出來,通過斜率值的正負(fù)進(jìn)行分類,將直線分為左右車道線,然后計(jì)算同一類直線的斜率均值,再將直線與均值進(jìn)行對(duì)比,如若直線斜率與均值的相差過大,超過了設(shè)定的閾值,就判定這樣的直線為噪點(diǎn),刪除這樣的直線后再重新求均值,以此來迭代算法,直到所有的直線與均值的差距都小于設(shè)定的閾值停止迭代。通過這樣的離群值過濾可以更加有效地消除圖像中一些無關(guān)信息的影響,為最后準(zhǔn)確的檢測(cè)出車道線提供保障。
當(dāng)通過離群值過濾后,被認(rèn)定為左右車道線的直線依然有多條,為了最終實(shí)現(xiàn)左右車道線各一條,就需要進(jìn)行最小二乘擬合。
圖5 車道線擬合圖
最小二乘法是通過尋找誤差的平方,并逐漸將誤差最小化的一個(gè)過程,通過這個(gè)過程來求得需要的未知數(shù)據(jù),使得未知數(shù)據(jù)與真實(shí)數(shù)據(jù)足夠的接近。用最小二乘法來進(jìn)行直線擬合的基本思想是假定待求直線為 F(x)與其他圖像中的直線存在不同權(quán)值的線性關(guān)系,線性關(guān)系如公式所示:
其中a表示待定的權(quán)值,()gx表示圖像中選定的直線。最終需要擬合出這些權(quán)值,使得求出來的直線與圖像中的原直線距離的平方和最小。為了求出這些權(quán)值,將最小二乘問題轉(zhuǎn)化成特殊的最小二乘優(yōu)化問題,通過求解優(yōu)化問題來得出合適的權(quán)值,最后擬合出合適的左右車道線[8]。
本文通過圖像預(yù)處理消除圖像中的無關(guān)信息,達(dá)到降噪的目的。然后通過分別計(jì)算灰度化圖片的行灰度值和列灰度值來分割圖像的感興趣區(qū)域,通過行灰度之可以切分車道線與天空的界限。通過列灰度值也可以進(jìn)一步切分出車道線旁邊的風(fēng)景信息。以此結(jié)合行列灰度值信息的方法來實(shí)現(xiàn)動(dòng)態(tài)劃分感興趣區(qū)域。動(dòng)態(tài)劃分感興趣區(qū)域后,可以進(jìn)一步的精煉關(guān)鍵信息,以減少之后算法的復(fù)雜度,提升檢測(cè)車道線的速度。對(duì)圖像完成預(yù)處理的部分后進(jìn)行邊緣檢測(cè),本文采取的是Canny邊緣檢測(cè),其通過高斯濾波,計(jì)算梯度,非極值抑制,雙閾值檢測(cè)的流程可以準(zhǔn)確的將圖像中的車道線邊緣信息保留下來。最后在車道線識(shí)別部分,先通過Hough變換將邊緣檢測(cè)后的圖像中的各個(gè)邊緣轉(zhuǎn)換成直線[9],再通過離群值過濾掉無關(guān)信息的噪點(diǎn)直線,最后通過最小二乘擬合的方法將多條直線擬合成需要的左右車道線。
在實(shí)驗(yàn)過程中,先使用單張的圖像進(jìn)行調(diào)參和優(yōu)化的操作,使得算法可以成功的找到單張圖像中需要識(shí)別的車道線,在能識(shí)別圖像之后,調(diào)用提前錄好的視頻,將視頻拆成每一幀圖像,算法在進(jìn)行識(shí)別,最后完成在視頻中動(dòng)態(tài)的顯示出車道線的信息。當(dāng)視頻也能準(zhǔn)確識(shí)別車道線后,調(diào)用攝像頭實(shí)時(shí)的采取路況上的車道圖像視頻,最終也能較為準(zhǔn)確的識(shí)別出路面車道線信息。本文能較好的識(shí)別檢測(cè)出車道線信息,其思想和方法可以為以后汽車的輔助駕駛、自動(dòng)輔助駕駛、無人駕駛提供很好的車道線檢測(cè)輔助工作,不僅提高了檢測(cè)的準(zhǔn)確度,也提高了未來無人駕駛的安全性。