由於網上有很多車道線檢測的案例,而且在Udacity的系列課程中也對此進行詳細的介紹,因此在此簡單總結一下幾種方法。
1. 邊緣檢測+霍夫變換
- 方法流程:彩色圖像轉灰度,模糊處理,邊緣檢測,霍夫變換
- 這種方法一般能夠檢測出簡單場景下的車輛目前行駛的兩條車道線,以及偶爾的相鄰車道(依賴前視相機的角度)。該方法可以利用霍夫變換的結果(線的斜率),進一步過濾出左右車道線。不過同時,該方法也依賴於邊緣檢測的結果,所以調參(邊緣檢測、霍夫變換)以及其他的trick(roi選取等等)是很重要的。
2. 顏色閾值
- 方法流程:將圖像轉顏色空間(一般HSV),對新的color space中的各個通道設置閾值(大於閾值取值為1,小於取值為0),得到結果。
- 該方法依賴於各通道的閾值的選取,只需要調整幾個閾值參數,但個人認為該方法魯棒性會較差,例如當前車輛前方的車輛可能會被全部置1。
3. 透視變換
- 方法流程:獲取透視變換矩陣,透視變換,車道線檢測(1或者2)
- 該方法的優點是將前視攝像頭抓拍的圖像轉為鳥瞰圖,能夠檢測到多條線。其關鍵在於透視變換矩陣的准確性(不考慮轉換后的車道線檢測),對於轉換后的鳥瞰圖,可以通過上述兩種方式檢測車道線。
在實際場景中,傳統方法的魯棒性確實不行,除去光照和鄰近車輛的影響外,車道中間的指示箭頭和人行道也是此類算法很難處理的挑戰。因此,需要結合很多trick。
不過這些方法的實現都很簡單,目前的opencv的python接口和c++接口均有相關的接口。
推薦參考:https://blog.csdn.net/liaojiacai/article/details/63685342