車道線曲線擬合方法

2022-02-04 09:23:08 字數 3165 閱讀 9621

車道線曲線擬合方法

一.車道線擬合演算法

經典擬合演算法

一種車道線曲線擬合方法。本方法的步驟主要包括五步:

第二步對於每條車道線,利用當前幀和前2‑5幀的鳥瞰圖座標用最小二乘法進行三次曲線擬合;

第三步對於每條車道線,保留第二步中結果的一部分引數以及計算時用到的係數矩陣;

第四步在第二步中保留的引數的基礎上,聯立所有幀中的所有車道線,用最小二乘法做最終的擬合,其中計算所需的矩陣由第三步中保留的引數和矩陣直接得到;

第五步通過第四步的計算結果,得到當前幀各條車道線的最終擬合結果。本發明用於車道線曲線擬合。

車道線檢測實驗筆記

二. 基於catmull_rom樣條曲線的車道線檢測

1.樣條曲線模型引入

catmull_rom樣條曲線擬合是曲線插值技術的一種,該插值技術能經過所給的所有控制點。by the way,很多插值技術可以參考catmull_rom樣條曲線擬合方法需要至少四個控制點,公式如下:

其中,t屬於[0,1](也就是0-1中每個t值可能對應所求曲線中的某點,其取值越多,曲線越密)。實際上,四個控制點,曲線只會經過其中兩個控制點,如現在有控制點a,b,c,d,則最後的曲線擬合結果將如下:

得到的事bc之間的擬合曲線。那麼若要得到abcd的擬合曲線應該怎麼辦呢。實際上,引入兩個新的控制點a',d'即可,a'由ab計算而得,d'由cd計算而得,例如,a'計算如下:

a'.x = a.x + (a.x - b.x)

a'.y = a.y + (a.y - b.y)

b'點計算類似。於是,由a'abc可以得到ab曲線,由abcd可以得到bc曲線,由bcdd'可以得到cd曲線,經過三次計算,可以得到abcd曲線。

在一張空白圖上,計算經過(50,50),(90,120),(70,200)三點的catmull_rom樣條曲線。

貝塞爾曲線只會穿過首尾兩個控制點而不過中間的控制點,在某些場合希望曲線穿過所有控制點的話可以使用catmull-rom spline(簡稱cr-spline)

cr-spline需要至少4個控制點,首尾兩個控制點為輔助點,曲線不會穿過,其餘控制點在t=[0,1]之間曲線會穿過(我喊作路徑點),t=0時值等於第2個頂點,而t=1時值等於倒數第2個頂點

為了介面友好,通常都會約定傳遞給插值函式的引數為曲線所經過的路徑點而不包含輔助點,兩個輔助點可以根據已有的路徑點計算出來。

一般情況計算兩個輔助點只需要分別在首尾方向作延伸就行了:p0=p1+(p1-p2),pn+1=pn+(pn-pn-1)

如果傳入的控制點首尾相等形成閉合環,那麼不用計算,直接取值p0=pn-1,pn=p1就行

2.基於catmull_rom樣條曲線的車道線檢測

2.1. 基本思路

有了catmull_rom樣條曲線的基礎,那麼車道線檢測實際上就是找到合適的控制點!

給出基於catmull_rom樣條曲線的車道線檢測的基本方法(除去預處理過程):

(1)hough變換直線檢測,將兩條主車道線檢測出來,直線記為l1,l2;

(2)判斷是車道線是直線還是曲線;

(3)若車道線是曲線,找到三個控制點p1,p2,p3;

(4)通過三個控制點,擬合catmull_rom樣條曲線,得到結果

2.2.實驗示例

按照此特性,若從上往下檢測(即從(x = 0,y = 0)開始x++,y++到(x = w,y = h)),直線的hough檢測結果將會基本吻合實際結果,即在檢測結果點的周圍,都將有實際點的存在;而曲線的hough檢測結果,將會先出現檢測結果周圍沒有實際點,檢測結果點周圍才會有實際點存在。

定義:檢測結果點吻合:若檢測點周圍八領域內存在實際點,則代表檢測點結果吻合。

於是該問題轉化為:從圖頂向下搜尋,能否找到p3點,使得p3點上部分一段區域(給定乙個長度閾值alph1)檢測結果點都不吻合(引入容錯因子,防止雜訊theta),p3點下部分一段區域(同樣給定乙個長度閾值alph2)檢測結果點吻合。若能找到p3點,則該車道線是曲線,否則,該車道線是直線!

找到控制點p1,p2,p3:

p3控制點:實際上,步驟(2)中已經找到了其中乙個控制點p3,p3點可以作為直線部分和曲線部分的分界點,p3以上部分擬合曲線,p3一下部分保留hough變換的直線檢測結果;

p1控制點:我們注意到,可以取遠端兩車道的消失點作為控制點p1。

具體搜尋方法:

1>找到hough變換得到的兩直線的交點o。

2>從o點所在行向下搜尋,找到p1。(從左往右搜尋,第乙個遇到的點即為p1點)

p2控制點:得到了p1,p3兩點,則取p1,p3中間的一行搜尋兩車道的p2點!

經過三個控制點p1,2,3,使用catmull_rom樣條曲線擬合得到結果:

結論:

(1)從結果上來看,能得到曲線,擬合效果並不是很好,但是提公升空間很大,比如增多控制點會讓曲線擬合更為精準!

(2)控制點尋找的方法仍需要斟酌,因為道路的情況及其複雜,所以需要針對可想的所有情況進行模擬!

MATLAB 曲線擬合

x0.1 0.20.15 0.0 0.2 0.3y 0.95 0.84 0.86 1.06 1.50 0.72 函式功能多項式的擬合運算 呼叫方法polyfit x,y,n x為橫座標,y為縱座標,n為擬合階數。例子x 0 0.1 2.5 1y erf x p polyfit x,y,6 p 0.0...

matlab 曲線擬合

在matlab中經常需要對資料進行曲線擬合,如最常見的多項式擬合,一般可以通過cftool呼叫曲線擬合工具 curve fit tool 通過圖形介面可以很方便的進行曲線擬合,但是有些時候也會遇到不方便用圖形工具。因此這裡簡單的記下兩種常用的擬合方法。1 多項式擬合 polyfit和polyval ...

Python曲線擬合

z1 np.polyfit x,y,5 用3次多項式擬合 p1 np.poly1d z1 print p1 在螢幕上列印擬合多項式 yvals p1 x 也可以使用yvals np.polyval z1,x plot1 plt.plot x,y,k.markersize 16,label origi...