卜國富,聶永怡,余京曉,鄭譽(yù)煌
(1.廣東第二師范學(xué)院 物理與信息工程系,廣東 廣州 510303;2.廣東第二師范學(xué)院 教務(wù)處,廣東 廣州 510303)
近年來,人工智能以及新能源技術(shù)研究的發(fā)展獲得社會的高度重視,在汽車工業(yè)領(lǐng)域,傳統(tǒng)的汽車機(jī)械化模式逐漸發(fā)展為自動機(jī)械化結(jié)合人工智能化模式。在復(fù)雜環(huán)境中,人工智能的應(yīng)用在自動駕駛汽車的感知決策中發(fā)揮極大作用[1]。汽車在自動駕駛時,需要綜合計算多方向傳感參數(shù),如車道線檢測、四周車輛與建筑等物體進(jìn)行識別及相對距離檢測等,均需要利用數(shù)字圖像處理。
計算視覺識別技術(shù)是人工智能化的主導(dǎo)技術(shù),在自動駕駛汽車中高級駕駛輔助系統(tǒng)起關(guān)鍵作用,可在原本傳感的自動化基礎(chǔ)上附上視覺感的智能化。車道線的邊緣檢測概念于1959年被提出,隨后眾多研究者提出不同原理的檢測算法,目前有Roberts Cross算子、Prewitt算子等常用的車道線檢測算子,但是Canny算子對車道線檢測效果更優(yōu),張道芳等[2]研究的語義分割DeeplabV3+模型在性能與效果上也優(yōu)于傳統(tǒng)的檢測算法。本文以Jetson Nano智能小車為研究平臺,結(jié)合開源機(jī)器學(xué)習(xí)(ML)框架、計算機(jī)視覺和機(jī)器人開發(fā)的框架和NVIDIA AI平臺,基于開放源代碼計算機(jī)視覺庫(OpenCV)采用Python語言對圖像灰度化處理、高斯模糊、Canny邊緣檢測算子、ROI感興趣區(qū)域截取、霍夫變換等過程對車道線進(jìn)行檢測。
基于Jetson Nano的車道線檢測與視覺識別流程圖如圖1所示。

圖1 車道線檢測流程
首先通過cv.imread()函數(shù)讀取由高精度視覺攝像頭獲取的原圖像,獲取的數(shù)字圖像由像素組成,原始圖像的像素RGB數(shù)值錯綜復(fù)雜,且同一場景的RGB數(shù)值受光照強(qiáng)度的影響較大,對圖像進(jìn)行灰度化處理后可降低其他色彩對車道線檢測效果,可利用Open CV庫中的cvtColor()函數(shù)對圖像進(jìn)行灰度化轉(zhuǎn)換。在計算機(jī)視覺庫中有超過150種顏色空間的轉(zhuǎn)換方法,研究人員常用加權(quán)平均算法,即公式(1)。
GRAY=R×0.30+G×0.59+B×0.11
(1)
其中GRAY表示圖像中某像素點的數(shù)值大小,R,G,B分別表示紅色、綠色、藍(lán)色在該像素點的分量值。研究人員可以通過OTSU算法對圖像進(jìn)行自適應(yīng)的二值化處理,把圖像轉(zhuǎn)換成明顯黑白照片效果,加強(qiáng)算法對光照的魯棒性[3],更有利于車道線檢測與識別。圖像二值化可通過cv.threshold()函數(shù)實現(xiàn)圖像轉(zhuǎn)換,原圖像、灰度化圖像、二值化圖像對比如圖2所示。

圖2 原圖像、灰度化、二值化對比圖像
圖像模糊算法種類有很多,其中一種常用的算法是高斯模糊(也稱高斯平滑)[4]。由于噪聲對邊緣檢測有影響,因此需要平滑操作濾除部分噪聲,高斯模糊的原理是加權(quán)平均的算法,即輸入圖像與高斯核作卷積,選取圖像中某像素點作為中心點,中心點附近的像素點離中心點越近權(quán)重比例越大,反之則越小。記高斯核坐標(biāo)為(x,y),μ為平均值,σ為方差,則一維高斯函數(shù)方程如公式(2)所示。
(2)
把高斯核視為圖像原點,μ取值為0,得到二維高斯函數(shù)方程式如公式(3)所示。
(3)
標(biāo)準(zhǔn)差與高斯矩陣的尺度成正比,通常采用3*3或5*5的高斯核,經(jīng)過高斯模糊的圖像更加柔和平滑,圖像中的高頻噪聲也被濾除。對圖像進(jìn)行高斯平滑處理可通過OpenCV視覺庫中的cv.GaussianBlur()函數(shù)實現(xiàn),二值化圖像與高斯模糊后的圖像對比如圖3所示。

