?

基于級聯霍夫變換的車道線快速檢測算法

2021-01-19 02:24朱鴻宇高曉倩李學嬌
計算機技術與發展 2021年1期
關鍵詞:霍夫灰度坐標系

朱鴻宇,楊 帆,高曉倩,李學嬌

(河北工業大學 電子信息工程學院,天津 300401)

0 引 言

車道線檢測是智能駕駛領域的核心功能之一,也是很多后續識別算法的基礎[1],其識別效果很大程度上決定了整個智能駕駛算法的最終效果。近年來,國內外關于車道線檢測算法的研究日漸深入,文獻[2]采用了傳統霍夫變換搭配改進的Canny邊緣檢測算法,使用迭代算法來計算最優閾值,進而對二值圖像進行邊緣檢測。文獻[3]采用光流法來進行快速車道線檢測,通過對關鍵特征點的位置進行預估,縮小ROI區域,進而降低算法運算量。文獻[4]采用Canny邊緣檢測搭配改進的概率霍夫變換算法提取直線,最終擬合還原出原始車道線。文獻[5]通過逆透視的方法消除車道線遠近變化,得到若干組平行的車道線,再通過高斯濾波消除噪聲,結合霍夫變換提取車道線,并引入RANSAC進行擬合。目前這些方法檢測精度都能達到基本要求,但都存在檢測效率不高、難以滿足實際需求等問題。

由于傳統霍夫變換算法坐標轉換復雜,計算量較大,無法同時兼顧實時性和準確性的要求,該文采用一種改進后的基于級聯霍夫變換的直線檢測算法用于車道線的檢測工作。首先對圖像傳感器采集來的視頻幀序列進行ROI選取、濾波、邊緣檢測和非極大值抑制等預處理,然后采用改進后的直線檢測算法進行車道線消失點的定位,并基于消失點的位置向下遍歷所有符合要求的點,最后使用最小二乘法對這些點進行擬合,完成車道線檢測。

1 視頻幀預處理

在輔助駕駛系統中,算法的實時性與準確性同等重要,因為車輛在高速行駛時,如果由于計算量過大而無法保證實時的檢測,可能無法對突發情況進行快速處理[6]。因此需要對視頻幀進行預處理,僅保留在后續算法中必要的圖像信息。

1.1 圖像灰度化

從相機傳感器中采集到的彩色圖像一般包含了R(紅色)、G(綠色)、B(藍色)三個通道的深度信息,每個通道的取值在0至255之間,人眼所看到的所有顏色均可由這三種通道的顏色按照不同的比例搭配得到,行車道路上的車道線一般由黃色和白色兩種構成,其RGB分量分別為(255,255,0)和(255,255,255)。而算法在針對彩色圖像進行處理時,要對這三個通道進行依次處理,時間開銷將會很大,為了提高運算效率,往往將由RGB三個通道組成的彩色圖像轉化為單通道的灰度圖像。該文選用加權平均法進行灰度化運算。人眼對綠色最敏感,其次是紅色,而對藍色最不敏感,對三通道的權重分別定為紅色為0.299,綠色為0.587,藍色為0.114,以此加權得到的灰度值最接近人眼看到的實際感覺。公式如下:

f(i,j)=0.299R(i,j)+0.587G(i,j)+

0.114B(i,j)

(1)

1.2 ROI區域選取

由先驗知識可知,待檢測的車道線信息往往出現在圖像的中下方,因此經由采集設備取得的圖像很大一部分是可以去除的,例如天空、道路兩側的山峰、樹木和樓房等,這些環境因素對判斷車道線并無作用,選取合適的ROI區域可以極大地降低算法運算量,提升運算速度,保證檢測系統的實時性。

當相機傳感器固定安裝在車輛上后,其能檢測到的視野范圍就固定不變了,因此劃分的感興趣區的下邊界應當處于視野前方某個固定的位置,比如前車蓋的上方。對于相機采樣到的道路環境圖像來說,天空區域相對路面區域灰度值總是整體偏大而灰度變化相對較小,在兩個區域的交界處也就是地平線附近,灰度值會發生明顯突變。根據這個特點可以使用行灰度值統計的方法動態劃定感興趣區的上邊界位置,如圖1所示,隨著行駛環境不同,感興趣區的邊界也會隨之改變。

