在自動駕駛中,為維持車輛可以在道路上安全行駛在正確車道上,因此辨識車道線是重要的任務,所以Udacity於第一個專案便是-辨識車道線,專案的任務是輸入原始一個影片,利用影像程式處理辨別車道線,提供一個影像產出,能將車道線利用粗線或是區塊標標註出來,以利未來自駕車輛能辨別車道線,可以正確行駛在車道上。
為了可以達到辨識車道線這個目的,需要以下的流程及技術:
偵測邊緣的方法如下[1]:
1.平滑兼去噪: 利用高斯濾波器(Gauss filter)。
2.求邊緣:求得梯度長度、梯度方向。
3.找到最明顯的邊緣:若梯度長度為區域極大值,則保留,否則設為零。區域極大值是依照梯度方向取得前後兩個像素,僅三個像素比較梯度長度。
4.清除不明顯的邊緣:設定門檻,梯度長度太短者設為零。
5.銜接邊緣。
在1962年,Paul Hough在圖像空間中,一條線被繪製為x對y,但是設計了一種在參數空間中表示線的方法,我們稱之為「霍夫空間」。在Hough空間中,我可以將“x vs. y”直線表示為“m vs. b”中的一個點。 霍夫變換就是從圖像空間到霍夫空間的轉換。 因此,圖像空間中的線的表徵將是霍夫空間中位置(m,b)處的單個點。
霍夫轉換(Hough transform) 之轉換步驟[1]:偵測直線,甚至可以偵測線段,在這兒主要提定義車道線。
轉換範例[3]
Hough-example-result-en.png
輸入的圖片中有兩條粗直線,經過霍夫變換後的結果得到accumaltor矩陣,右圖就是把accumaltor矩陣畫出來,越亮值越大,越黑值越小。在右圖中,有兩個很明顯的亮點, 這兩個亮點分別代表兩條不同參數的直線,與輸入的圖片(左圖)吻合。然後讀取矩陣的兩個最大值就可以得出這兩條線距畫面中心距離以及角度。