谷 崢
(重慶交通大學(xué),重慶 400074)
隨著我國經(jīng)濟(jì)的快速發(fā)展,汽車保有量的增加,交通事故也更加頻繁。據(jù)了解,每年有一百萬左右的人死于交通道路事故。查閱相關(guān)資料可知,在所有的致命交通事故中,有相當(dāng)部分是由于車道偏離引起的。而車道偏離自動預(yù)警系統(tǒng)作為安全駕駛輔助系統(tǒng)的一種,能夠有效地避免大量因車輛偏離而導(dǎo)致的嚴(yán)重交通事故。
車道偏離自動預(yù)警系統(tǒng)的核心是車道線的識別與檢測技術(shù),為了增加汽車本身的安全性能,車道線的識別與檢測技術(shù)成為近年來的研究熱點(diǎn)。
目前,國內(nèi)外研究人員提出了許多基于機(jī)器視覺的車道線提取方法。一般分為兩大類:基于特征和基于模型。基于特征一般是利用車道線的邊緣、紋理、顏色、頻域特征對車道線進(jìn)行識別,將特征突出出來加以研究?;谀P椭饕窃O(shè)計車道線模型,例如直線、拋物線、樣條曲線,利用一定的方法求取模型以擬合車道線。
Lee等[1-2]采用車道線邊緣分布函數(shù)的方法進(jìn)行車道標(biāo)識線局部特征邊緣點(diǎn)的檢測與提取,又采用Hough變換實(shí)現(xiàn)車道線檢測與識別[3]。其方法受光照的影響較小,但當(dāng)車道標(biāo)識線出現(xiàn)斷裂、破損時,該算法處理效果較差。
Yuji[4]利用車道線具有擴(kuò)張中心聚焦,當(dāng)存在道路邊境時,大部分朝向擴(kuò)張中心的邊緣點(diǎn)都位于道路邊界的特征,提出了一種能夠識別多種車道線的識別方法。該方法選取的閾值相對較低,利用零交叉技術(shù)獲得邊緣特征圖像,在去噪和直方圖分析之后,采用Hough變換檢測車道線。同樣,該算法對于光照變化的處理較好,而在進(jìn)行彎道識別時比較乏力。
姜仁婉[5]基于中值濾波和Canny算子處理后灰度值的圖像直方圖具有較亮的邊緣區(qū)域為小概率事件的特點(diǎn),提出了新的閾值選取算法,即將灰度值均值作為二值化的閾值,又采用閉運(yùn)算對圖像進(jìn)行邊緣修補(bǔ)。最后并未采用Hough變換檢測車道線,而是利用車道線平行且位于圖像下方1/2區(qū)域的特點(diǎn),利用最小二乘法進(jìn)行擬合。并且考慮到實(shí)際環(huán)境更為復(fù)雜,提出了根據(jù)車道線的對稱性和感興趣區(qū)域以虛擬出車道線。該方法對于某些復(fù)雜場景具有較好的魯棒性,但是過于復(fù)雜且實(shí)時性有待提高。
基于此本文提出了機(jī)器視覺的車道線檢測與識別算法,該方法簡單高效,經(jīng)實(shí)驗驗證,具有較好的實(shí)際應(yīng)用價值。
由于汽車行駛環(huán)境復(fù)雜多變,特別是在城市的結(jié)構(gòu)化道路上行駛時,道路特征物體較多,天氣等原因也進(jìn)一步使得環(huán)境復(fù)雜化。因此,在獲取汽車行駛的道路圖像后,需要對獲得的圖像進(jìn)行預(yù)處理,去除圖像中冗雜的信息,提取有價值的特征信息,提高算法的可靠性。
由攝像機(jī)采集到的道路圖像一般為彩色圖像,圖像信息量大,一般包括R(紅)、G(綠)、B(藍(lán))3個通道的信息,紅綠藍(lán)3色被稱為三原色,任意一種顏色都是由一定配比的三原色組成。將3個顏色刻度化,范圍為0~255。其中數(shù)字0代表最暗,數(shù)字255代表最亮。因此任意一種顏色都可以用該正方體中的點(diǎn)表示出來,如白色的RGB數(shù)值表示為(R:255,G:255,B:255),黃色的RGB數(shù)值表示為(R:255,G:255,B:0),黑色的RGB數(shù)值表示為(R:0,G:0,B:0)。而當(dāng)3個顏色的數(shù)值R=G=B時,彩色就只代表了一種灰度顏色,該值被定義為此顏色的灰度值,范圍是0~255,隨著數(shù)值的增加,顏色呈現(xiàn)白化趨勢。由此,相比起用3個字節(jié)分別表示每一個顏色的數(shù)值,從而表示某一像素所代表的顏色,用灰度值的一個字節(jié)來表示某一像素更加簡潔。所以,為了提高算法的實(shí)時性,一般在處理圖像前要將彩色圖像轉(zhuǎn)變?yōu)榛叶葓D像。雖然彩色圖像的細(xì)節(jié)更加豐富,但是灰度圖像也能將識別車道線所需要的特征信息保留下來。
加權(quán)平均法是對R、G、B3分量配以不同的權(quán)值進(jìn)行加權(quán)平均計算,3分量的權(quán)值是根據(jù)人眼對于紅綠藍(lán)3種顏色的敏感度而定。據(jù)相關(guān)研究表明,人眼對于綠色的敏感度最高,紅色次之,而對于藍(lán)色的敏感度最低。根據(jù)此原理對紅綠藍(lán)3分量分別賦予0.3,0.59,0.11的權(quán)值,再進(jìn)行平均計算,繼而得到最符合人眼視覺的灰度圖像。原理公式如下:
f(i,j)=0.3R(i,j)+0.59G(i,j)+0.11B(i,j)
(1)
一般而言,道路圖像的噪聲干擾為加性噪聲,在圖像的獲取或者傳輸過程中,受到外部環(huán)境以及采集圖像的設(shè)備硬件本身的影響,使得車載圖像信號容易受到噪聲的影響。故而,常用濾波對圖像進(jìn)行處理,其去噪效果較好,同時能夠較為完整地保留所需要的特征信息。常見濾波算法有:均值濾波、高斯濾波、中值濾波。每種道路環(huán)境都有其特點(diǎn),因此在應(yīng)用濾波算法時應(yīng)該就道路環(huán)境進(jìn)行分析,以選取最合適的算法。本文在對城市道路進(jìn)行處理分析后,最終選用高斯濾波進(jìn)行處理。
通俗地講,高斯濾波處理圖像就是對整個圖像進(jìn)行加權(quán)平均。用模板求出的加權(quán)平均值去代替模板中心的目標(biāo)像素點(diǎn)的值,從而得到目標(biāo)像素點(diǎn)濾波處理后的灰度值。高斯濾波具體公式如式(2)所示:
(2)
式中:Wx,y表示目標(biāo)像素點(diǎn)的鄰域,wx,y表示權(quán)重,I(x,y)表示輸出結(jié)果。
邊緣作為圖像信息里的一大基本特征,在處理圖像時對邊緣進(jìn)行處理成了最基本的問題。所謂邊緣點(diǎn),指的是圖像中像素點(diǎn)灰度值發(fā)生躍變的點(diǎn)。因此,邊緣就成了圖像中信息最集中,偶然性最大即不確定性最大的地方。在目標(biāo)與背景、顏色變化較大的區(qū)域,都是邊緣經(jīng)常存在的地方。從圖像屬性的角度來說,邊緣的存在反映了某種變化。所以,可以肯定的是,若對結(jié)構(gòu)化道路進(jìn)行邊緣檢測,其處理圖像會將車道標(biāo)識線與道路本身區(qū)分開來,從而去除大量不必要的背景信息,減少數(shù)據(jù)量,提高算法實(shí)時性。通常來說,圖像的邊緣變化有以下幾種形式。
圖1 笛卡爾坐標(biāo)系中的Hough變換
(1)階躍式:圖像亮度變化較大的兩個區(qū)域之間。
(2)漸變式:其邊緣上的灰度值是變化的。
(3)屋頂狀式:一般存在于亮度變化規(guī)律呈二階函數(shù)圖像狀的地方。
(4)模糊階躍式:可能產(chǎn)生于圖像的噪聲。
由于Canny算子的抑噪能力較好,同時采用雙閾值處理連接邊緣,故其檢測能力、定位精度都相對較好,因此本文采用Canny算子作邊緣檢測方法。
上述Canny算子對圖片處理后,還包含了許多冗雜的環(huán)境信息,這些都是不被需要且影響結(jié)果準(zhǔn)確性的特征信息。一般而言,待識別檢測的車道線通常位于圖像下方的一個梯形區(qū)域,通過畫出一個掩膜梯形再與原圖進(jìn)行拼合操作,就能得到感興趣區(qū)域內(nèi)的邊緣檢測圖。
車道線檢測與識別的方法主要有兩大類:基于特征或基于模型。基于特征的檢測識別方法主要是利用圖像的邊緣特征來識別車道線。基于模型的檢測識別方法主要是采用將模型(如直線模型、拋物線模型、雙曲線模型)與例如Hough變換相結(jié)合,從而求出模型參數(shù)達(dá)到識別車道線的目的。換句話說,預(yù)處理得到的圖像,僅僅是組成車道線的一些像素點(diǎn),這些像素點(diǎn)彼此獨(dú)立,而通過檢測識別算法就可以將這些獨(dú)立的點(diǎn)組成邏輯上的一條車道線。
Hough變換是一種常見的基于模型的檢測識別方法,一般用于檢測圖像中某些如直線、圓等特定的形狀。由于Hough變換具有較好的抗干擾能力,因此在車道線的檢測與識別領(lǐng)域得到了非常廣泛的應(yīng)用。
通常情況下,過某點(diǎn)(x1,y1)的直線在坐標(biāo)系下的表示方法如式(3)所示:
y1=m0x1+b0
(3)
其中:m0表示斜率;b0表示截距。
過該點(diǎn)(x1,y1)的這條直線m0和b0的值是恒定的,則該條直線在以m為橫軸,b為縱軸的參數(shù)空間中,就能找到唯一一點(diǎn)與之對應(yīng)。變換式子如下:
b0=-x1m0+y1
(4)
Hough變換就是基于這種思想產(chǎn)生的 。在普通直角坐標(biāo)系中,過點(diǎn)(x1,y1)的直線有無數(shù)條,則與之對應(yīng)的斜率和截距就有無數(shù)組,將這無數(shù)條線投影到參數(shù)空間中就構(gòu)成一條直線,其表達(dá)式如式(5)所示:
b=-x1m+y1
(5)
現(xiàn)引入點(diǎn)(x2,y2),則過該點(diǎn)的所有直線在其參數(shù)空間的投影表達(dá)式為式(6)所示:
b=-x2m+y2
(6)
式(5)與式(6)在參數(shù)空間中有相交點(diǎn)(m0,b0),如圖1所示。由此,不難發(fā)現(xiàn),普通坐標(biāo)系那條直線上的每一點(diǎn)所決定的參數(shù)空間中的每一條直線都會經(jīng)過(m0,b0)。換句話說,在參數(shù)空間中相交的直線,其對應(yīng)的普通坐標(biāo)系上的點(diǎn)共線。通過這個特性,就可以將經(jīng)過邊緣點(diǎn)的直線求解出來。
經(jīng)過以上Hough變換后,圖像中呈現(xiàn)的車道線并非只有一條,而是由許多線段組成的。鑒于車道線在圖像中具有匯聚性,現(xiàn)通過斜率對車道線進(jìn)行左右分類,即左側(cè)車道線斜率為負(fù)數(shù),右側(cè)車道線斜率為正數(shù)。然后,再使用最小二乘法對分類后的車道線線段進(jìn)行擬合,最后將其映射到原圖像中,使得車道線被識別出來。
本文采用Python編寫實(shí)現(xiàn),計算平臺為Legion-Y9000P 12th Gen Intel(R) Core(TM) i7-12700H 2.70 GHz,16 GB內(nèi)存計算機(jī)。采用公開數(shù)據(jù)集對本文算法進(jìn)行驗證。本文算法結(jié)果如圖2所示,可以看到對于車道線檢測較為精準(zhǔn),但是識別距離略顯不足。
圖2 算法結(jié)果展示
本文研究了一種基于機(jī)器視覺的車道線檢測與識別算法。該算法首先對采集到的道路圖像進(jìn)行灰度化、濾波預(yù)處理;然后對圖片進(jìn)行邊緣檢測;最后利用Hough變換對處理后的圖像進(jìn)行車道線檢測。通過公開數(shù)據(jù)集數(shù)據(jù)驗證,本文算法對車道線的識別情況較好,但在檢測距離上還略有不足。總的來說,本文算法具有一定的實(shí)際意義,可以為該方向研究提供一定的參考價值。