圖1 感興趣區域劃分

從圖1可以看出,基于行灰度均值的動態感興趣區劃分相比于固定比值的感興趣區更加靈活,提高了運算效率,同時,更多無關因素的去除也減少了后續檢測過程中的干擾噪聲,提高了檢測的準確度。

1.3 圖像下采樣

圖像下采樣的原理便是將一張原本分辨率為m×n的圖像進行s倍縮放,最終得到一張分辨率為(m/s)×(n/s)的圖像,其目的是為了濾除原圖像中較為豐富的冗余信息,盡量只保留目標車道線和車輛的整體形狀、大小等主要信息,降低計算機后續處理的負荷,提升運行速率。

該文采用基于高斯金字塔的下采樣方法[7],通過對原始圖像進行高斯濾波并刪除偶數行和列,得到一層新的圖像,將此圖像作為新的輸入,不斷重復濾波和刪除偶數列這個過程,便得到了若干張不同分辨率的圖像。算法如式(2)所示:

(2)

1.4 邊緣檢測

由于圖像采集設備及環境因素的影響,實際采集到的圖像會有些噪聲干擾點,這些噪點的存在會降低圖像質量,可能會對需要提取的車道有效信息產生干擾。中值濾波是一種非線性濾波,它的原理是選取一個窗口S,在整幅圖像上從左到右,從上到下滑動,滑動過程中,窗口S所框選的范圍可確定一個鄰域,在該鄰域內所有像素點的灰度值進行從小到大的排列,取其中值作為該像素點的灰度值。由于其原理特性,中值濾波在濾除椒鹽噪聲方面效果極佳,同時對圖像邊緣的保護效果較好,該文采用這種濾波算法對車道線圖像進行濾波處理。

在車道線提取中,車道線的形狀特征是需要關注的重點,通過判斷圖像中存在的線段長度、間隔及方向等特征規律,即可判斷車道線所在位置。經典的邊緣檢測算子有Canny算子[8]、Sobel算子[9]、Robert算子、Prewitt算子等,不同算子在針對各類不同場景下有著各自的優缺點。該文采用Sobel算子的邊緣提取方法,由于提取出的邊緣信息存在梯度變化,因此顯示出來的邊緣存在一定的寬度,會給后續運算造成額外運算量,使用非極大值抑制將提取出的梯度信息的局部最大值找出并將其他非極大值濾除,便可將圖像邊緣處理成單個像素寬度[10]。圖2為邊緣檢測和非極大值抑制效果圖。

圖2 圖像預處理效果圖

2 基于級聯霍夫變換的消失點提取

經過前述操作,得到了包含部分環境干擾噪聲的車道線邊緣信息。一種經典的車道線檢測方案是霍夫變換,原理是將原始圖像中每一個待檢測點的坐標映射到參數空間,然后基于一定的約束條件進行投票,篩選出的點可認定為處于同一直線上?;舴蜃儞Q的抗噪性及魯棒性比較強[11],直線檢測效果較理想,但由于在參數空間的映射過程中,需要對每個待檢測點進行一次極坐標轉換,因此算法運算量很大,很難達到實際行車環境的實時性要求。

對此,該文提出一種使用平行坐標系映射[12]的級聯霍夫變換直線檢測方案,這種算法在參數空間的映射過程中坐標值變化為線性變換,所以運算量相較傳統的霍夫變換更低。

2.1 平行坐標系映射

對于提取到的車道線邊緣信息,通過對每一個特征點的行列信息進行記錄,將其標注為(xi,yi)。在二維空間繪制兩條平行線,分別標注為X1軸和X2軸,平行線之間的寬度設定為d,對于每個特征點(xi,yi),將xi標注在X1軸上,yi標注在X2軸上,并做一條過這兩點的直線。

