使用OpenCV實現車道線檢測

2021-10-10 10:18:20 字數 1722 閱讀 2221

計算機視覺在自動化系統觀測環境、**該系統控制器輸入值等方面起著至關重要的作用。本文介紹了使用計算機視覺技術進行車道檢測的過程,並引導我們完成識別車道區域、計算道路roc和估計車道中心距離的步驟。

幾乎所有攝像機使用的鏡頭在聚焦光線以捕捉影象時都存在一定的誤差,因為這些光線由於折射 在鏡頭邊緣發生了彎曲。這種現象會導致影象邊緣的扭曲。主要作用就是去除影象失真。

檢測車道的第一步是調整我們的視覺系統,以鳥瞰的角度來觀察前方的道路,這就有助於計算道路的曲率,因此有助於我們**未來幾百公尺的轉向角大小。俯檢視的另乙個好處是它解決了車道線相交的問題。但是實際上只要車輛沿著道路行駛,車道線就是平行線。

鳥瞰圖可以通過應用透視變換來實現,即將輸入影象中車道區域四個點對映到所需點上,從而生成自頂向下的俯檢視。這些點根據個案確定,決定因素主要是攝像頭在車輛中的位置及其視野。下圖分別表示輸入和轉換後輸出影象。

現在的問題是車道線是平行的,下一步將它們從輸入影象上分割出來。輸入影象包括rgb3個通道,車道線為白色或黃色。基於這個假設,輸入影象可以轉換為單個通道灰度影象,從而消除我們不需要的通道。另乙個要轉換的是顏色空間要轉換為hls顏色空間,其中s通道可能會根據照明情況提供較好的結果。在下面示例中,將使用影象閾值處理影象,得到閾值處理後的影象如下:

下閾值和上閾值將根據輸入影象手動調整。opencv有基於整體巢狀邊緣檢測的先進技術,而無需對閾值進行任何手動調整,但本例子使用的依然是簡單的閾值技術。

預處理輸入影象後,將在影象空間中確定並繪製車道。方法是在二進位制影象(閾值影象)的下半部分繪製非零畫素直方圖,以便觀測:

由於畫素值是二進位制的,峰值代表大多數非零畫素的位置,因此可以很好地指示車道線。直方圖中的x座標用作搜尋相應通道的起點。這裡應用了滑動視窗的概念,下圖是使用滑動視窗的結果:

滑動視窗有助於估計每個車道區域的中心,使用這些x和y畫素定位函式可以適合二階多項曲線。該函式適合f(y)而不是f(x),因為通道在影象中是垂直的。

下一步是計算曲率半徑,該半徑可以使用與曲線區域性部分附近的點緊密擬合的圓進行計算,如下圖所示,曲線在特定點的曲率半徑可以定義為近視圓的半徑。此半徑可以使用下圖中的公式計算。

最後一步是在這些點之間放置乙個多邊形,並將其投影到原始影象,來突出顯示車道區域。車道面積和曲率半徑是根據畫素值計算的,畫素值與真實世界空間不同,因此必須轉換為現實世界的值,這涉及到測量我們投射扭曲影象的車道部分的長度和寬度。為簡單起見,我們可以假設大多數車道通常長 30 公尺,寬 3.7 公尺,並且使用**將畫素空間值轉換為實際儀表測量值。

opencv車道線檢測

二值化 先變化為灰度圖,然後設定閾值直接變成二值化影象。形態學濾波 對二值化影象進行腐蝕,去除噪點,然後對影象進行膨脹,彌補對車道線的腐蝕。邊緣檢測 canny變化 sobel變化和laplacian變化中選擇了效果比較好的canny變化,三者在 中均可以使用,canny變化效果稍微好一點。按鍵控制...

無人駕駛 OpenCV車道線檢測

opencv車道線檢測 輸入 一張攝像機拍攝到的道路,中需要包含車道線。如下圖所示 可 可以直接將另存成jpg格式來使用 輸出 影象座標系下的左右車道線的直線方程和有效距離。將左右車道線的方程繪製到原始影象上,應如下圖所示。原始影象 認識影象前,我們需要先回顧一下在初中所學的物理知識 光的三原色,光...

車道線檢測之3D車道線檢測

可參考文獻 有相機座標系ccamera和道路座標系croad,作者假定兩個座標系的roll和yaw一致,僅存pitch的差異,那麼,兩座標係之間的轉換關係tc2r將由h cam和camera pitch確定,其中,h cam和camera pitch由模型 輸入為相機採集的影象,輸出分為2部分,第一...