圖3 二值化與高斯模糊化對比圖像
經(jīng)過高斯模糊的圖像只是單閾值處理,并沒有計算設(shè)置圖像像素邊緣梯度的幅值與方向,由于原圖像的邊緣梯度方向是隨機(jī)指向,可以使用Canny算子指定圖像的垂直和水平方向,并與圖像作卷積計算梯度。Canny算子可計算某像素點的梯度幅值,對邊緣梯度的幅值進(jìn)行雙閾值限制,實現(xiàn)非極大值抑制的滯后閾值處理,達(dá)到檢測到弱邊緣的效果。Canny邊緣檢測算子對圖像處理的主要過程為:
(1)計算像素點的梯度幅值和方向。
(2)對圖像非極大值抑制。
(3)進(jìn)行雙閾值檢測。
Canny算子處理后的圖像抗干擾能力強(qiáng)、噪聲小、圖像更平滑、邊緣連續(xù)性更好[5]。可利用cv.Canny()函數(shù)實現(xiàn)對邊緣進(jìn)行處理,高斯模糊圖像與雙閾值邊緣連接處理的圖像對比如圖4所示。

圖4 Canny邊緣檢測處理后的圖像
在視覺識別處理中,感興趣區(qū)域(ROI)指對處理的圖像加一層自定義多邊形框架截取作為需要處理的區(qū)域。在獲取的初始圖像中更精準(zhǔn)檢測出直線車道,可去除車道線以外的干擾圖像,如圖5(a)所示,研究人員可以建立不規(guī)則ROI區(qū)域,加上一層掩膜,只保留紅色線以下區(qū)域用于霍夫變換。本文通過array函數(shù)使用頂點定義ROI截取區(qū)域,利用ZEROS函數(shù)獲得圖像ROI區(qū)域的一層mark圖像,最后通過bitwise函數(shù),將原圖像和mark圖像位操作,提取ROI區(qū)域達(dá)到預(yù)期效果,如圖5(b)所示。圖像ROI截取的處理可減少周圍建筑及其他物體對車道線檢測的影響[6],提高直線檢測的成功率。

(a)預(yù)截取圖像
霍夫變換是對Canny圖像檢測直線并通過畫線把檢測的直線標(biāo)記出來,是圖像處理提取特征的一種算法。霍夫變換的原理是把直角坐標(biāo)下的方程轉(zhuǎn)化為極坐標(biāo)系形式的直線方程,假設(shè)極坐標(biāo)的一條直線由(r,α)表示,其中r為直線長度,α為該直線與X軸夾角,如圖6所示。

圖6 霍夫變換的直角坐標(biāo)
計算直線斜率與其均值的差,并迭代計算去除最大值與最小值,得到的數(shù)值擬合最小二乘法確定最終的直線參數(shù)。假設(shè)有n條直線,則擬合一條直線為公式:
f(xn)=axn+b
(4)
求出最小誤差平方和公式為公式5:
(5)
但對于車道線曲線檢測,直線擬合的模型并不適用曲率較大的曲線車道線,因此對曲線擬合模型可采用三階線性方程,設(shè)L0為小車方向的斜率,L1為直線斜率,L2為曲線曲率,L3為曲率變化率,則方程式為公式6[7]:
(6)
通過OpenCV視覺庫中的HoughLinesP函數(shù)實現(xiàn)霍夫變換檢測ROI區(qū)域的直線,由for循環(huán)結(jié)構(gòu)繪制不同顏色直線,使車道線檢測結(jié)果更直觀,綜合以上5個步驟可成功檢測出直線車道線,其檢測結(jié)果如圖7所示。

圖7 霍夫變換車道線檢測圖像
本文通過對原始圖像的ROI區(qū)域截取處理,去除圖像車道線以外的物體,降低車道線檢測的失誤率。基于OpenCV 開源計算機(jī)視覺庫并采用python語言在Jetson智能小車平臺上成功識別并檢測車道線,如何對檢測的車道線進(jìn)行追蹤行駛是今后的研究方向。