至此便將一個笛卡爾坐標系上的坐標點,轉化為了平行坐標軸上的一條直線。為方便直線公式表達,將平行坐標軸表示在笛卡爾坐標系下,其中笛卡爾坐標系的Y軸與X1軸重合,X軸與過X1軸零點的垂線重合,映射后的(xi,yi)便轉換成了一條過(0,yi)和(d,yi)的直線L,其方程為y=x(yi-xi)/d+xi。

坐標點在平行坐標系下的性質:

任取在笛卡爾坐標系上共線的三點(x1,y1)、(x2,y2)、(x3,y3),其共線的直線方程為y=k1x+b1,將它們映射到平行坐標軸上,直線方程Li為y=x(yi-xi)/d+xi,i=1,2,3。

因此,聯立L1和L2方程可求得兩條直線的交點坐標為(d1/(1-k1),b1/(1-k1)),同時聯立L1和L3的方程可得交點也為(d1/(1-k1),b1/(1-k1)),即L1、L2和L3交于同一點。由此可得一個結論,在笛卡爾坐標系上共線的三點,投影到平行坐標系上所對應的三條直線必相交于一點,即直線映射到平行坐標系上會變為一點,這個結論可以為將平行坐標系引入直線檢測算法提供理論依據。

當待檢測的直線斜率小于0時,映射到平行坐標系上所形成的直線段不會在X1軸和X2軸之間形成交點,根據k值的不同,這個交點可能存在于X1軸左側很遠的地方,不利于后面的計算。為了解決這個問題,在X1軸左側距離為d的地方引入一個X0軸,如圖3所示。在該軸上標記-yi值,連接X0以及X1軸的點,X0與X1軸之間記為T域,X1與X2軸之間記為S域。由于將原始像素點的縱坐標值均取反,不會改變這些點共線的性質,因此映射到平行坐標系后仍相交于一點這一結論不會改變。此時當直線斜率大于0時,它們在平行坐標系下的映射直線將在X0和X1軸之間產生交點,坐標為(-d1/(1+k1),-b1/(1+k1))。

圖3 平行坐標軸下的共線點

2.2 級聯霍夫變換

在對待檢測圖像進行基于平行坐標系的坐標映射后,即實現了原始圖像中點到線的轉換,基于投票機制找出通過直線最多的交點,便可對應找出原始圖像中存在的直線??紤]到環境因素的影響,待檢測圖像中可能會存在一些非車道線區域的干擾直線,需要通過消失點的約束對其進行篩選。該文提出一種基于平行坐標系映射的級聯霍夫變換算法檢測車道線的消失點。所謂級聯,即連續做兩次霍夫變換,單次霍夫變換的映射規律是點轉換為線,線轉換為點,則做兩次霍夫變換的結果就變成了點轉化為點,線轉化為線。

為更準確地表示映射后的點在平行坐標系上的表示,該文采取齊次坐標的表示法,以[x,y,w]來表示平行坐標系中的點,(a,b,c)來表示笛卡爾坐標系下的對應直線ax+by+c=0,則在笛卡爾坐標系到平行坐標系S域的映射過程中,點與線的映射關系如下:

(3)

(4)

T域的映射過程中,點與線的映射關系為:

(5)

(6)

其中,d表示平行坐標系之間的間距,w表示齊次系數,p和l分別表示從點到線的映射還是線到點的映射。

解析了單次映射變換的轉換關系后,引入第二次映射變換,級聯變換結束后,線到點的映射公式如下所示:

[-dDw,-dx,-x+y-dw]

(7)

[-dDw,-dx,-x+y+dw]

(8)

[-dDw,-dx,x+y-dw]

(9)

=[-dDw,-dx,x+y+dw]

(10)

由上式可以看出,連續經過兩次映射變換后,原始圖像中的點會經過點到線,線再到點的映射過程,最終在第二個參數空間仍表示為一個點,如圖4所示。

圖4 級聯霍夫變換示意圖

