自動駕駛關鍵技術之道路標線識別

技術乾貨來源於:ind4.net

車道線檢測是汽車自動駕駛系統里感知模塊的重要組成部分。無論是傳統的圖像處理技術還是新興的深度學習方法,都是目前常見的車道表現檢測的解決方法。

下圖為特斯拉早些時間放出的一組圖像,展示其已經實現的道路線識別演算法,該演算法可能是用深度學習方法完成的,當然也可能是使用了普通的圖像處理技術。

傳統的車道檢測方法分兩步:(1)特徵提取(2)車道幾何模型的建立與匹配。傳統的計算機視覺演算法是利用邊緣檢測(Edge detection),霍夫變換(Hough transform)等演算法,把車道線從道路圖片中提取分離出來。這是典型的人工設計特徵(Hand crafted feature)的方法。如今火熱的深度學習(Deep learning),正是取代人工設計特徵,讓計算機自行學習所需要的特徵的技術。

基於深度學習的方法面臨的一大問題是數據量的問題。目前國內外沒用公開的公認的道路標線檢測數據集,針對該問題的研究學者普遍採用自行駕車拍攝、自行標註的方法製作數據集。因此在數據樣本方面就有著或多或少的差異,從而導致對如今各種演算法的性能考核也沒有一個完全統一的標準。

這篇文章中我們就簡單介紹下,傳統方法中的邊緣檢測演算法。圖像中每一個像素點的灰度值不同,邊界處一般會有明顯的邊緣,利用此特徵可以分割圖像。這裡要說明的是圖像中的邊緣指的是灰度值有突變的地方,而物體間的邊界指的是現實場景中的存在於物體之間的邊界。

典型的人工的邊緣特徵提取運算元有Sobel、Prewitt等,常用的邊緣檢測方法有Canny演算法等。將圖像處理領域內經典的Lena圖像用Sobel運算元進行邊緣檢測後得到的圖片如下所示

前面提到,圖像的邊緣指的是灰度值有突變的地方,一般通過求導數或者微分來搜索灰度值突變的像素點。導數越大表示灰度變化越大,即越有可能是邊緣。微分也是同樣的道理。

Sobel運算元在x、y方向上的矩陣如圖所示。Sobel運算元根據像素點上下、左右8個鄰點灰度值與矩陣的卷積和會在邊緣處達到極值這一現象來檢測邊緣。該運算元包含兩組3x3的矩陣,分別為橫向及縱向,將之與圖像作平面卷積,即可分別得出橫向及縱向的亮度差分近似值。

Prewitt運算元的矩陣和Sobel差不多。

Canny演算法出現以後一直是作為一種標準的邊緣檢測演算法。Canny演算法分為幾步:

一、灰度化

Canny演算法通常處理的圖像為灰度圖,因此如果攝像機獲取的是彩色圖像,那首先就得進行灰度化。對一幅彩色圖進行灰度化,就是根據圖像各個通道的採樣值進行加權平均。

二、高斯濾波

圖像高斯濾波的實現可以用兩個一維高斯核分別兩次加權實現,也可以通過一個二維高斯核一次卷積實現。

三、計算梯度的幅值和方向

關於圖像灰度值得梯度可使用一階有限差分來進行近似,這樣就可以得圖像在x和y方向上偏導數的兩個矩陣。常用的梯度運算元如上面所說的Sobel和Prewitt。Canny一般採用下圖更為簡單的矩陣(實際也可以根據實驗需要使用其他運算元)

四、非極大值抑制

圖像梯度幅值矩陣中的元素值越大,說明圖像中該點的梯度值越大,但這不能說明該點就是邊緣。在Canny演算法中,非極大值抑制是進行邊緣檢測的重要步驟,通俗意義上是指尋找像素點局部最大值(極大值),將非極大值點所對應的灰度值置0,這樣可以剔除掉一大部分非邊緣的點。

五、用雙閾值演算法檢測和連接邊緣

Canny演算法中減少假邊緣數量的方法是採用雙閾值法。選擇兩個閾值,根據高閾值得到一個邊緣圖像,這樣一個圖像含有很少的假邊緣,但是由於閾值較高,產生的圖像邊緣可能不閉合,未解決這樣一個問題採用了另外一個低閾值。

在高閾值圖像中把邊緣鏈接成輪廓,當到達輪廓的端點時,該演算法會在斷點的8鄰域點中尋找滿足低閾值的點,再根據此點收集新的邊緣,直到整個圖像邊緣閉合。

你以為這樣就結束了嗎?當然還沒有,點擊此處閱讀原文

下載IND4汽車人APP,做知識領域的專車司機!


推薦閱讀:

下一個萬億市場?誰在趟智能汽車產業鏈的風口
無人駕駛汽車廣泛商用化未來真的會從理論走向現實嗎?
英特爾晶元更有優勢?我國首批開放道路測試車型都採用EyeQ4
駕控匯與中國車載互聯的神奇碰撞

TAG:自動駕駛 | 智能汽車 | 智能駕駛 |