周智
(南昌交通學(xué)院,江西 南昌 330100)
在ADAS(Advanced Driver Assistance Systems,駕駛輔助系統(tǒng))中,有效識別前方車輛是實(shí)現(xiàn)碰撞預(yù)警和自動規(guī)避的一項(xiàng)關(guān)鍵技術(shù)。ADAS 中的感知來源包括攝像頭、激光雷達(dá)、毫米波雷達(dá)、超聲波雷達(dá)等各種傳感器獲取的環(huán)境數(shù)據(jù)。在雨天行駛環(huán)境中,尤其是在中到大雨天氣時,環(huán)境陰暗且能見度低,而雨滴本身又具有速度快、分布密集等特點(diǎn)、極易對識別過程產(chǎn)生干擾和影響。為提高算法的識別率,本文將在基于Canny 算子的基礎(chǔ)上改進(jìn)針對雨天道路環(huán)境的目標(biāo)檢測算法。
1986 年由John F.canny 開發(fā)的Canny 邊緣檢測算子是邊緣檢測算法中較為流行的算法之一。作為一種可以從不同的視覺對象中提取有用結(jié)構(gòu)信息的技術(shù),由于運(yùn)算量相對較少,該算法被廣泛應(yīng)用于各種視覺系統(tǒng)之中。Canny 邊緣檢測算法主要由圖像降噪、計(jì)算梯度、非極大值抑制和滯后閾值四個部分構(gòu)成。其主要的算法思想是利用高斯求導(dǎo)方法計(jì)算出圖像對應(yīng)點(diǎn)的梯度,然后再通過設(shè)置雙闕值來檢測出圖像的邊緣,其步驟如下。
為最大程度避免檢測結(jié)果受到噪聲的影響,在進(jìn)行檢測前,采用Gauss 濾波器對圖像進(jìn)行卷積,以減少噪聲影響。其函數(shù)表達(dá)式如下[1]:
式中,σ 為Gauss 濾波器分布參數(shù),抑制噪聲能力與σ 取值成正比,邊緣定位精度與σ 取值成反比。因此,σ 的取值大小決定了圖像降噪的效果。
梯度是表示邊緣特征灰度值的變化程度。由于圖像本身是由離散數(shù)據(jù)構(gòu)成的,所以可以使用差分值來表示,差分值就是兩個像素之間的灰度差。
在實(shí)際圖像中,圖像的邊緣可以指向不同的方向。因此,Canny 算法通過使用梯度算子來表示灰度值的變化程度和方向,再通過對水平差分和垂直差分進(jìn)行計(jì)算,來確定像素點(diǎn)的梯度和方向。其函數(shù)表達(dá)式如下:
其中,I(i,j)為點(diǎn)(i,j)的灰度值,P(i,j)為點(diǎn)(i,j)的梯度值,Angle_θ(i,j)為點(diǎn)(i,j)的梯度方向。
非極大值抑制是尋找像素點(diǎn)局部最大值的一個步驟。在獲得了梯度和方向后,通過遍歷圖像的方法去除所有不是邊界的點(diǎn)。遍歷像素點(diǎn)的過程中,判斷當(dāng)前像素點(diǎn)是否是周圍具有相同方向梯度像素點(diǎn)中的最大值:如果是則保留該像素點(diǎn),否則將其抑制(歸零)。
最后,為了確定真正的邊界,通過設(shè)置maxval和minval 兩個滯后閾值來進(jìn)行判斷。若圖像的梯度值高于maxval 則被認(rèn)為是邊界,將其保留;若圖像的梯度值低于minval 則不被看作是邊界,將其拋棄;若圖像的梯度值在兩者之間,與邊界相連的同樣視為邊界,否則反之。
將紅、藍(lán)、綠色階組成的彩色圖像轉(zhuǎn)換為灰度色階來表示,通過只保留圖像中的亮度特征和邊緣特征,進(jìn)一步提高算法的計(jì)算速度。在本文的圖像灰度化處理過程中,使用加權(quán)平均法處理,即對圖像中的某一個像素點(diǎn)中的 RGB 分量按0.299,0.587 和0.114 的比例進(jìn)行加權(quán)和計(jì)算,使圖像的RGB 值轉(zhuǎn)化為灰度值,如式(6)所示。
在實(shí)際目標(biāo)圖像中,椒鹽噪聲為主要噪聲,而Gauss 濾波器對椒鹽噪聲的抑制能力相對有限。在數(shù)學(xué)形態(tài)學(xué)中,opening 運(yùn)算對椒鹽噪聲的抑制能力相對更強(qiáng)[2]。其原理是先對目標(biāo)圖像進(jìn)行腐蝕,去除噪聲;由于這個過程也會壓縮部分圖像,所以在已完成腐蝕化的圖像基礎(chǔ)上再進(jìn)行一定程度的膨脹處理,膨脹后的圖像保持或強(qiáng)化了原有的圖像,并且在一定程度上除去了噪聲或降低了噪聲的影響。其表達(dá)式為:
其中:P 為原圖像;S 為結(jié)構(gòu)元素;?表示腐蝕運(yùn)算;⊕表示膨脹運(yùn)算。
在實(shí)際行車過程中,夜間強(qiáng)光、大雨天氣、光線昏暗、模糊車道等情況,影響了車輛圖像識別效果。同時,在有一定車速或攝像頭抓取圖像模糊的情景下,opening 運(yùn)算也能對圖像有一定的補(bǔ)償。因此,使用opening 運(yùn)算替代Gauss 濾波器。
由于雨天行車環(huán)境復(fù)雜,公路環(huán)境和自然環(huán)境等都會對行駛過程中圖像識別產(chǎn)生影響。因此,設(shè)計(jì)自動選取合適閾值[3]方式:
其中:v 為圖像像素的中值,σ 為經(jīng)驗(yàn)值0.33[4]。
實(shí)驗(yàn)硬件設(shè)備:CPUi7-7500U@2.70GHz2.90GHz,內(nèi)存為8G,操作系統(tǒng)環(huán)境為Windows10,編程語言為Python3.9.6,視覺庫為openCV-python4.5.3.56,計(jì)算庫為numpy1.21.1。由于本文算法是針對復(fù)雜環(huán)境下的目標(biāo),因此選擇的圖片是駕駛過程中拍攝的夜間行駛的遠(yuǎn)光、暴雨環(huán)境下的遠(yuǎn)距離目標(biāo)和雨天行駛過程中車內(nèi)識別近距離目標(biāo)。
如圖1 所示,在陰暗雨天環(huán)境下,對對向駛來的強(qiáng)光車輛,本文改進(jìn)的Canny 檢測算法識別效果更好,能有效減少強(qiáng)烈燈光的干擾,同時能有效降低雨點(diǎn)帶來的影響,更小范圍鎖定對向車輛和周邊車輛的位置。
圖1 陰暗雨天且對面強(qiáng)光環(huán)境的識別效果對比a)原始圖片 b)Canny 檢測算法 c)改進(jìn)的Canny 檢測算法Figure 1 Comparison of recognition effects of opposite strong light environment in dark and rainy days a)Original lmage b)Canny c)Modified Canny
如圖2 所示,在暴雨環(huán)境下,相較于傳統(tǒng)Canny算法,改進(jìn)后的Canny 算法在減少雨滴影響的同時,也有效減少了周圍其他環(huán)境因素帶來的影響,并且對較遠(yuǎn)距離的車輛的識別能力有一定提高。
圖2 暴雨環(huán)境下識別效果對比a)原始圖片 b)Canny 檢測算法 c)改進(jìn)的Canny 檢測算法Figure 2 Comparison of recognition effects under rainstorm environment a)Original lmage b)Canny c)Modified Canny
如圖3 所示,在小雨天氣環(huán)境下,模擬駕駛員視角或行車記錄儀視角,從車內(nèi)視角對算法進(jìn)行近距離車輛的檢測效果驗(yàn)證,可以看出本文的改進(jìn)Canny算法能明顯有效降低前擋玻璃上水珠帶來的影響。
圖3 小雨環(huán)境下車內(nèi)識別效果對比a)原始圖片 b)Canny 檢測算法 c)改進(jìn)的Canny 檢測算法Figure 3 Comparison of recognition effect in light rain environment a)Original lmage b)Canny c)Modified Canny
雨天道路環(huán)境作為日常常見的異常環(huán)境,在自動駕駛領(lǐng)域具有重要研究價值。本文在傳統(tǒng)Canny算法的基礎(chǔ)上,從實(shí)際場景出發(fā)對其進(jìn)行改進(jìn),通過實(shí)驗(yàn)對比,驗(yàn)證了該改進(jìn)算法在雨天場景下的有效性。但在面對更為復(fù)雜的環(huán)境(如霧天、部分遮擋等)時,需要對算法進(jìn)行進(jìn)一步的研究和改進(jìn),以提高算法的識別效果和場景適用性。