matlab点云中值滤波,基于车载激光雷达的车道线识别方法与流程
本發明屬于自動駕駛的模式識別領域,涉及激光雷達點云數據處理及識別方法。
背景技術:
車道線檢測在智能車輛輔助安全系統中起著關鍵的作用,車道偏離警示系統在車道保持輔助系統以及車道換道輔助系統中有著廣泛的應用;同時車道線檢測是智能車自動導航系統的基礎,車輛自動導航的最優行駛路徑需要根據已獲取的道路環境信息進行規劃,車道線檢測在具體的車道行駛中是非常重要的。
車道線檢測的基本原理是使用傳感器獲取道路以及周邊環境信息,然后經過復雜的分析獲取車道線所在的具體位置,最終在車輛自主導航系統和智能車輛輔助安全系統中發揮作用。目前,車道線檢測方法有三種:分別是基于雷達的車道線檢測、基于視覺的車道線檢測和雷達與視覺相結合的車道線檢測。目前基于視覺的車道線檢測技術已經比較成熟,它是通過相機獲取道路信息,通過直接利用道路的視覺特征,這種方式有著很快的處理速度,因此被廣泛的應用;但相機本身有個很大的缺陷就是易受外界環境的影響。由于雷達技術的發展使其具有及其不容易受外界環境的影響這一優勢,基于雷達的車道線檢測成為了研究熱點。目前使用在車道線檢測上的雷達主要是激光雷達和毫米波雷達,因為激光雷達有著強大的抗外界干擾能力和高分辨率優勢,因此被廣泛使用。激光雷達分為單線激光雷達、多線激光雷達和三維全向激光雷達。其中因為多線激光雷達探測距離更遠、檢測精確度更高、掃描范圍更廣并且返回信息量更大;三維全向激光雷達價格過高而備受青睞。
技術實現要素:
發明目的
本發明使用激光雷達傳感器做車道線識別,解決了傳統相機在夜晚、霧天等光照條件不好的情況下無法識別車道線的問題。
技術方案
一種基于車載激光雷達的車道線識別方法,其特征在于:步驟如下:
一、讀取curb中間的道路點云數據:
使用32線激光雷達傳感器,將此傳感器豎直的安裝在自車的車頂,以獲取道路及其周圍的環境點云數據;
(1)使用最小二乘算法分別擬合左、右curb的函數關系式yl=alxl+bl和yr=arxr+br,其中yl代表左邊curb點云的縱坐標值,xl代表左邊curb點云的橫坐標值,al為左邊curb函數式的系數,bl為左邊curb函數式的截距,yr代表右邊curb點云的縱坐標值,xr代表右邊curb點云的橫坐標值,ar為右邊curb函數式的系數,br為右邊curb函數式的截距;
(2)根據左、右curb的函數關系式yl=alxl+bl和yr=arxr+br使用Visual Studio平臺中的C++編程提取curb中間的道路點云數據(x1,y1),(x2,y2)...(xn,yn),其中n代表提取的點云個數,為后續識別車道線做準備;
(3)取由激光雷達的1-22線束獲取的點云數據;
二、排序:
首先對路面數據分開處理,以自車坐標為原點,分別將數據根據笛卡爾坐標系的縱坐標0點為基準,存成兩類,分別為縱坐標值大于0和縱坐標值小于等于0,路面數據從小到大快速有序進行排列存儲;
三、均值濾波:
使用均值濾波算法,對數據進行平滑操作;
四、尋找峰值:
對于通過激光雷達獲取的點云數據的強度值,由同一個線束返回的多點云強度值就會出現局部峰值,此局部峰值點即為車道線的強度;
因為實際的數據處理中有噪聲的干擾,因此多點云強度值局部會出現很多的峰值點,然而并不是所有的峰值點都是車道線的數據點,根據車道線的強度值要比路面點的強度值大很多這一信息,設置峰值點要比其峰谷點至少大5,才認為是有意義的車道線數據點;
五、車道線高度信息篩選:
車道線是在路面刷了一層涂漆,那么這層涂漆就會高出其周圍的路面,根據此信息,我們選取強度峰值周圍的點,并在這些點中,找出高度較其他點高的點,這些點就是組成車道線標識的點,這里需要使用均值濾波進行平滑處理;六、多線束聯合篩選峰值:
因為車道線是具有線性特征的,那么每個線束提取的峰值如果是車道線標識點,那么其相對應的在其最鄰近線束應該具有x軸方向橫向距離不超過車道線標識寬度的峰值點;為了剔除噪聲點的干擾,這個連續的峰值點還需大于一定數目,將此橫向距離閾值設置為0.15m,連續的點數目閾值設置為10,即這個連續的點數目超過10,我們才認為它是組成車道線的峰值點;
由第一線數的峰值點找到第二線束的峰值點,再由第二線束的峰值點找到第三線束的峰值點,以此類推直到搜索到最后一個線束;然后判斷找到的峰值點總數是否滿足我們設置的閾值,滿足則保留,否則丟棄;
然后從第一線數的其余峰值點繼續按照上述方法往下找,直到遍歷完所有峰值點,已經遍歷過的點不再參與遍歷操作;
以上多線束聯合,將基于自車坐標的y軸上、下部分分開操作;
如此,為了減小計算量和無用信息的干擾,首先通過curb限制,提取了道路信息點,然后根據車道線的強度特征,使用峰值法粗篩選車道線點,最后根據車道線的線性特征,使用多線束聯合法篩選掉干擾點,進而將自車前方和后方的車道線識別出來。
上述步驟二-步驟六的數據分析均采用單線束獨立分析。
優點及效果
本發明的識別方法通過使用激光雷達獲取的點云數據進行車道線識別,很好的克服了傳統視覺算法檢測的缺點,即使在下雨、大霧等天氣不好的情況下也能很好的進行車道線檢測。并且激光雷達分辨率高,掃描范圍廣,通過復雜的數據分析和多幀聯合能夠快速且精確的檢測出車道線。
附圖說明
圖1、原始點云數據圖;
圖2、單線束自車上半部分強度趨勢圖;
圖3、均值濾波之后的強度數據趨勢;
圖4、原數據高度趨勢;
圖5、均值濾波后數據高度趨勢;
圖6、原圖;
圖7、平滑后的數據圖;
圖8、多線束聯合;
圖9、識別效果圖1;
圖10、識別效果圖2;
圖11、識別效果圖3;
圖12、耗時統計。
具體實施方式
下面結合附圖對本發明做進一步的說明:
基于車載激光雷達的車道線識別方法,步驟如下:
一、讀取curb(curb即為馬路牙子)中間的道路點云數據:
本實施例中,使用32線激光雷達傳感器,將此傳感器豎直的安裝在自車的車頂,以獲取道路及其周圍的環境點云數據;
(1)首先為了限制道路分析區域,使用最小二乘算法分別擬合左、右curb的函數關系式yl=alxl+bl和yr=arxr+br,其中yl代表左邊curb點云的縱坐標值,xl代表左邊curb點云的橫坐標值,al為左邊curb函數式的系數,bl為左邊curb函數式的截距,yr代表右邊curb點云的縱坐標值,xr代表右邊curb點云的橫坐標值,ar為右邊curb函數式的系數,br為右邊curb函數式的截距;
(2)根據左、右curb的函數關系式yl=alxl+bl和yr=arxr+br使用Visual Studio平臺中的C++編程提取curb中間的道路點云數據(x1,y1),(x2,y2)...(xn,yn),其中n代表提取的點云個數,為后續識別車道線做準備;
縮編程序代碼:
(3)根據數據統計結果以及雷達線束掃描方式,發現并不是雷達所有線束都能打到地面獲取數據,取由激光雷達的1-22線束獲取的點云數據;
以下步驟二-步驟六的數據分析均采用單線束獨立分析;
二、排序:
為了更好的使用強度信息進行車道線和道路分離,首先對路面數據分開處理,以自車坐標為原點,其坐標系如圖1坐標線所示,分別將數據根據笛卡爾坐標系的縱坐標0點為基準,存成兩類,分別為縱坐標值大于0和縱坐標值小于等于0,路面數據從小到大快速有序進行排列存儲(即如圖1虛線箭頭所示,從左到右的方向);
三、均值濾波:
對排序好的數據,觀察其強度變化趨勢如圖2所示,從圖2我們可以發現數據并不平滑,不利于尋找峰值,于是這里使用本技術領域的均值濾波算法,對數據進行平滑操作,濾波后的數據趨勢如圖3所示;
四、尋找峰值:
對于通過激光雷達獲取的點云數據的強度值,物體材質不同返回的強度數據是不一樣的,通常車道線的強度值要大于道路強度值;那么,由同一個線束返回的多點云強度值就會出現局部峰值,此局部峰值點即為車道線的強度,如圖3中代表的點(圓圈里的值);
因為實際的數據處理中有噪聲的干擾,因此多點云強度值局部會出現很多的峰值點,然而并不是所有的峰值點都是車道線的數據點,根據車道線的強度值要比路面點的強度值大很多這一信息,設置峰值點要比其峰谷點至少大5,才認為是有意義的車道線數據點;
五、車道線高度信息篩選:
車道線是在路面刷了一層涂漆,那么這層涂漆就會高出其周圍的路面,根據此信息,我們選取強度峰值周圍的點,如圖4所示,并在這些點中,找出高度較其他點高的點,如圖5所示圓圈里的點,這些點就是組成車道線標識的點,因為在實際道路中車道線會有磨損等一些外力的干擾,其呈現的數據趨勢并不是我們理想中很明顯的找出有高度特征的趨勢,如圖6原始數據和圖7使用均值濾波處理后的數據對比所示,所以這里需要使用均值濾波進行平滑處理;
六、多線束聯合篩選峰值:
因為車道線是具有線性特征的,那么每個線束提取的峰值如果是車道線標識點,那么其相對應的在其最鄰近線束應該具有x軸方向橫向距離不超過車道線標識寬度的峰值點;為了剔除噪聲點的干擾,這個連續的峰值點還需大于一定數目,我們才認為它是構成車道線的峰值點;根據《道路交通標志和標線》國家標準(GB5768-1999)的規定,我國現行的道路交通指示標線寬10-20cm,并且分析現在處理的數據后,我們將此橫向距離閾值設置為0.15m,連續的點數目閾值設置為10,即這個連續的點數目超過10,我們才認為它是組成車道線的峰值點;
如圖8所示,由第一線數的峰值點1找到第二線束的峰值點2,再由第二線束的峰值點2找到第三線束的峰值點3,以此類推直到搜索到最后一個線束N;然后判斷找到的峰值點總數是否滿足我們設置的閾值,滿足則保留,否則丟棄;
然后從第一線數的11點繼續按照上述方法,往下找,直到遍歷完所有峰值點,注意,已經遍歷過的點不再參與遍歷操作;
因為考慮到車道線標識有錯開的情況,所以以上多線束聯合,將基于自車坐標的y軸上、下部分分開操作;
如此,為了減小計算量和無用信息的干擾,我們首先通過curb限制,提取了道路信息點,然后根據車道線的強度特征,使用峰值法粗篩選車道線點,最后根據車道線的線性特征,使用多線束聯合法篩選掉干擾點,進而將自車前方和后方的車道線識別出來。
識別效果如圖9、圖10和圖11所示,圖中圓點即為識別出來的車道線的點。
選取高速路上的200幀數據的耗時進行分析,如圖12所示,平均耗時為37ms。
總結
以上是生活随笔為你收集整理的matlab点云中值滤波,基于车载激光雷达的车道线识别方法与流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AsciiDoc的安装和简单使用
- 下一篇: decawave1001-DEV简介开发