這個性質可以引入車道線消失點的檢測過程中。一般在結構化道路上,車道線是相互平行延伸的,而由于透視的原因,相機采集到的圖像往往呈現一種近大遠小的感覺,車道線的延伸方向會相交于一點,這一點便被稱為消失點。

2.3 消失點檢測

由于前面提取出了包含車道線邊緣信息的預處理圖像,這些邊緣信息的像素點整體上呈現共線的特征,其延長線會相交于消失點,雖然在原始圖像中無法直接確定消失點的位置,但對其使用級聯霍夫變換,使其映射到一個新的參數空間后,便可基于投票的方式快速搜索到消失點,進而推算出其在原始圖像中的位置,反推過程的表達式如下所示。

[x,y,w]o→

[-dDw,-dx,sgn(xy)x+y+sgn(y)dw]p

(11)

[x,y,w]p→

[Dy,sgn(x)dx+sgn(y)Dy-dDw,x]o

(12)

其中,下標o表示該點在笛卡爾坐標系上,下標p表示該點在平行坐標系上。

2.4 基于消失點位置的車道線檢測

霍夫變換檢測車道線的傳統做法是依照直線檢測結果對所有直線段做擬合,然后再根據直線間存在的交點位置投票選出消失點,再通過消失點約束篩選出實際車道線位置[13]。然而該文通過改進后的級聯霍夫變換算法已經得到了消失點位置,可以通過更為簡單的做法反推出車道線位置,可顯著降低算法的運算量。

車道線的位置一般位于消失點下方,以消失點下側作為感興趣區進行掃描,具體檢測步驟如下:

(1)由前敘步驟得到消失點位置V(xv,yv),而消失點下方的各待檢測點灰度值將其表示為pi(xi,yi),構造累加器S(θ)并置為0;

(2)遍歷消失點下方各點,當存在pi(xi,yi)=255時,求出該點與消失點連線的傾角θ,并在相應的累加器中加一,θ的計算如下式所示:

(13)

(3)設置一個閾值Ts,當存在S(θ)>Ts時,過消失點且傾角為θ的直線即為車道線所在直線。

