李軍, 鐘鵬
(重慶交通大學 機電與車輛工程學院, 重慶 400074)
車道線檢測經過多年的研究發展,主要分為基于特征、基于模型和基于機器學習的3種檢測方法[1],基于模型檢測方法的效果主要取決于模型的選取.儲開斌等[2]雖提出一直有效的邊緣噪聲消除方案,但最后使用的是直線擬合車道線,此方法在測試曲率較大的道路時,效果較差.洪偉等[3]使用拋物線模型的隨機抽樣一致(RANSAC)算法擬合提取車道線,該方法雖在曲率較大的彎道有較好的結果,但在彎道末端依然未能擬合,并且計算量很大.由于RANSAC算法的檢測性能并不穩定,所以Moon等[4]提出一種使用和聲搜索(HS)算法估算消失點的新方法,相較于RANSAC算法,該方法可穩定估計消失點.近年來,機器學習的高準確性和高適應性使它成為近年的研究熱潮,劉彬等[5]對Enet網絡進行改進優化,對車道線進行像素級的語義分割,檢測準確率較高.除使用Enet網絡以外,崔文靚等[6]根據車道線固有特點,將YOLOv3結構進行改良完善,檢測的平均準確率可達95%.田錦等[7]基于改進的MaskR-CNN模型對道路圖像進行分割,結合直線和多項式進行擬合,生成優化的車道線參數方程,可提高檢測速度和檢測精度.基于模型的檢測方法雖然在特定的道路環境下準確度很高,但選取和建立能夠適應復雜多變道路的車道線模型難度很大.
基于機器學習的方法雖然檢測精度高、適應性好,但其計算復雜且依賴大量的已標定樣本數據;而且用于訓練的數據集中還需要包含待檢測數據的樣本,計算成本也較高,難以滿足快速處理和實時性[8].基于上述原因,本文基于開源計算機視覺庫(OpenCV),提出一種更加便捷的輕量級車道線檢測方法.
車道線檢測步驟,如圖1所示.對輸入圖像進行灰度化處理、雙邊濾波和Canny邊緣檢測,使用速度更快的漸進概率Hough變換(PPHT)檢測車道線.
圖1 車道線檢測步驟
目前,灰度化處理常用的方法有以下3種[9],對應的公式如下:
1) 最大值法
Gray(i,j)=max(R(i,j),G(i,j),B(i,j)),
(1)
2) 平均值法
Gray(i,j)=[B(i,j)+G(i,j)+R(i,j)]/3,
(2)
3) 加權平均法
Gray(i,j)=0.299×R(i,j)+0.587×G(i,j)+0.114×B(i,j).
(3)
式(1),(2)只是簡單地取最大值或平均值,無法最大限度地保留原有值,進而影響后續的梯度計算和邊緣提??;而式(3)符合人眼觀察特性,故有利于后續的操作.灰度化處理后的圖像,如圖2所示.
圖2 灰度化處理后圖像
車道線檢測的濾波應是在達到濾除噪聲的基礎上,為了增加邊緣檢測的準確性,盡力保留圖像邊緣信息.雙邊濾波是一種綜合考慮濾波器內圖像空域信息和像素灰度值相似性的濾波算法,在保留區域信息的基礎上實現對噪聲的去除.雙邊濾波對高頻率的波動信息起到平滑作用,同時,保留大幅值變化的信號波動,進而保留圖像邊緣信息[10].
雙邊濾波器與其他濾波器的不同之處在于,其他濾波器大多只計算圖像的值域信息,而雙邊濾波器還計算圖像的空域信息,使濾波器對邊緣附近的像素進行濾波時,距離邊緣較遠的像素值不會對邊緣上的像素值影響太多,從而保留邊緣的清晰性.
雙邊濾波原理的數學表達式為
(4)
式(4)中:ω(i,j,k,l)為加權系數.
空域濾波器和值域濾波器的乘積決定加權系數取值,空域濾波器表示形式為
(5)
值域濾波器表示形式為
(6)
兩者相乘后,加權系數為
(7)
Canny算法能夠在準確提取圖像邊緣的前提下,不受噪聲的影響,且能夠識別圖像中的弱邊緣和強邊緣[11-13].對于車道線略微殘損的道路,相較于其他算法,Canny算法魯棒性較強,并綜合強弱邊緣的位置關系,給出圖像整體的邊緣信息.該方法的檢測過程有以下5個步驟.
3) 使用非極大值抑制的方法,比較當前像素的梯度強度與沿正、負方向上的兩個像素,當當前像素梯度強度均大于其余兩個像素梯度強度時,該像素點為邊緣點;反之,該像素點被抑制.
4) 檢測強邊緣和弱邊緣.設置兩個一大一小閾值,將檢測到的邊緣點的梯度值與雙閾值進行比較,若邊緣點梯度值小于較小閾值,則消除該點;若邊緣點梯度值大于較小閾值,小于較大閾值,則確定為弱邊緣;若邊緣點梯度值大于較大閾值,則確定為強邊緣.
5) 清除單獨的弱邊緣.在步驟4中確定的弱邊緣點的8鄰域范圍中尋找強邊緣,若存在,則保留;若不存在,則去除該弱邊緣.最后,輸出結果.
Canny邊緣檢測圖,如圖3所示.
圖3 Canny邊緣檢測圖
Hough變換雖然不易受噪聲的影響,但計算復雜、峰值不易確定[14-15].為此,使用計算時間更少的PPHT檢測車道線.
漸進概率Hough變換的步驟如下:1) 隨機獲取邊緣圖像上的前景點,映射到極坐標系畫曲線;2) 當極坐標系里面的交點達到最小投票數時,找出該點對應x-y坐標系的直線L;3) 搜索邊緣圖像上前景點,將直線L上的點(點與點之間距離要小于maxLineGap)連成線段,然后,全部刪除這些點,并且記錄該線段的參數(起始點和終止點),線段長度要滿足最小長度;4) 重復步驟1,2,3.
漸進概率Hough變換除了計算一條獨立直線的方向外,還計算它的延長線,并且它沒有對平面中的每一個可能點進行累積,而是只累積其中的一小部分.所以,相較于標準Hough變換的累積平面中每一個點的時間,漸進概率Hough變換的速度更快.在Microsoft Visual Studio 2017的編譯環境下,利用OpenCV,在California Institute of Technology SURF project數據集上進行測試,測試的PC設備為intel i5-4200H CPU 2.8 GHz.經過漸進概率Hough變換檢測后的車道線檢測圖,如圖4所示.
(a) 在不同車道時的檢測圖 (b) 陰影路面檢測圖
OpenCV庫有大量的可用于視覺處理的函數,可減少開發過程的周期時間.但同時應當看到,雖然在濾波和車道線檢測兩個部分各使用一些改進優化方法,能夠達到預期檢測車道線的目標,卻仍然難以避免誤檢和漏檢.后續為解決誤檢和漏檢的問題,可在漸進概率Hough變換檢測后,基于車道線的寬度特征匹配對檢測出的線段進行篩選過濾,去除車道線以外的直線.