龍邱天, 王靖岳,*, 薛春偉, 武旭東, 鄭珺文, 王軍年
(1.沈陽(yáng)理工大學(xué)汽車與交通學(xué)院, 沈陽(yáng) 110159; 2. 吉林大學(xué)汽車仿真與控制國(guó)家重點(diǎn)實(shí)驗(yàn)室, 長(zhǎng)春 130025)
目前,在智能交通領(lǐng)域中自動(dòng)駕駛和高級(jí)輔助駕駛系統(tǒng)逐漸變成其重要研究方向,智能導(dǎo)航系統(tǒng)在不同領(lǐng)域的應(yīng)用廣泛增加,比如車輛交通、軍事 應(yīng)用、農(nóng)業(yè)生產(chǎn)等方面。對(duì)于道路而言,根據(jù)其道路特征可以大概區(qū)分為結(jié)構(gòu)化和非結(jié)構(gòu)化。結(jié)構(gòu)化道路一般為較高結(jié)構(gòu)化程度的道路,如高速公路、城市干線等。并且具有清晰路標(biāo)、背景環(huán)境簡(jiǎn)單、特點(diǎn)明顯的道路。然而非結(jié)構(gòu)化道路則是指沒(méi)有清晰的路標(biāo)、背景環(huán)境復(fù)雜的道路,由于受復(fù)雜環(huán)境影響難以使道路區(qū)域與非道路區(qū)域分割,例如鄉(xiāng)村小路、野外環(huán)境、沙漠道路、雪地等。
用于檢測(cè)非結(jié)構(gòu)化道路的算法可大致分為基于道路特征、基于道路模型、基于神經(jīng)網(wǎng)絡(luò)等。基于道路特征方法,主要是通過(guò)道路區(qū)域與非道路區(qū)域于顏色[1]、紋理[2]、邊緣[3]等特征的差異,然后再使用閾值分割、區(qū)域生長(zhǎng)、基于統(tǒng)計(jì)等方法來(lái)得到初分割道路區(qū)域。它的優(yōu)點(diǎn)是不敏感于道路形狀并且需要較少的先驗(yàn)知識(shí),卻對(duì)陰影和水跡敏感并且這類算法實(shí)時(shí)性較差。基于道路模型[4]的方法,首先在道路的先驗(yàn)知識(shí)的基礎(chǔ)上,道路區(qū)域利用道路模型的建立來(lái)檢測(cè)。然后分析道路圖像,從而找出與原始道路更匹配的道路模型。它的優(yōu)點(diǎn)是對(duì)路面上的陰影和水跡不敏感,但是敏感于道路的形狀,并且對(duì)于非結(jié)構(gòu)化道路的復(fù)雜形狀很難找出準(zhǔn)確的模型去匹配。基于神經(jīng)網(wǎng)絡(luò)[5]的方法,主要根據(jù)其學(xué)習(xí)特性來(lái)檢測(cè)道路區(qū)域,這種方法難度在于訓(xùn)練方法及大量的數(shù)據(jù)集。
鐘鵬飛[6]首先將原始圖像的顏色空間轉(zhuǎn)換,由紅綠藍(lán)(red-green-blue,RGB)轉(zhuǎn)換到色度-飽和度-亮度(hue-saturation-value,HSV),然后使道路區(qū)域和背景區(qū)域之間的顏色對(duì)比度增加,從而分離道路與背景。但是,該方法僅適用于在道路區(qū)域和背景區(qū)域之間有較大顏色差異的非結(jié)構(gòu)化道路。
牛牧原等[7]針對(duì)非結(jié)構(gòu)化道路存在陰影、積水等干擾。首先利用二維最大熵分割道路圖像,然后加入自適應(yīng)模板進(jìn)行特征提取。支持向量機(jī)(support vector machine,SVM)分類器用于增強(qiáng)分割效果。利用改進(jìn)分塊算法來(lái)快速提取邊界點(diǎn)。最后采用改進(jìn)的隨機(jī)最小二乘法來(lái)擬合道路邊界,降低干擾點(diǎn)影響。
Xu等[8]在使用逆透視變換后獲得鳥(niǎo)瞰圖,用大津法分割道路,最后在雙曲線模型基礎(chǔ)上用隨機(jī)一致性算法擬合道路邊界,但是大津法在強(qiáng)光照道路效果不佳。
通過(guò)分析以上方法,現(xiàn)提出一種基于區(qū)域生長(zhǎng)法和小波變換的非結(jié)構(gòu)化道路檢測(cè)方法。該方法根據(jù)大多數(shù)情況下道路區(qū)域在車載攝像頭的正下前方及道路區(qū)域與道路兩旁背景灰度差異,來(lái)進(jìn)行區(qū)域生長(zhǎng)法對(duì)圖像進(jìn)行初分割,再利用小波變換得到的道路邊緣信息來(lái)修正初分割道路圖像,從而更好地檢測(cè)出道路可行駛區(qū)域。
圖像分割是圖像處理中重要的技術(shù),而區(qū)域生長(zhǎng)法[9]是一種古老而經(jīng)典的分割算法。按照事先定義好的準(zhǔn)則使一個(gè)像素或一個(gè)子區(qū)域匯集成更大區(qū)域的過(guò)程就是區(qū)域生長(zhǎng)法。其本質(zhì)是將圖像中具有相同或相似特性的像素連接起來(lái),連接成同一片的區(qū)域。區(qū)域生長(zhǎng)法首先將選擇目標(biāo)分割區(qū)域中一組種子點(diǎn)為生長(zhǎng)起點(diǎn),可以是單個(gè)像素或小區(qū)域,然后根據(jù)事先定義的生長(zhǎng)準(zhǔn)則對(duì)比種子點(diǎn)周圍鄰域的像素中與種子點(diǎn)是否具有相似屬性,如果具有相似屬性,則將其與種子點(diǎn)所在的區(qū)域合并。最后,區(qū)域中新添加的像素被視為新的種子點(diǎn),以繼續(xù)上述生長(zhǎng)過(guò)程,直到?jīng)]有滿足條件的像素被劃分。
簡(jiǎn)單的區(qū)域生長(zhǎng)算法可用于分割更復(fù)雜的圖像,并能提供良好的輪廓信息和分割結(jié)果。區(qū)域生長(zhǎng)方法的好壞取決于3個(gè)關(guān)鍵性法則:①選擇合適的種子生長(zhǎng)點(diǎn);②確定相似準(zhǔn)則即生長(zhǎng)準(zhǔn)則;③確定生長(zhǎng)停止的條件。
設(shè)R代表整個(gè)圖像,利用區(qū)域生長(zhǎng)法圖像分割時(shí),將R劃分為n個(gè)子區(qū)域R1,R2,…,Rn,并且滿足以下條件。
(2)Ri是一個(gè)連通域,i=1,2,…,n。
(3)Ri∩Rj=?,i≠j。
(4)P(Ri)=True,i=1,2,…,n。
(5)P(Ri∪Rj)=False,i≠j。
通過(guò)對(duì)以上區(qū)域生長(zhǎng)法原理分析,對(duì)已經(jīng)灰度化的非結(jié)構(gòu)化道路圖像進(jìn)行區(qū)域生長(zhǎng)初分割。大多數(shù)情況下,車前就是道路區(qū)域且區(qū)域很大,然后道路區(qū)域與道路兩旁區(qū)域的灰度圖像有一定的灰度值差異,來(lái)選取種子點(diǎn)和生長(zhǎng)準(zhǔn)則。
非結(jié)構(gòu)化道路區(qū)域生長(zhǎng)法實(shí)現(xiàn)過(guò)程如下。
步驟1將道路圖像中間靠下邊緣第一個(gè)像素點(diǎn)來(lái)設(shè)置為種子點(diǎn),設(shè)該像素為(x0,y0)。
步驟2針對(duì)于道路圖像兩邊不可能都有背景像素,將圖像左右兩邊中間的4鄰域的像素的灰度均值與種子點(diǎn)的灰度差記作τ,作為生長(zhǎng)準(zhǔn)則。
步驟3以(x0,y0)像素點(diǎn)為中心對(duì)比其8領(lǐng)域像素(x,y),如果這些新像素滿足生長(zhǎng)準(zhǔn)則,將(x,y)與(x0,y0)聚合在一個(gè)區(qū)域,然后將(x,y)放入堆棧。
步驟4在堆棧中重新選擇一個(gè)新的像素作為(x0,y0),返回到步驟3。
步驟5如果堆棧中沒(méi)有任何像素時(shí),即為空,回到步驟1。
步驟6重復(fù)步驟1~步驟4直到灰度道路圖像像素點(diǎn)都被分到某個(gè)區(qū)域時(shí),生長(zhǎng)算法結(jié)束。
如圖1所示為非結(jié)構(gòu)化道路的灰度圖,如圖2所示,可以看出道路轉(zhuǎn)彎處受強(qiáng)光影響而導(dǎo)致分割時(shí)邊緣信息的丟失,這也是很多分割算法不可避免會(huì)出現(xiàn)的情況。
圖1 非結(jié)構(gòu)化道路灰度圖Fig.1 Unstructured road gray map
圖2 區(qū)域生長(zhǎng)初分割圖Fig.2 Initial segmentation map of regional growth
為了解決以上問(wèn)題,可以利用邊緣檢測(cè)出來(lái)的圖像邊緣信息來(lái)修正基于區(qū)域生長(zhǎng)法的道路分割圖像,來(lái)重新劃分道路可行駛區(qū)域。
小波變換[10]作為多尺度理論的代表,并且在頻域和時(shí)域都具有良好性能,能夠?qū)D像的低頻信息和高頻細(xì)節(jié)分離出來(lái),方便根據(jù)實(shí)際目的對(duì)其進(jìn)行處理和利用,最后通過(guò)圖像的重構(gòu)獲取理想的圖像。
將小波變換的模極大值用于邊緣檢測(cè)的原因是,梯度極大值的方向是梯度向量的方向,而沿梯度向量方向的小波系數(shù)模的極大值點(diǎn)是圖像的邊緣點(diǎn)。
基于小波變換極大模值邊緣檢測(cè)步驟如下。
步驟1首先對(duì)原始道路圖像進(jìn)行圖像對(duì)比度增強(qiáng),然后進(jìn)行保持邊緣、降噪平滑的雙邊濾波(Bilateral filter)處理得到圖像f(x,y)。
步驟2選取二維高斯函數(shù)為二維平滑函數(shù)σ(x,y),且滿足3個(gè)限制條件。
(1)
步驟3對(duì)選取的二維高斯函數(shù)分別沿著x,y方向求導(dǎo)獲得小波函數(shù),構(gòu)造小波函數(shù)如下。
(2)
(3)
步驟4對(duì)道路圖像f(x,y)的行和列分別與式(2)和式(3)進(jìn)行卷積操作,得到尺度s的二維小波變換的兩個(gè)分量為Gx和Gy。
Gx=f(x,y)ψ1s
(4)
Gy=f(x,y)ψ2s
(5)
步驟5對(duì)式(4)和式(5)按照式(6)和式(7)進(jìn)行計(jì)算,求得梯度矢量的模和輻角。
(6)
(7)
步驟6使像素點(diǎn)的梯度方向分為:水平方向(0°或180°)、垂直方向(90°或270°)、正對(duì)角線方向(45°或225°)、負(fù)對(duì)角線方向(135°或315°)4個(gè)方向,通過(guò)式(6)與式(7)算出與該像素點(diǎn)梯度輻角大小最接近的方向。
步驟7對(duì)每一個(gè)像素點(diǎn)遍歷,比較其8鄰域梯度,計(jì)算該像素梯度值在“梯度輻角大小最接近的方向”上是否為極大值,否則將像素點(diǎn)的梯度置為零。
步驟8記錄梯度極大值中的最大值,然后做歸一化操作,當(dāng)每個(gè)像素的梯度值大于設(shè)定的閾值時(shí),將認(rèn)為是圖像邊緣。
利用小波變換的極大模值分別對(duì)經(jīng)過(guò)雙邊濾波處理和未經(jīng)過(guò)濾波處理的非結(jié)構(gòu)化道路圖像進(jìn)行邊緣檢測(cè),其對(duì)比效果如圖3所示。從在原始道路圖像經(jīng)過(guò)對(duì)比度增強(qiáng)和Bilateral filter濾波處理后的小波變換極大模值邊緣檢測(cè)結(jié)果中可以看出,道路區(qū)域邊緣清晰且道路區(qū)域內(nèi)和背景的小紋理被濾除,得到了不錯(cuò)的邊緣檢測(cè)結(jié)果。
圖3 雙邊濾波后小波變換邊緣檢測(cè)Fig.3 Wavelet transform edge detection after bilateral filtering
通過(guò)圖2區(qū)域生長(zhǎng)初分割圖像可以看出,由于受局部強(qiáng)光的影響,其前景道路圖像的邊界部分與背景區(qū)域相互粘連,沒(méi)有準(zhǔn)確地檢測(cè)整個(gè)道路邊緣,使得無(wú)法提取完整的道路可行駛區(qū)域。
由于區(qū)域生長(zhǎng)分割的圖像與小波變換邊緣的圖像都為二值化圖像,對(duì)區(qū)域生長(zhǎng)分割圖像的道路區(qū)域的保留,對(duì)丟失的道路邊緣信息由小波變換檢測(cè)出邊緣線去重新修正。具體操作如下:重新設(shè)置一個(gè)與道路圖像大小相同全黑的目標(biāo)圖像,如果區(qū)域生長(zhǎng)分割圖像與小波變換邊緣圖像對(duì)應(yīng)坐標(biāo)點(diǎn)取值相同時(shí),則目標(biāo)圖像對(duì)應(yīng)坐標(biāo)點(diǎn)取值為0;取值不同時(shí),則目標(biāo)圖像對(duì)應(yīng)的坐標(biāo)點(diǎn)取值為1,也就是對(duì)兩幅圖像做異或邏輯運(yùn)算(半加運(yùn)算)。
根據(jù)對(duì)上面道路邊緣修正過(guò)程的分析,對(duì)兩幅圖像進(jìn)行異或邏輯運(yùn)算,目標(biāo)圖像的取值應(yīng)該滿足以下條件。
dst(x,y)=F(x,y)⊕W(x,y)
{(x,y)|0 (8) 式(8)中:cols為圖像寬度;rows為圖像的高度;(x,y)為圖像的坐標(biāo)點(diǎn);F(x,y)為區(qū)域生長(zhǎng)初分割圖像;W(x,y)為小波變換邊緣檢測(cè)圖像;dst(x,y)為由F(x,y)和W(x,y)由異或邏輯運(yùn)算獲得的目標(biāo)圖像。邊緣修正的目標(biāo)圖像如圖4所示。 圖4 邊緣修正后的目標(biāo)圖像Fig.4 Target image after edge correction 通過(guò)圖4可以看出,受局部強(qiáng)光影響而導(dǎo)致邊緣丟失的區(qū)域生長(zhǎng)分割圖像(圖2)由小波邊緣檢測(cè)圖像(圖3)對(duì)其邊緣信息修正后,獲得了一個(gè)邊緣完整的道路區(qū)域。 由于車載前置攝像頭拍攝的道路圖片中,道路區(qū)域?yàn)檎麄€(gè)圖像的中間且最大連通域,對(duì)邊緣修正過(guò)的二值化道路圖像進(jìn)行腐蝕、膨脹等形態(tài)學(xué)操作,通過(guò)輪廓檢測(cè)出二值化道路圖像里空洞的輪廓,再利用輪廓面積閾值消去除了其他所有空洞,最后得到道路區(qū)域的二值化圖像,如圖5所示。 圖5 道路二值化圖像Fig.5 Road binary image 通過(guò)圖5可以看出道路的邊界分為左右兩邊,假如將左右兩邊邊界點(diǎn)用一條曲線來(lái)擬合非常難得到準(zhǔn)確的道路邊界線,所以需要把左右邊界點(diǎn)分別提取出來(lái)。提取過(guò)程如下:首先對(duì)道路二值化圖像(圖5)進(jìn)行Canny算子邊緣檢測(cè)[11];然后通過(guò)每隔5行遍歷圖5像素點(diǎn),記錄像素為1的圖像坐標(biāo)點(diǎn),當(dāng)記錄的圖像坐標(biāo)點(diǎn)在圖像左半邊時(shí),把該像素點(diǎn)記作道路左邊界點(diǎn),在圖像右半邊時(shí),則記作道路要邊界點(diǎn),記錄結(jié)果如圖6所示。 圖6 道路左右邊界點(diǎn)Fig.6 Left and right boundary points of the road 道路模型適當(dāng)?shù)倪x取對(duì)于非結(jié)構(gòu)化道路檢測(cè)有著重要的影響,適合道路的模型可以進(jìn)一步增強(qiáng)擬合的效果,反之則使得道路檢測(cè)不準(zhǔn)確。 現(xiàn)如今,常見(jiàn)的道路模型有直線模型、二次曲線模型、三次曲線模型、樣條曲線模型等[12]。直線模型較為簡(jiǎn)單,實(shí)時(shí)性好,但是對(duì)于彎道擬合效果差。二次曲線模型的計(jì)算量也不大,雖然能夠擬合彎道,但是對(duì)于曲率大的彎道擬合精度不高。三次曲線模型能夠較好擬合曲率變換快、曲率較大的道路,但是也隨之伴隨計(jì)算量增大。 考慮到非結(jié)構(gòu)化道路情況復(fù)雜且結(jié)構(gòu)多變,選取三次曲線模型進(jìn)行道路擬合,三次曲線模型為 y=ax3+bx2+cx+d (9) 式(9)中:a、b、c、d為系數(shù)。 隨機(jī)抽樣一致性(random sample consensus,RANSAC)算法[13],數(shù)學(xué)模型的參數(shù)以迭代方式從包含異常值的一組觀測(cè)數(shù)據(jù)中估計(jì)。在隨機(jī)抽樣一致性算法中假設(shè)正確數(shù)據(jù)與異常數(shù)據(jù)(噪聲點(diǎn))組成一組數(shù)據(jù),正確數(shù)據(jù)記為內(nèi)點(diǎn),異常數(shù)據(jù)記為外點(diǎn)。外點(diǎn)是不能適應(yīng)模型的數(shù)據(jù),而存在可以估計(jì)參數(shù)的模型能夠解釋或者適用于內(nèi)點(diǎn)。 最小二乘法在擬合直或曲線也有較好的效果,但最小二乘法的計(jì)算方法確定其擬合模型應(yīng)“考慮”所有數(shù)據(jù)點(diǎn)。與隨機(jī)采樣一致性算法不同,當(dāng)數(shù)據(jù)點(diǎn)中存在遠(yuǎn)處噪聲點(diǎn)時(shí),擬合結(jié)果會(huì)有很大的偏差。 最小二乘曲線擬合和隨機(jī)抽樣一致性算法曲線擬合對(duì)比結(jié)果如圖7所示,其中圖7(a)是對(duì)道路邊界提取的一組樣本點(diǎn),在圖7(b)中是隨機(jī)抽樣一致性算法擬合樣本點(diǎn),圖7(c)是最小二乘法擬合樣本點(diǎn)。由圖7的對(duì)比實(shí)驗(yàn)表明,最小二乘法曲線擬合在噪聲點(diǎn)的影響下對(duì)道路邊界擬合效果不佳。非結(jié)構(gòu)化道路由于路況復(fù)雜多變,道路邊界點(diǎn)可能存在多個(gè)噪聲點(diǎn),而隨機(jī)抽樣一致性算法能夠去除大多數(shù)噪聲點(diǎn)(外點(diǎn)),因此選用RANSAC算法擬合道路邊界。 圖7 最小二乘曲線擬合與RANSAC曲線擬合比較結(jié)果Fig.7 Comparison results of least square curve fitting and RANSAC curve fitting 隨機(jī)抽樣一致性算法擬合道路邊界步驟如下。 步驟1從道路邊界點(diǎn)中隨機(jī)挑選4個(gè)數(shù)據(jù)點(diǎn),將這4點(diǎn)記作“內(nèi)點(diǎn)”。 步驟2根據(jù)這4個(gè)“內(nèi)點(diǎn)”確定三次曲線模型的4個(gè)參數(shù)。 步驟3將所有邊界點(diǎn)與上述已經(jīng)確定的模型做比較,當(dāng)某邊界點(diǎn)與模型距離小于閾值時(shí),將該點(diǎn)記作“內(nèi)點(diǎn)”,否則記作“外點(diǎn)”。 步驟4計(jì)算“內(nèi)點(diǎn)”與“外點(diǎn)”的比率。 步驟5在一定的迭代次數(shù)下,循環(huán)執(zhí)行步驟1~步驟4,最后確認(rèn)一個(gè)模型能夠最大化“內(nèi)點(diǎn)”與“外點(diǎn)”的比率。 步驟6從最終模型生成道路邊界擬合曲線。 擬合結(jié)果如圖8和圖9所示。 圖8 RANSAC擬合道路左邊界點(diǎn)Fig.8 RANSAC fitting the left boundary point of the road 圖9 RANSAC擬合道路邊界結(jié)果Fig.9 RANSAC fitting road boundary results 通過(guò)收集約100張多種類型的復(fù)雜道路圖像來(lái)做道路檢測(cè)實(shí)驗(yàn),320×240的圖像尺寸,實(shí)驗(yàn)環(huán)境為:Intel(R) Core(TM) i5-12500,CPU 3.30GHz, 16G內(nèi)存,系統(tǒng)為Windows11家庭中文版,本文方法代碼運(yùn)用C++和Opencv4.5進(jìn)行編寫(xiě),算法仿真在Visual Studio 2019 中實(shí)現(xiàn)。 為了檢驗(yàn)本文方法對(duì)大多數(shù)道路情況的適用性,分別對(duì)水泥道路、沙礫道路、沙漠道路及夜間道路進(jìn)行多種閾值分割方法與所提的基于改進(jìn)區(qū)域生長(zhǎng)與小波變換結(jié)合的方法對(duì)比,各算法效果如圖10所示。 圖10 本文方法與各方法效果對(duì)比Fig.10 The results of this method compared with those of each method 在圖10各方法對(duì)比圖中,第一行分別是沙礫道路、水泥道路、沙漠道路、夜間道路的原始灰度圖像。第二行是分別對(duì)這3種道路進(jìn)行大津法的閾值分割,可以看出道路在受強(qiáng)光的影響下,道路邊緣信息的丟失,并且道路邊緣受道路中沙礫或者其他物體影響情況下,道路區(qū)域分割不準(zhǔn)確。第三行是分別對(duì)這3種道路進(jìn)行一維最大熵的閾值分割,與大津法分割的缺點(diǎn)較為相同,并且道路區(qū)域與背景區(qū)域相互粘連。第四行是本文方法,首先利用改進(jìn)的區(qū)域生長(zhǎng)法進(jìn)行道路初分割,再使用小波變換極大模值邊緣檢測(cè),對(duì)初分割圖像進(jìn)行邊緣誤檢來(lái)補(bǔ)足邊緣信息??梢钥闯鍪軓?qiáng)光影響丟失的道路邊緣信息得到了修正并且邊緣線將道路區(qū)域與背景區(qū)域分割開(kāi),從而得到效果更好的道路可行駛區(qū)域。第五行是進(jìn)行形態(tài)學(xué)處理、輪廓面積閾值消去后的二值化道路圖像。最后一行則是通過(guò)對(duì)3種不同路況的非結(jié)構(gòu)化道路的建模后,利用隨機(jī)抽樣一致性算法擬合道路邊界線得出的非結(jié)構(gòu)化道路可行駛區(qū)域。 提出一種在多種復(fù)雜路況下具有一定準(zhǔn)確性非結(jié)構(gòu)化道路檢測(cè)方法。通過(guò)對(duì)道路圖像預(yù)處理,在道路圖像初分割中使用改進(jìn)的區(qū)域生長(zhǎng)法,大致分割出道路區(qū)域;使用小波變換極大模值的邊緣檢測(cè)對(duì)初分割圖像進(jìn)行邊緣信息的修正;再利用形態(tài)學(xué)處理、輪廓面積消去法得到只有道路區(qū)域的二值化圖像;最后選取三次曲線模型利用RANSAC算法擬合道路邊界點(diǎn)。道路檢測(cè)實(shí)驗(yàn)表明,本文方法能有效檢測(cè)邊緣信息明顯的復(fù)雜非結(jié)構(gòu)化道路。2.3 道路區(qū)域的提取
2.4 道路邊界點(diǎn)提取
3 道路建模及邊界擬合
3.1 道路模型的選取
3.2 RANSAC擬合道路邊界
4 道路檢測(cè)實(shí)驗(yàn)及分析
5 結(jié)論