自動駕駛環境感測器是如何檢測車道線類型的?有哪些判斷邏輯?
&>&> 本問題已加入 人工智慧 · 自動駕駛 圓桌中,歡迎關注圓桌參與更多討論 &<&<
事實上是不叫環境感測器這個名字的,對於車道線的檢測,我們通常使用的感測器是激光雷達和攝像頭。這是 優達學城 (Udacity) 在車上通過 3D 列印的支架固定的攝像頭。
HSV 色彩空間
RGB 色彩空間是一個立方體,三個維度分別代表紅綠藍三原色的強度,強度範圍一般是0到255。
而 HSV 色彩空間則是一個圓柱。
- Hue,代表這個顏色的色調,範圍是0~179
- Saturation,代表這個顏色的飽和度,範圍是0~255
- Value,代表這個顏色的亮度,範圍是0~255
如果我們想要獲得黃色這種由成分,通過 RGB 需要切一個小角,不方便取,而通過 HSV 空間則可以直接像取一個乳酪一樣取出來,因此我們通過 OpenCV 將圖像轉為 HSV 色彩空間後,通過取乳酪的方法取出來黃色。我們取的是範圍在(20, 80, 80)到(25, 255, 255)的點。
這張圖是亮度和飽和度都是255的顏色條。我們可以看到20到25的範圍是黃色部分。Canny 邊緣檢測
Canny Sobel
這個演算法的詳細過程可以在上面的鏈接中找到,我們這隻簡單介紹一下過程:
- 對圖像高斯模糊,減少雜訊影響
- 用 Sobel 運算元對圖像求卷積(相當於橫縱求導),並求模獲得邊緣信息。
- 取預設範圍內的值。
然後,我們可以得到這樣的邊緣圖:
摳圖
Arithmetic Operations on Images
對於固定在車上的攝像頭,我們可以預見到我們的車道在哪個地方,所以我們可以直接摳出來我們感興趣的區域(ROI, region of interest),以便於進一步檢測。
霍夫直線檢測
Hough
這個演算法可以識別圖像中的直線,具體過程還是要看上面的鏈接,這裡簡單地說。
霍夫變換對應的空間里,每個點代表原圖中的一個直線。過一個原圖中的點的所有直線在霍夫變換以後可以形成一條曲線。然後我們取交點數非常多的點,它代表的直線就是過這些曲線對應的點的直線了。
我們對我們的 ROI 進行霍夫直線檢測,就能得出我們想要的的直線。但是直線還是有很多,因此我們還需要對直線進行處理,才能把直線融合成一個直線。我的做法是先將圖像延長到底部,然後按直線的斜率分成大於0和小於0的兩部分,按它們的線段長度加權平均,算出線段的端點。這樣我們的直線就融合了。以及九宮格合照:
這裡的道路線檢測是非常理想的情況,事實上我們還需要對攝像頭畸變進行校正,然後通過透視變換得到鳥瞰圖,計算道路線曲率半徑,檢測車輛位置等,而檢測車輛位置就需要用到深度學習的相關知識了。
參考鏈接:
- Challenge #1: 3D Model for Camera Mount
- HSV 色彩空間
- Colorspaces
- Canny
- Sobel
- Arithmetic Operations on Images
- Hough
- 無人駕駛車工程師(英文)
感謝 Udacity 學生 @楊培文 投稿,歡迎進行交流討論~
如下,歡迎討論
車道線檢測本質上是參數估計問題。在做實際工程時,要回答兩個問題:1、車道線的Mathematical Model選什麼?2、檢測到的車道線到底屬於什麼類型?對於第一個問題,常用的車道線模型分為兩類,參數化模型如Line/parabola/cubic, poly-line/spline, Clothoid, 只需若干個參數,即可描述整個車道線形狀;也有基於數據的,如Support Vector Regression, Gaussian Process Regression,這種方法需要有正確數據的支撐,學習出相應的參數。用於車道線的參數估計問題並不簡單,因為數據本身除了noise外,還有outlier。一個外點就能讓傳統的最小二乘法失效。Hough Transform, RANSAC, Least Trimmed Square, Bayesian Filter都可以用來魯棒參數估計。對於第二個問題,檢測到的車道線可以分為白實線、黃實線等,要用到分類的演算法,我不是很懂,就不強答了。ps:使用相機檢測車道線已經是ADAS的標配了,但是,但是,但是,對無人駕駛而言,相機對環境的敏感性,導致車道線檢測有時候會失效。這個時候,最好使用激光感測器作為補充。pps:更進一步,為什麼一定要檢測車道線呢?Stanford的博士論文就沒有涉及到車道線,他們把地面上的有效信息(包含車道線、人行橫道、轉向箭頭、甚至裂縫)拼接為高精度地圖,在線定位就行了。
謝邀。個人理解題主所述車道線類型檢測是指在檢測出車道線位置的前提下,判斷車道線的類別,如:單線/雙線,實線/虛線,白線/黃線等。以下是一些簡單思路:
- 感測器:相機是進行車道線類型檢測的不二感測器。
- 方法:通過提取圖像中車道線附近像素的紋理、顏色、形狀等特徵對不同類型車道線進行區分。傳統特徵提取方法包括邊緣檢測器(Sobel, Canny等),關鍵點描述子(SIFT, SURF等),形狀描述子(Hough transformer等)。檢測(分類)階段則可採用規則(rule-based)方法或統計方法(SVM,Random Forest等)。當前state-of-the-arts方法是利用卷積神經網路(CNN)一步完成對車道線的特徵提取和分類。此外,空間上下文:如相鄰車道線的關係;時序上下文:如相鄰幀同一車道線的類型一致性,均可作為輔助信息融合到分類過程中。如果自動駕駛系統還包括高精度地圖和定位模塊,則可以利用的先驗知識就會更加豐富。
謝邀,第一次回答問題,盡我所能。檢測車道線是自動駕駛或輔助駕駛中很基礎的問題,感測器只需要攝像頭足矣,主要是檢測的演算法。傳統的計算機視覺演算法是利用邊緣檢測(Edge detection),霍夫變換(Hough transform)等演算法,把車道線從道路圖片中提取分離出來。這是典型的人工設計特徵(Hand crafted feature)的方法,需要較高的計算機視覺方面的專家知識。
如今火熱的深度學習(Deep learning),正是取代人工設計特徵,讓計算機自行學習所需要的特徵的技術。這裡推薦百度吳恩達的學生Brody寫的一篇論文:An Empirical Evaluation of Deep Learning on Highway Driving。文中作者搭建了一個卷積神經網路(Convolutional neural network)來進行車道線的檢測:
這裡我再簡單介紹下文章的內容。作者在車上安裝了激光雷達,攝像頭和GPS來採集訓練數據。深度學習的一個弊端就是需要海量的數據訓練神經網路。期待百度等大公司們開放他們的數據集,就像李飛飛的ImageNet一樣,造福大眾(Just kidding~)。另外我知道有個叫KITTI的小型無人駕駛數據集,學術界用來測試演算法的。有了數據以後,作者用了Overfeat演算法做車輛和車道線的目標檢測。這個演算法很經典,是燕大神(Yann Lecun)的學生開發的,但也有點老了。這個領域發展飛快,就我所知,更快更準的演算法有Fast-RCNN, Faster-RCNN, YOLO等。作者的實驗結果證明,深度學慣用於車道的檢測是可行的,50米內車道檢測的三個指標:召回率,準確率,精確率都幾乎是100%。最後,作者慷慨的開源了基於Caffe的源代碼: http://github.com/brodyh/caffe,但完全沒有注釋也是服了。。。瀉藥,對此問題不想做過多的解釋,網上很多此類的論文和文章,涉及到各種識別演算法,每種都有自己的優缺點,對於特徵的選擇肯定不是單一的對實虛線的判斷或者從顏色角度對特徵的提取,大量的特徵的提取肯定是必要的手段,不同天氣下,不同環境中對於車道的影響肯定也是要考慮的。
目前用傳統的圖像處理的方法,基本只能實現理想的直道情況,對於彎道或其他更複雜的就束手無策了。所以本人更傾向於使用深度學習,得到的結果的魯棒性也會非常強。
圖像二值化演算法,將不同的像素全部轉化為灰度計算。
推薦閱讀:
※只用電流估計力矩的情況下,通用機器人的辨識可以達到什麼精度?
※Masimo iSpO2 便攜血氧計(oximeter)是如何搭配 iPhone 實現功能的?