羅勝,趙麗,王慕抽
(溫州大學 計算機與人工智能學院,溫州 325000)
目前,道路執法的視覺監控系統中,從靜態攝像頭中抽取語義信息的自動化程度較高[1-6],能自動識別并記錄違規違法行為;但是架設在執法車上的動態攝像頭,其信息處理和自動化程度較低,無法自動識別違規違法行為,甚至無法準確解析道路結構。解析道路結構是自動化動態執法的基礎和關鍵。尤其在高速道路上,識別出快車道和慢車道、路肩,隨機動態執法,可以提高高速道路的通行效率,消除安全隱患。而且,道路結構化解析也是無人駕駛、輔助行駛、自主導航等智能系統至關重要的基礎技術。
近幾十年來,各國研究者提出了自頂向下[7]、自底向上[6,8-13]的人工設計算法,抽取道路特征解析道路,但是難于普適多種道路,而且往往側重于當前車輛兩側的兩條車道線。其中,最為經典的方法是基于Hough變換檢測車道[8],但其計算速度低。因此,Satzoda等[9]提出利用多層次Hough變換來提高計算速度,Katru[10]采用分支、合并的并行方法提高計算速度。另外,Wang等[11]提出基于B-snake的車道模型以描述更廣泛的車道結構,Jung和Kelber[12]提出近場采用線性函數、遠場采用二次函數的拋物線車道模型,Bertozzi和Broggi[13]采用附加非線性項的擴展雙曲線處理直線和曲線之間的過渡。近十年來,深度學 習 迅 猛 發 展,迅 速 出 現 了 LaneNet[14]、3DLaneNet[15]、LaneNet+H-Net[16]、LineNet[17]、SCNN[18]、UPSNet[19]等 準 確 自 動 化 解 析 道 路 的 網絡,能夠結構化解析道路上的全部車道,但是計算設備復雜、昂貴,并不適合架設在車上。
傳統的車道檢測算法把圖像空間的邊緣線經Hough變換到ρ-θ空間,根據車道線總是長線的特點定位到累加值較大的候選點,再回到圖像空間篩選候選線段。這種思路具有以下缺點:①需要把圖像空間邊緣上的所有點都投影到離散的ρ-θ空間,然后對ρ-θ空間的每個點進行篩選,并對每條候選線段再次篩選,流程長,算法復雜,時間和空間復雜度都很高;②得到的ρ-θ空間候選點并不與道路線一一對應,而是零散、重復甚至包含不相關的線段,導致圖像空間篩選候選線段的處理比較復雜,檢測結果不準確。因此,Ding等[20]采用增強RANSAC進行線段篩選。事實上,圖像空間邊緣點上就有梯度信息,對此梯度計算直方圖,長線總是峰值,而且此直方圖比Hough變換后的ρ-θ空間更直觀。但是,此直方圖綜合了整個圖像各個位置相同角度線段的梯度,并不能獨立篩選出車道線。而Hough變換后的ρ-θ空間中有距離ρ變量,因此能夠將各個直線區分開來。如果結合這2種信息,就可以簡化ρ-θ空間和直線段的篩選步驟,簡化算法,提升檢測效果。
基于以上思路,本文提出了梯度直方圖和Hough變換互補的算法,具有以下優點:①用邊緣點的梯度直方圖篩選ρ-θ空間的候選點;②用動態規劃的方法在剩余的ρ-θ空間候選點中尋找最合理的車道線組合。這種算法能夠大幅降低時間和空間復雜度,提高檢測效率,并且能夠定位道路上的所有車道,為動態執法提供結構化的道路信息。
本文算法流程如圖1所示,分為邊緣檢測、邊緣點梯度統計、Hough變換、非最大值抑制和動態規劃等步驟,最后輸出檢測到的多車道數據。

圖1 本文算法流程Fig.1 Flowchart of proposed algorithm
采用常規的邊緣檢測方法,如canny算子,對輸入的圖像抽取邊緣。為提高計算速度,采取了以下2個措施:①由于定位車道計算出車道線在圖像中的相對位置,把分辨率較高的輸入車道圖像降采樣為只有960×800的低分辨率圖像;②由于車道主要位于圖像的下半部分,并且車道線的消失點通常位于圖像中間的一個矩形框內,假設矩形框高度和寬度為整個圖像的1/10,同時車道線的角度在-80°~80°范圍內,將圖像的下半部分、-80°~80°的范圍設置為感興趣區域。預處理效果如圖2所示。

