李志遠(yuǎn),王光輝
(湖北汽車(chē)工業(yè)學(xué)院汽車(chē)工程學(xué)院,湖北十堰 442002)
近年來(lái),隨著汽車(chē)工業(yè)的進(jìn)步和無(wú)人駕駛技術(shù)的興起,各種級(jí)別的輔助駕駛技術(shù)[1-3]已經(jīng)在司機(jī)的日常駕駛中得以運(yùn)用。其中,車(chē)道線檢測(cè)作為輔助駕駛技術(shù)中最為基礎(chǔ)的一項(xiàng)技術(shù),其主要目的是準(zhǔn)確地檢測(cè)和提取車(chē)道線的邊緣信息。能否實(shí)現(xiàn)車(chē)道線的精準(zhǔn)檢測(cè)對(duì)于實(shí)現(xiàn)安全、高效的自動(dòng)駕駛至關(guān)重要,但這項(xiàng)技術(shù)在實(shí)際應(yīng)用中面臨著各種挑戰(zhàn),如光照條件的變化,當(dāng)在強(qiáng)烈陽(yáng)光照射下或者暗光環(huán)境中,車(chē)道線的邊緣信息可能會(huì)變得模糊不清,以及復(fù)雜道路環(huán)境的干擾,在擁擠的城市道路中,車(chē)道線可能被其他車(chē)輛或者行人遮擋,導(dǎo)致檢測(cè)結(jié)果不準(zhǔn)確。因此,汽車(chē)制造商正致力于攻克這些問(wèn)題,以確保汽車(chē)能夠安全可靠地檢測(cè)出車(chē)道線。
常用來(lái)識(shí)別車(chē)道線的方法是利用車(chē)道線與道路路面及其周邊之間的灰度值差異,根據(jù)車(chē)道線明顯的灰度值得到車(chē)道線的信息[4],但對(duì)環(huán)境適應(yīng)性較差。此領(lǐng)域的一些學(xué)者對(duì)車(chē)道線檢測(cè)提出了各自相應(yīng)的檢測(cè)算法和不同的解決方案,文獻(xiàn)[5]通過(guò)對(duì)攝像機(jī)進(jìn)行一系列的標(biāo)定,以此消除圖像的畸變,但其在ROI 區(qū)域的選取上不夠清晰明了,可能會(huì)對(duì)檢測(cè)結(jié)果造成誤檢。文獻(xiàn)[6]基于Hough 變換提取車(chē)道線,此算法對(duì)直線車(chē)道有不錯(cuò)的效果,但可能會(huì)識(shí)別出一些與車(chē)道線無(wú)關(guān)的線段。文獻(xiàn)[7-8]研究車(chē)道線與道路路面之間的梯度差異,如Sobel[9]、Roberts[10]、Canny 等檢測(cè)算子,這種方法對(duì)于非連續(xù)的車(chē)道線可能無(wú)法有效的識(shí)別。文獻(xiàn)[11]利用了傳統(tǒng)圖像處理算法中的濾波算法,但在道路環(huán)境障礙物較多時(shí)容易導(dǎo)致誤檢,對(duì)外界的抗干擾能力比較差。
針對(duì)上述問(wèn)題,本文提出一種基于霍夫變換改進(jìn)的Canny 算法,對(duì)輸入的結(jié)構(gòu)化道路圖像進(jìn)行預(yù)處理,其中包括灰度濾波等操作,并對(duì)預(yù)處理后的圖像進(jìn)行了不同算子的車(chē)道線圖像邊緣檢測(cè)對(duì)比實(shí)驗(yàn),以得到較優(yōu)的檢測(cè)算子。本文使用ROI 感興趣區(qū)域選取和改進(jìn)霍夫變換對(duì)預(yù)處理之后的圖像進(jìn)行車(chē)道線擬合,為了確保檢測(cè)效果,通過(guò)調(diào)整不同的圖像平滑度,選取最佳的閾值作為邊緣檢測(cè)的標(biāo)準(zhǔn)。同時(shí),根據(jù)大多數(shù)情況得到的車(chē)道線圖像,對(duì)車(chē)道線角度和識(shí)別區(qū)域進(jìn)行限制,用以提高車(chē)道線檢測(cè)的精確性。
在邊緣檢測(cè)中,傳統(tǒng)Roberts 算子是一種簡(jiǎn)單而高效的算子,它采用2×2 模板,利用圖像中對(duì)角線方向相鄰像素差值近似梯度幅值來(lái)檢測(cè)目標(biāo)圖像邊緣。傳統(tǒng)Roberts 算子模板如圖1 所示。
圖1 Roberts 算子模板
式中:f′x(i,j)為x方向上的灰度變化;f′y(i,j)為y方向上的灰度變化。計(jì)算梯度幅值R(i,j),同時(shí)適當(dāng)選取一定的閾值,如果計(jì)算的梯度幅值大于閾值則認(rèn)為其是邊緣點(diǎn)。
Sobel 算子可以從水平和垂直的方向上依次檢查邊界,原理是使用像素值在上下、前后鄰點(diǎn)處的灰度加權(quán)算法,通過(guò)在邊界點(diǎn)處達(dá)到極值進(jìn)行邊界檢查。Sobel算子中有如下一些關(guān)鍵點(diǎn):笛卡爾網(wǎng)格;距離反比的4 個(gè)方向?qū)μ荻燃訖?quán);城市距離。
笛卡爾網(wǎng)格和城市距離如圖2 所示。
圖2 笛卡爾網(wǎng)格和城市距離
Sobel 算子采用的像素距離是城市距離,而不是歐氏距離或棋盤(pán)距離,其規(guī)定對(duì)角方向相鄰像素之間的距離值為2。接著選取4 個(gè)方向矢量分別為(a,i)、(b,h)、(c,g)、(f,d),然后沿著這4 個(gè)方向求得梯度矢量和,得到像素e的平均梯度估計(jì)G為:
這里人為規(guī)定右上角為原點(diǎn),以c點(diǎn)為例,由c到a為x軸的正方向,由a到g為y軸的正方向,因此,由c到g的單位向量就是[1,1],同理得由a到i的單位向量為[-1,1]。計(jì)算4 個(gè)方向矢量并將其x方向和y方向分別相加,可得:
經(jīng)約分化簡(jiǎn)后,將2 個(gè)方向字母的各自系數(shù)代入即可得到Sobel 算子水平和垂直梯度模板,分別如圖3所示。
圖3 Sobel算子
Canny 邊緣檢測(cè)是高斯函數(shù)的一階導(dǎo)數(shù),具有高精度和低誤檢率的特點(diǎn)。該算法的步驟如下:
1)使用高斯濾波器對(duì)目標(biāo)圖像進(jìn)行濾波平滑處理。σ為高斯函數(shù)的標(biāo)準(zhǔn)差,其大小的變化可以改變圖像的平滑程度。高斯函數(shù)如公式(6)所示:
高斯函數(shù)與目標(biāo)圖像的卷積公式為:
式中:R(x,y)為卷積運(yùn)算之后的圖像;f(x,y)為輸入圖像;“*”代表卷積運(yùn)算。
2)計(jì)算圖像中每個(gè)像素的梯度
接著計(jì)算圖像上(i,j)點(diǎn)上的邊緣強(qiáng)度M:
3)對(duì)梯度幅值進(jìn)行非極大值抑制,也就是在每個(gè)梯度方向上找到局部極大值點(diǎn),并將其作為邊緣點(diǎn)。
4)雙閾值檢測(cè)。這里把邊緣點(diǎn)分為三種:強(qiáng)邊緣點(diǎn)、弱邊緣點(diǎn)和非邊緣點(diǎn),同時(shí)根據(jù)高低閾值對(duì)它們進(jìn)行分類。非邊緣點(diǎn)將其刪除,強(qiáng)邊緣點(diǎn)作為真正的邊緣點(diǎn),對(duì)于弱邊緣點(diǎn)需要再次判斷是否為真正的邊緣點(diǎn)。
圖像預(yù)處理是圖像處理的一部分,包括灰度轉(zhuǎn)換、去噪濾波、邊緣檢測(cè)等[12-13]。后期的車(chē)道線檢測(cè)包括ROI 提取和Hough 變換等操作,其主要目的是鎖定目標(biāo)車(chē)道線所在的圖像區(qū)域,快速、高效地檢測(cè)出構(gòu)成車(chē)道線的小線段,建立車(chē)道線特征數(shù)據(jù)點(diǎn)集,擬合出車(chē)道線并顯示出來(lái)。
一般來(lái)說(shuō)采集到的原始彩色圖像一般包含R、G、B三個(gè)通道的深度信息,三個(gè)通道的取值均在0~255 之間。彩色圖片的信息含量過(guò)大,進(jìn)行圖片預(yù)處理時(shí),只需要使用灰度圖像中的信息就已足夠,所以為了提高運(yùn)算效率,往往將R、G、B 三個(gè)通道組成的彩色圖像轉(zhuǎn)化為單通道的灰度圖像[14]。圖像的灰度化處理算法為:
圖4、圖5 分別為灰度圖和灰度圖像的直方圖,可以看到總體灰度分布較為均勻。在對(duì)圖像進(jìn)行灰度化后,得到了一張像素值在0~255 范圍內(nèi)的灰度圖,為了降低噪聲影響,得到相對(duì)清晰的車(chē)道線特征,接下來(lái)對(duì)灰度之后的圖像進(jìn)行降噪,除去無(wú)關(guān)噪聲,防止影響車(chē)道線的有效識(shí)別。對(duì)去噪之后的圖像進(jìn)行濾波處理,常用的濾波方法有均值濾波、高斯濾波等,本文采用均值濾波方法對(duì)目標(biāo)圖像進(jìn)行濾波處理。
圖4 灰度圖
圖5 灰度直方圖
在Matlab 平臺(tái)下編程實(shí)驗(yàn)。利用結(jié)構(gòu)化道路條件下車(chē)道線圖像作為原圖像,將預(yù)處理后的圖像作為輸入,并使用傳統(tǒng)邊緣處理算法進(jìn)行邊緣檢測(cè)實(shí)驗(yàn),對(duì)檢測(cè)效果進(jìn)行分析。在同樣預(yù)處理的條件下,對(duì)比三種傳統(tǒng)算子的邊緣提取效果,如圖6 所示。由圖6 可以發(fā)現(xiàn)Canny 算子檢測(cè)的車(chē)道線圖像邊緣信息更加清晰完整,因此最終選取Canny 算子對(duì)車(chē)道邊緣提取算法進(jìn)行后續(xù)的車(chē)道線檢測(cè)。
圖6 傳統(tǒng)邊緣算子檢測(cè)比較
ROI 是指目標(biāo)圖像中最能吸引興趣、最能表現(xiàn)圖像主要內(nèi)容的區(qū)域。在圖像中選擇所需要檢測(cè)的重點(diǎn)區(qū)域,使用ROI 圈定目標(biāo),可以減少處理時(shí)間。在車(chē)道線檢測(cè)中ROI 區(qū)域選取可以快速確定車(chē)道線區(qū)域,為下一步檢測(cè)車(chē)道線提供基礎(chǔ)。
ROI 圖如圖7 所示。
圖7 ROI 圖
由于車(chē)載相機(jī)所采集的圖片存在行駛車(chē)輛、目標(biāo)車(chē)道線、路邊樹(shù)木、天空等各種影響判斷的因素,這會(huì)對(duì)接下來(lái)的擬合車(chē)道線帶來(lái)不必要的操作,因此需要通過(guò)設(shè)置ROI 區(qū)域?qū)z測(cè)區(qū)域進(jìn)行提取,避免因環(huán)境因素導(dǎo)致的誤檢及錯(cuò)檢。
車(chē)道線圖像經(jīng)過(guò)邊緣檢測(cè)及ROI 區(qū)域提取后,已經(jīng)能夠直觀地展現(xiàn)出車(chē)道線的邊緣特征,但是仍然需要對(duì)車(chē)道線邊緣進(jìn)行繪制,本文采用Hough 變換將檢測(cè)出來(lái)的邊緣特征進(jìn)行提取,繪制出直線、曲線車(chē)道線[15]。Hough 變換原理是將圖像映射至參數(shù)空間,在參數(shù)空間進(jìn)行選取,最后回到二維圖像中繪制所選取的圖像。
在笛卡爾坐標(biāo)系中,直線通??梢员硎境蓎=kx+b,當(dāng)直線垂直于x軸時(shí),k為無(wú)窮大,不利于后續(xù)的處理與計(jì)算。因此,要先把笛卡爾坐標(biāo)系進(jìn)一步轉(zhuǎn)換為極坐標(biāo)系,得到直線的極坐標(biāo)表達(dá)式為:
式中:ρ為極徑;θ為極角。這里將ρ和θ作為兩條軸以構(gòu)建霍夫空間,假如直線的ρ和θ為已知條件,則有極坐標(biāo)系中的一條直線與霍夫空間里的一個(gè)點(diǎn)相對(duì)應(yīng)。如果極坐標(biāo)系中有若干個(gè)點(diǎn),那么每個(gè)點(diǎn)可以畫(huà)無(wú)數(shù)條直線,每條直線對(duì)應(yīng)一對(duì)ρ和θ,從而對(duì)應(yīng)霍夫空間里的一條曲線。如果要從極坐標(biāo)若干點(diǎn)中尋找一條直線使其盡可能包含最多的點(diǎn),則可以在霍夫空間里尋找最多曲線相交的點(diǎn)。Hough 變換原理如圖8 所示。
圖8 Hough 變換原理圖
在實(shí)際應(yīng)用中為避免無(wú)關(guān)因素對(duì)道路擬合效果造成的干擾,根據(jù)大部分情況下得到的車(chē)道線圖像信息,選取進(jìn)一步對(duì)圖像進(jìn)行裁剪處理,僅保留輸入圖像下方1 3 區(qū)域,同時(shí)車(chē)道線擬合檢測(cè)角度限制在-60°~60°,對(duì)裁剪后的目標(biāo)道路信息進(jìn)行霍夫變換擬合。
本文利用結(jié)構(gòu)化道路下采集到的車(chē)道線圖像進(jìn)行模擬實(shí)驗(yàn),利用Matlab R2022b 在CPU 為3.2 GHz,RAM為16.0 GB 的Windows 操作系統(tǒng)上進(jìn)行實(shí)驗(yàn)?zāi)M。實(shí)驗(yàn)結(jié)果如圖9 所示,最終識(shí)別檢測(cè)到的車(chē)道線信息用黑色實(shí)線擬合,通過(guò)最終擬合效果來(lái)看,目標(biāo)車(chē)道線被清晰識(shí)別出來(lái),對(duì)后續(xù)的車(chē)道線檢測(cè)技術(shù)研究有一定參考價(jià)值。
圖9 擬合效果圖
本文基于圖像處理技術(shù),首先對(duì)采集到的道路圖像進(jìn)行灰度化處理,同時(shí)為了減少噪聲對(duì)車(chē)道線識(shí)別的影響,對(duì)灰度化后的圖像進(jìn)行了濾波處理。使用不同傳統(tǒng)邊緣檢測(cè)算子分別對(duì)車(chē)道圖像進(jìn)行邊緣檢測(cè),發(fā)現(xiàn)利用霍夫變換改進(jìn)的Canny 算子邊緣檢測(cè)方法在相同條件下具有較高的檢測(cè)精度,能夠清晰地檢測(cè)出車(chē)道線信息。然而,本文也存在一些不足之處,例如未考慮光照和地面干擾等因素的影響,雨天或雪天可能會(huì)影響車(chē)道線的識(shí)別效果。因此,需要進(jìn)一步改進(jìn)算法以提高算法的識(shí)別精度。
注:本文通訊作者為王光輝。