由于實際行車環境中的車道線信息可能存在遮擋、磨損和斷連的情況,為避免漏檢,給傾角設定一個誤差范圍±1°,在進行閾值判別時,實際將比較S(θ)+S(θ')與Ts的值,其中θ'∈[θ-1,θ+1]。由于車道線存在的角度范圍并不大,通過約束檢測范圍可以排除掉一些干擾直線[14],比如路沿和圍欄等圖像邊緣誤檢出的直線,θ的最終取值范圍定在30°~150°之間。

2.5 最小二乘法擬合車道線

雖然根據消失點位置直接過其點畫出傾角為θ的直線可以大致確定車道線位置,但為更精確地提取車道線位置,提高算法的魯棒性,該文采用最小二乘法擬合的方式畫出車道線[15]。設目標曲線方程如下式所示:

(14)

取yi=f(xi),Ei=f(x)-g(x),則Ei可用下式的形式表示:

Ei=f(x)-g(x)=

(15)

其中,Ei表示理論值與實際值的誤差,當誤差的平方和最小時,擬合效果最好,即式(16)應取最小值:

(16)

則計算a0,a1,…,an的方式如下:

(17)

基于上述原理,本節于前敘步驟中已經篩選出符合傾角θ要求的點(xi,yi)(i=1,2,…,n),對這些點以三次曲線模型擬合車道線,得到最終車道線檢測結果。

3 實驗結果及分析

該算法使用的仿真平臺為Visual Studio 2019配合OpenCV3.41,硬件平臺采用Intel(R) Core(TM)i7-6700HQ CPU@2.60GHz 2.60GHz、GTX 965M和8G內存。為保證算法測試的客觀性與準確性,選用的測試數據均采集自公開的TuSimple車道線數據集與ROMA車道線數據集,考慮到真實行車道路情況的多樣性,該文選取了多種結構化道路環境以及多種光照及天氣情況下的樣本對車道線算法進行了實驗。

圖5展示了幾組應用文中算法檢測到的車道線結果,其中第一組圖像為光照良好情況下的車道檢測結果,后兩組為極端光照情況下的車道線檢測結果,第二組為白天逆光環境的采集樣本,第三組為橋洞下弱光環境的采集樣本。每組圖片從左到右分別為預處理結果和車道線檢測效果。通過觀察預處理效果和車道檢測效果可以看出,該車道檢測算法在各種不同的光照環境下均擁有較為穩定的檢測效果。

圖5 不同光照環境下車道線檢測實驗結果

為進一步評估文中所提算法的整體表現,以文中算法為實驗組,傳統霍夫變換直線提取算法作為參照組,選用取自TuSimple車道線數據集的真實環境行車圖片用于車道線的識別,包括直行路段、彎道路段、車道線殘缺路段等實際行車環境中可能遇到的典型情況合計800幀并統一處理為640×360分辨率。首先針對所有待檢測圖像使用相同的預處理算法得到道路車道線的邊緣信息圖像,再分別采用傳統霍夫變換和文中改進算法對這些邊緣信息圖像進行車道線位置檢測,比較兩種算法處理完所有待檢測圖像的耗時長短以及檢測準確度的區別。為客觀統計針對每一幀圖像的檢測中兩種算法的準確度,設定如下檢測標準:取實際車道線L1的上下端點a和b,同時取算法檢測出的車道線L2中平行于a與b的點,距兩點的距離分別為d1和d2。若滿足|d1+d2|≤D,其中D為車道線實際寬度,則認為本次車道線檢測為準確的。

傳統霍夫變換算法與文中改進算法部分對比如圖6所示。

通過對比傳統霍夫變換和文中改進算法的提取效果,可以發現在一些車道線較為清晰的直線道路上,傳統算法和文中算法均可成功檢測出車道線,但在一些彎道區域,傳統霍夫變換檢測出的結果無法準確貼合實際車道線的位置,而文中算法仍可以做到較準確的識別。與此同時,由于級聯霍夫變換是點到點、線到線的映射,原始圖像中的點映射到參數空間時坐標值變化為線性變換,而傳統霍夫變換在映射過程中針對每個點坐標都要進行一次極坐標變換,運算更復雜,所以文中的改進算法在實時性表現上也更優于傳統霍夫變換,效果對比如表1所示。

圖6 傳統霍夫變換與文中算法效果對比

表1 傳統霍夫變換算法與文中算法的準確性和實時性對比

由表1可以看出,在對取自TuSimple車道線數據集中的800張測試圖像進行檢測后,文中算法在實時性和準確性方面均優于傳統的霍夫變換算法,其中準確度提升了6.2%,算法速度提升了31%。

4 結束語

通過對傳統車道線提取算法進行改進,替換掉其中的霍夫變換步驟,改為映射過程更為簡單的平行坐標系映射,然后采用級聯的方式進行消失點的提取。由于在連續兩次映射后,原始圖像的點與第二次參數空間映射后點的坐標屬于線性變換關系,相比傳統霍夫變換的極坐標映射計算量更小,算法復雜度更低,同時基于消失點位置的直線檢測方法也可有效降低誤檢率。實驗結果表明,該算法相比傳統檢測方案擁有更好的準確性和實效性。該算法仍有發展的潛力,在暗光條件和大彎道等場景的檢測有進一步優化的空間,

在將來的研究中,這會是持續改進的側重點之一。

猜你喜歡
霍夫灰度坐標系
航空濾光片陣列多光譜圖像條帶灰度調整算法
冰山與氣候變化
獨立坐標系橢球變換與坐標換算
天津港智慧工作平臺灰度發布系統和流程設計
極坐標系中的奇妙曲線
Arduino小車巡線程序的灰度閾值優化方案
三角函數的坐標系模型
求坐標系內三角形的面積
當之無愧的“冰人”
當之無愧的“冰人”
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合