圖2 輸入圖像及感興趣區域部分的邊緣Fig.2 Original image and edges of ROI
對感興趣區域中的所有點,在原圖像的灰度圖中計算梯度。為提高梯度的準確性,擴大了鄰域范圍,采用5×5的濾波器,權重如圖3所示。統計每個梯度角度上的邊緣點數目,得到邊緣點梯度統計直方圖,如圖4所示。因為是對整個感興趣區域進行統計,同一傾角但不同線段上的邊緣點會被合計成一個值。

圖3 梯度濾波器Fig.3 Gradient filter

圖4 邊緣點梯度統計直方圖Fig.4 Gradient statistic histogram of edge points
Hough變換將圖像空間的參數離散化成累加器[2]。Hough變換如下:

將圖像中的點坐標(x,y)轉換到參數空間(ρ,θ),每個點對應的累加器值加1。通過改變ρ和θ值,能獲得大量累加器,如圖5中灰點所示。由于參數空間中的累加器會出現局部最大值,通過檢測該局部最大值,能夠尋找到覆蓋多數點(x,y)的直線參數方程(ρ,θ)。

圖5 邊緣的Hough空間圖像Fig.5 Image of Hough space of all edges
車道線往往是圖像下半部分中最長的線,因此取邊緣點梯度統計直方圖中的峰值mi。Hough變換進行了離散化處理,每個峰值mi向左右2個方向拓展Δm,因此在Hough變換的ρ-θ空間中,保留[mi-Δm,mi+Δm]間的候選點,去除非其余最大值角度中的候選點,如圖6所示。圖6中綠色的區間就是結合梯度的方向和Hough變換的位置信息篩選出的候選區域。
車道線往往是各個角度最長的線,因此只保留每列的最大值,如圖6所示。圖6綠色區間的白色點就是每列的最大候選點。相鄰車道線間存在夾角,因此把每個候選區域中的候選點[]合并成一個候選點ci,ci的位置參數(ρi,θi)為此段候選點[]中累加值最大的候選點的位置參數,累加值Ai為候選點[]中累加值[]的平均值:

篩選后的候選點,相比由Hough變換得到的初始候選點,數量大為減少,僅有幾十個。如圖6中紅色叉點所示,候選點的準確性提高。

圖6 Hough空間候選點的三次篩選Fig.6 Candidate points in Hough space filtered for 3 times
將候選點升序排列,分別做為概率矩陣K的行和列。概率矩陣K中,(θl,θr)位置的元素為plr,表示左車道線的角度為θl、右車道線的角度為θr時車道成立的概率。在非最大值抑制步驟已經確定了θl的距離為ρl、θr的距離為ρr,因此(ρl,θl)代表了左車道線、(ρr,θr)代表了右車 道線。概率plr為

式中:pl為左車道線成立的概率;pr為右車道線成立的概率;pw為左右車道線間寬度成立的概率;ps為左右車道線長度成立的概率。

式中:pl為左車道線(ρl,θl)Hough變換后累加值Al與候選點中最大累加值Am的比值;pr為右車道線(ρr,θr)Hough變換后累加值Ar與Am的比值;pw為左右車道線間寬度dlr與車道經驗寬度d0的比率;H為圖像的高度;ps為左右車道線累加值比值接近1或接近0.33的程度;r0為左右車道線累加值比值。
按照高速道路的設計規則,最左邊或者最右邊的車道線是實線,其余車道線是虛線,虛線實線長2m,間隔長4m,占空比為0.33。如果左右車道線累加比值為1或者0.33,左右車道線成為相鄰車道線的概率最大,其余比值下概率就小。
因此,概率矩陣K中的元素包括左車道線(ρl,θl)、右車道線(ρr,θr)、寬度dlr和概率plr等4個屬性。概率矩陣中的元素是一條車道的成立概率,因此車道檢測就是在概率矩陣中從左上角到右下角的路徑尋找最優的車道組合方案。采用動態規劃選擇路徑內各車道概率均值最大、寬度方差最小的方案為最優的組合。目標函數s定義為

動態規劃步驟如下:
步驟1在概率矩陣中找到最大的k個值,構成k個初始種子組合。
步驟2從步驟1的種子方案向右邊生長,如第i個方案為pi=[],其最后車道在矩陣中的位置為(li,ri)。在ri行找到寬度相近、概率最大的m個車道,其概率值為(t∈[0,m]),放入方案中作為新的、最右邊的成員,計算此方案的概率均值和寬度方差。
步驟3從所有種子方案中挑選出概率均值和寬度方差加權和最大的前k個組合。
步驟4迭代步驟2、步驟3,直到右邊沒有候選點。
步驟5將種子方案向左邊生長,按步驟2、步驟3迭代直到左邊沒有候選點。
步驟6選擇概率均值和寬度方差加權和最大的方案作為結果。
按高速道路設計原則,道路最左和最右的車道線是實線,最右車道線的右邊是路肩。因此,動態規劃尋優得到的方案中,最左線段累加值與此方案中各線段最大累加值的比值應接近1;如果最左的多條相鄰線段的比值相近且都接近1,那么選擇該多條相鄰線段中最右的線段為方案的最左車道線,其余作為圍欄等干擾,從方案中去除;如果最右的多條相鄰線段的比值相近且都接近1,那么選擇該多條相鄰線段中最左的線段為方案的最右車道線,最左的線段右邊鄰接線段作為路肩,其余作為圍欄等干擾,也從方案中去除。
從筆者拍攝的高速行駛視頻中抽取200張評測本文算法,結果如圖7所示。圖7中紅線是最左、最右車道線,紫線是路肩的車道線,綠線是淘汰的干擾線,中間的紅點為消失點??梢钥闯?,本文算法能夠準確地檢測出實車道線、虛車道線、路肩,結構化解析高速道路,可以用于高速道路的動態執法。

圖7 高速道路的車道檢測結果Fig.7 Lane detection results of expressways
本文算法主要針對高速道路的結構化解析。為了驗證本文算法對普通道路的效果,也從筆者拍攝的行駛視頻中抽取50張進行評測。與高速道路不同,普通道路最右實車道線的右邊沒有路肩,因此對動態規劃的規則進行了相應修改,結果如圖8所示。與圖7相同,圖中紅線是最左、最右車道線,綠線是淘汰的干擾線,中間的紅點為消失點。圖8中間的例子,由于停車的遮擋,左邊的實車道線被誤檢為虛線??梢钥闯觯疚乃惴軌蜉^準確地檢測出實車道線、虛車道線,結構化解析普通道路,也可以用于普通道路的動態執法。

圖8 普通道路的車道檢測結果Fig.8 Lane detection results of urban roads
為了評比本文算法的性能,將其與傳統的Hough變換車道檢測[8]、層次化Hough變換車道檢測[9]、擴展雙曲線模型車道檢測[13]及深度學習的LaneNet[14]、UPSNet[19]在i7-6700K處理器(無GPU)、MATLAB2017的平臺上進行了對比。從KITTI[21]的高速道路中選擇100張樣本作為測試集。如果檢測到的車道線段有30%或者以上落在ground truth中,就認為是正確檢測到車道;否則失敗。定義準確率為檢測到的車道線是真正車道線的數量比例,即

召回率為檢測正確的車道線占ground truth中全部車道線的比率,即

式中:TP(True Positive)為正確檢測到的真實車道線數量;TN(True Negative)為將非車道線檢測為真實車道線的數量;FP(False Negative)為未檢測到的真實車道線數量。
實驗結果如表1所示。

表1 不同算法的性能對比Tab le 1 Com parison of perform ance between different algorithm s
基于傳統的Hough變換車道檢測[8]的準確率和召回率只有63.47%和59.04%,速度只有8.2 FPS;基于層次化Hough變換的車道檢測[9]的準確率和召回率均有較大提高,達到了76.29%和73.34%,速度提高更快,達到了32.7 FPS;基于擴展雙曲線模型車道檢測[13]的準確率和召回率一步提高到79.57% 和87.13%,速度為23.6 FPS;LaneNet[14]和UPSNet[19]都 是 基 于 深 度學習,沒有GPU的支持,速度只有18.4 FPS和13.6 FPS,但是準確率分別達到92.81%(最大值)和89.96%,召回率也分別達到93.19%和91.37%;本文算法篩選掉了大部分偽車道線,能夠去掉陰影和近似印跡,但是容易受車輛遮擋,準確率為91.23%,不如LaneNet算法的92.81%,但是召回率達到了最大值94.18%,而且檢測速度也達到了最大值36.5 FPS。
1)相比于傳統的基于Hough變換車道檢測的算法,本文算法利用邊緣梯度減少了Hough變換后候選點的數量,基本上排除了不含車道線信息的Hough空間候選點,保留了包含車道線信息的候選點,并采用動態規劃篩選出真實車道線,定位到道路上的全部車道,結構化解析高速道路,能夠用于道路的動態執法。
2)算法簡單,計算資源耗費少,能夠用于實時的道路分析檢測。