本發(fā)明屬于智能輔助駕駛技術(shù)和人工智能領(lǐng)域,尤其涉及一種基于透視圖的魯棒性多車道線檢測方法。
背景技術(shù):
近年來,由于無線傳感器網(wǎng)絡(luò)的發(fā)展,先進輔助駕駛系統(tǒng)ADAS(Advanced Driving Assistance System)成為車輛主動安全系統(tǒng)中最核心的功能之一。ADAS系統(tǒng)的核心是對道路場景的分析,道路場景分析總的來說可以分成兩個方面:道路檢測(包括對可行駛區(qū)域的劃定,車輛和道路之間的相對位置的確定以及車輛前進方向的分析)和障礙物檢測(主要是對車輛在道路上可能遇到的障礙物的定位)。車輛在駕駛過程中,需要對自身進行定位,以完成橫向控制與縱向控制的基本任務(wù),定位問題的前提是對道路邊界的檢測以及對所述道路幾何形狀的估計,在該領(lǐng)域中,車載視覺已被廣泛使用。相對于激光雷達等主動型傳感器(active sensor),車載視覺(on-board vision)這種被動型傳感器(passive sensor)對環(huán)境具有非侵入性(nonintrusive)、高分辨率、低功耗、低成本和易集成等特點。
多車道檢測技術(shù)是滿足強勁的需求和低成本產(chǎn)品的最好的選擇。一些成功的視覺應(yīng)用程序已經(jīng)完全可以應(yīng)用于半自治的駕駛技術(shù)中,例如Mobileye公司的純視覺ACC系統(tǒng),車道偏離警示系統(tǒng),以及車道改變協(xié)助等等。
技術(shù)實現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題是,提供一種基于透視圖的魯棒性多車道線檢測方法,不需要對攝像機的位置參數(shù)進行標定,且對于復(fù)雜的駕駛環(huán)境,例如:雨天、傍晚、路面有污損、曝光不佳、路面有少量積雪等狀況,均具有良好的檢測效果。
為了實現(xiàn)上述目的,本發(fā)明采取了如下的技術(shù)方案:
一種基于透視圖的魯棒性多車道線檢測方法包括以下步驟:
步驟1、通過車載相機獲取道路圖像;
步驟2、對所述道路圖像進行灰度預(yù)處理
步驟3、利用基于多條件約束的車道線特征濾波器對道路圖像中車道線特征進行提?。?/p>
步驟4、適應(yīng)于車道線特征的聚類算法
利用Hough變換確定直線存在的大致區(qū)域,然后對每個區(qū)域內(nèi)的特征點集,利用改進的最小二乘法確定精確的直線參數(shù);
步驟5:車道線約束
步驟5-1、建立基于透視投影線性關(guān)系的車道線“位置-寬度”函數(shù)
根據(jù)透視投影的幾何關(guān)系和三角形相似原理,得:
Wi=(AiPi-di)×2
其中,
步驟5-2、消失點約束
在坐標系OXY中建立圖像中直線和消失點的關(guān)系,設(shè)當前幀的消失點坐標為V(vx,vy),L為候選車道線,過原點O作直線L的垂線,垂足的坐標為P(px,py),垂線長度為ρ,傾斜角為θ,根據(jù)圓的基本性質(zhì)可知,垂足P必定在以原點O和消失V為直徑的圓上,因此可以得到方程組:
顯然,消失點V是該方程組的一個解。構(gòu)造目標函數(shù)如下:
Δρ=|vx cosθi+vy sinθi-ρi|
其中,θi和ρi是待確定直線Li的參數(shù),
步驟5-3、幀間關(guān)聯(lián)約束
假設(shè)在當前幀中檢測到的車道線個數(shù)為m條,用集合L={L1,L2,Λ,Lm}表示;保存的歷史幀中檢測到的車道線數(shù)有n個,用集合E={E1,E2,Λ,En}表示;幀間關(guān)聯(lián)約束濾波器用K表示,令K={K1,K2,Λ,Kn}。
首先建立一個C=m×n的矩陣,矩陣C中的元素cij表示當前幀中的第i條直線Li和歷史幀中的第j條直線Ej間的距離Δdij,其中Δdij的計算公式為:
A,B分別代表的是直線Li、Ej的兩個端點。
然后在矩陣C中,統(tǒng)計第i行中Δdij<T的個數(shù)ei,若ei<1,說明當前車道線沒有與之相關(guān)聯(lián)的前幀車道線,因此將該條車道線作為全新的車道線,更新下一幀幀間關(guān)聯(lián)約束的歷史幀信息;若ei=1,則認為當前幀車道線Li和歷史幀車道線Ej在前后幀間是同一條車道線;當ei>1時,用向量Vi記錄當前幀第i行中滿足條件的車道線位置,即:
在Vi中統(tǒng)計非零元素所在的列j的所有元素Vj,得到Vj中最小的元素,即:
(Δdij)min=min{Vj}(Vj≠0)
當則得到當前幀車道線Li和歷史幀車道線Ej在前后幀間是同一條車道線。
步驟6、基于卡爾曼濾波算法進行多車道線實時跟蹤檢測。
作為優(yōu)選,步驟3具體為:利用車道線部分相比于周圍路面形成“波峰”的特性,提取道路圖像中車道線的特征,包括以下步驟:
步驟3-1、基于一階導(dǎo)數(shù)的局部“波峰”判別
對每個像素的左右一階導(dǎo)數(shù)定義如下:
其中,i表示像素的位置(2≤i≤Width-1)。
將滿足Dil>0&&Dir≤0的像素點定義為局部“波峰”,將滿足Dil≤0&&Dir>0的像素點定義為局部“波谷”;
步驟3-2多條件約束
條件一:動態(tài)閾值的設(shè)置
根據(jù)每行亮度的均值,動態(tài)選擇波峰相對亮度的判別閾值函數(shù),函數(shù)的表達式如下:
條件二:波峰寬度約束
波峰寬度為波峰兩側(cè)最近的波谷沿掃描線方向上的像素距離,有效波峰具有適中的寬度,即4<Wp<20,Wp為波峰p的寬度;
條件三:波谷亮度約束
gp>0.4×Gi,其中g(shù)p表示波谷p處的亮度,Gi為第i行的亮度均值的波谷對應(yīng)的波峰。
作為優(yōu)選,步驟4為:
設(shè)定直線所在大致區(qū)域的距離誤差限d、Hough變換的一系列參數(shù)以及均值誤差閾值ε,具體步驟如下:
4-1、在給定參數(shù)下,對車道線特征進行基于概率的Hough變換操作,獲取直線;
4-2、對每一個通過Hough變換檢測得到的直線,在所有的特征點集S中尋找距離直線不大于d的特征點,構(gòu)成集合E;
4-3、利用最小二乘法確定集合E的回歸直線參數(shù)k和b,以及均方誤差e;
4-4、對集合E中的任一特征點(xi,yi),所有滿足的kxi+b>yi的特征點構(gòu)成子集Epos,所有滿足的kxi+b<yi的特征點構(gòu)成子集Eneg;
4-5、在集合Epos和Eneg中,找出誤差最大的點和其中d(P)表示點P到回歸直線的距離;
4-6、移除點Pp和Pn,更新集合Epos、Eneg和E,重復(fù)步驟3,直至誤差e小于ε;
為了對這些直線進行聚類,判別這些直線的歸屬,引入了兩個相似性度量,即距離相似度和方向相似度,其中,P1(x1,y1)和P2(x2,y2)為直線L1的兩個端點,其傾斜角為θ1;P3(x3,y3)和P4(x4,y4)為直線L2的兩個端點,其傾斜角為θ2;連接點P2和P3間的直線傾斜角為θ,則:
dir=|θ1-θ|+|θ2-θ|
將距離和方向上具有近似一致性的直線聚類成一類,對屬于同一類的所有直線上的車道線特征點進行最小二乘直線擬合,得到獲選車道線。
本發(fā)明針對實際駕駛道路上有較為明顯的車道線標記,且這些標記具有較強幾何特征等特點,首先對道路圖像中的車道線特征進行提取,再采用車道模型對車道線進行匹配。為了提高算法的可靠性,獲得更加穩(wěn)定的車道線的檢測效果,本文采用了基于卡爾曼濾波的車道線跟蹤和預(yù)測方法以及視頻幀間關(guān)聯(lián)性約束,并提出了一種結(jié)合了概率Hough變換和改進最小二乘法兩種算法對候選車道線特征進行聚類的算法。同時,為了提高整個算法的實時性,在圖像預(yù)處理階段,采用降采樣的策略并對道路圖像進行灰度化處理;只在卡爾曼濾波跟蹤和預(yù)測的特定的自適應(yīng)動態(tài)ROI(region of interest)內(nèi)提取車道線特征,避免了對整幅道路圖像的操作而造成計算資源的大量浪費,同時也避免了對車道線特征的誤提取對最終檢測結(jié)果的誤導(dǎo)。算法采用動態(tài)閾值以削弱光照條件對檢測結(jié)果的影響,增強了算法的魯棒性和適用性。本發(fā)明中涉及的算法是基于道路圖像的透視圖中進行多車道線的檢測,不需要對攝像機的位置參數(shù)進行標定。
附圖說明:
圖1本發(fā)明的流程示意圖;
圖2車載相機安裝示意圖;
圖3波峰的局部放大圖;
圖4車道線“位置-寬度”示意圖;
圖5卡爾曼濾波流程圖。
具體實施方式
采用本發(fā)明的方法,給出一個非限定性的實例,結(jié)合圖1進一步對本發(fā)明的具體實施過程進行說明。本發(fā)明在智能車輛平臺、智能車測試場地進行實現(xiàn),為了保證駕駛智能汽車以及人員安全,所用平臺和場地均為智能駕駛技術(shù)專業(yè)實驗平臺和測試場地。所使用的一些通用技術(shù)如圖像采集、圖像變換等不在詳細敘述。
如圖1所示,本發(fā)明實施例提供一種基于透視圖的魯棒性多車道線檢測方法包括以下步驟:
步驟1:車載相機的安裝
將攝像機安裝在汽車前擋風玻璃的正下方中央位置,距離地面距離為1米,并且相機的光軸平行于車輛底盤的所在平面,朝向為車輛行駛的正前方,如圖2所示。
步驟2:圖像的預(yù)處理
為了便于對道路圖像進行處理,提高算法的實時性,本文采用經(jīng)典的灰度化方法,利用如下公式對圖像進行灰度化處理:
Gray=R*0.299+G*0.587+B*0.114
其中,R、G和B分別代表紅、綠和藍通道分量值,Gray表示轉(zhuǎn)換后的像素的灰度值。最后,對得到的灰度圖像進行中值濾波去噪處理。
步驟3:利用基于多條件約束的車道線特征濾波器對車道線特征進行提取
車道線部分相比于周圍路面具有更高的亮度,且變化幅度較大,形成一個“波峰”。本文利用這些特性,來提取道路圖像中車道線的特征,如圖3所示。
步驟3-1基于一階導(dǎo)數(shù)的局部“波峰”判別
對每個像素的左右一階導(dǎo)數(shù)定義如下:
其中,i表示像素的位置(2≤i≤Width-1),Dir表示當前像素的一階右導(dǎo)數(shù),Dil表示當前像素的一階左導(dǎo)數(shù),pi表示當前的像素值。
我們將滿足Dil>0&&Dir≤0的像素點定義為局部“波峰”,將滿足Dil≤0&&Dir>0的像素點定義為局部“波谷”。
同時由于像素之間的差異,在寬度較大的波峰上,亮度分布可能會存在細微的變化,在很近的范圍內(nèi)出現(xiàn)多個波峰的現(xiàn)象。對波峰進行局部放大不難發(fā)現(xiàn),由于圖像的模糊產(chǎn)生了雙峰、多峰等情況,因此對滿足條件的局部鄰近“波峰”進行合并是十分必要的。
步驟3-2多條件約束
條件一:動態(tài)閾值的設(shè)置
本文結(jié)合具體的實驗分析結(jié)果,設(shè)計了一個根據(jù)每行亮度的均值,動態(tài)選擇波峰相對亮度的判別閾值函數(shù),函數(shù)的表達式如下:
其中,Gi為當前第i行的所有像素的平均值。
條件二:波峰寬度約束
本文中的波峰寬度指的是波峰兩側(cè)最近的波谷沿掃描線方向上的像素距離。由于在圖像采集的過程中會產(chǎn)生噪聲(高斯噪聲和椒鹽噪聲),表現(xiàn)為有過于尖銳的波峰出現(xiàn);或是道路上出現(xiàn)高反光物體,例如出現(xiàn)路面積水等不可控因素,此時可能會有寬度較大的波峰出現(xiàn)。因此,有效波峰應(yīng)該具有適中的寬度(4<Wp<20,Wp為波峰p的寬度)。
條件三:波谷亮度約束
在實際的道路場景中,路面上常常會有由于行道樹形成的陰影存在,在陰影交界處,亮度上表現(xiàn)為“暗-亮-暗”的效果,此時可能造成車道線波峰特征的誤提取。
因此,波谷處的亮度值不能太低,本文中保留gp>0.4×Gi(其中g(shù)p表示波谷p處的亮度,Gi為第i行的亮度均值)的波谷對應(yīng)的波峰。
步驟4:適應(yīng)于車道線特征的聚類算法
考慮到Hough變換和最小二乘法的優(yōu)缺點,提出了一種結(jié)合兩種算法的直線檢測方法。首先,利用Hough變換確定直線存在的大致區(qū)域,然后對每個區(qū)域內(nèi)的特征點集,利用改進的最小二乘法確定精確的直線參數(shù)。
給定直線所在大致區(qū)域的距離誤差限d、Hough變換的一系列參數(shù)以及均值誤差閾值ε。算法的具體步驟如下:
1.在給定參數(shù)下,對車道線特征進行基于概率的Hough變換操作,獲取直線;
2.對每一個通過Hough變換檢測得到的直線,在所有的特征點集S中尋找距離直線不大于d的特征點,構(gòu)成集合E;
3.利用最小二乘法確定集合E的回歸直線參數(shù)k和b,以及均方誤差e;
4.對集合E中的任一特征點(xi,yi),所有滿足的kxi+b>yi的特征點構(gòu)成子集Epos,所有滿足的kxi+b<yi的特征點構(gòu)成子集Eneg;
5.在集合Epos和Eneg中,找出誤差最大的點和其中d(P)表示點P到回歸直線的距離;
移除點Pp和Pn,更新集合Epos、Eneg和E,重復(fù)步驟3,直至誤差e小于ε。
用以上算法可以屏蔽噪聲的影響,得到較為理想的直線。為了對這些直線進行聚類,判別這些直線的歸屬,本文引入了兩個相似性度量,即距離相似度和方向相似度。其中,P1(x1,y1)和P2(x2,y2)為直線L1的兩個端點,其傾斜角為θ1;P3(x3,y3)和P4(x4,y4)為直線L2的兩個端點,其傾斜角為θ2;連接點P2和P3間的直線傾斜角為θ,則:
dis=|(x3-x2)sinθ1-(y3-y2)cosθ1|
+|(x3-x2)sinθ2-(y3-y2)cosθ2|
dir=|θ1-θ|+|θ2-θ|
將距離和方向上具有近似一致性的直線聚類成一類,對屬于同一類的所有直線上的車道線特征點進行最小二乘直線擬合,得到獲選車道線。
步驟5:車道線約束
步驟5-1基于透視投影線性關(guān)系的車道線“位置-寬度”函數(shù)
通過車載相機采集到的道路圖像往往具有強烈的透視效果,具有“近小遠大”的特點,主要表現(xiàn)為車道線在圖像底部時顯得較寬,越往遠處車道線越窄,世界坐標系下具有平行結(jié)構(gòu)的道路線在遠處相交。
如圖4所示根據(jù)透視投影的幾何關(guān)系和三角形相似原理,易得:
Wi=(AiPi-di)×2
其中,Wi為在道路圖像中第i行的車道線寬度
步驟5-2消失點約束
建立坐標系OXY,O為圖像長的中點,在坐標系OXY中建立圖像中直線和消失點的關(guān)系。設(shè)當前幀的消失點坐標為V(vx,vy),L為候選車道線,過原點O作直線L的垂線,垂足的坐標為P(px,py),垂線長度為ρ,傾斜角為θ。根據(jù)圓的基本性質(zhì)可知,垂足P必定在以原點O和消失V為直徑的圓上,因此可以得到方程組:
顯然,消失點V是該方程組的一個解。構(gòu)造目標函數(shù)如下:
Δρ=|vx cosθi+vy sinθi-ρi|
θi和ρi是待確定直線Li的參數(shù),根據(jù)目標函數(shù)求得Δρ,當Δρ在一個很小的范圍內(nèi),說明對應(yīng)的直線為有效的車道線。消失點的性質(zhì)作為約束條件,提高了對車道線提取的準確率,尤其是對零散的干擾直線有很好的濾除作用。
步驟5-3幀間關(guān)聯(lián)約束
在實際采集系統(tǒng)以及大部分的智能車輛系統(tǒng)中,車載相機直接獲得的是視頻流信息,視頻流中的相鄰兩幀圖像間往往具有很大的冗余性。車輛運動在時間上和空間上都具有連續(xù)性,由于車載相機的采樣頻率快(100fps左右),在圖像幀的采樣周期內(nèi),車輛只是前進了一段很短的距離,道路場景的變化十分微小,表現(xiàn)為前后幀間的車道線位置變化緩慢,因此前一幀圖像為后一幀圖像提供了非常強的車道線位置信息。為了提高車道線識別算法的穩(wěn)定性和準確性,本文引入了幀間關(guān)聯(lián)性約束。
假設(shè)在當前幀中檢測到的車道線個數(shù)為m條,用集合L={L1,L2,Λ,Lm}表示;保存的歷史幀中檢測到的車道線數(shù)有n個,用集合E={E1,E2,Λ,En}表示;幀間關(guān)聯(lián)約束濾波器用K表示,令K={K1,K2,Λ,Kn}。
首先建立一個C=m×n的矩陣,矩陣C中的元素cij表示當前幀中的第i條直線Li和歷史幀中的第j條直線Ej間的距離Δdij,其中Δdij的計算公式為:
和分別表示當前幀中的第i條直線的兩端點的坐標,和分別表示歷史幀中的第j條直線的兩端點的坐標。
然后在矩陣C中,統(tǒng)計第i行中Δdij<T的個數(shù)ei,若ei<1,說明當前車道線沒有與之相關(guān)聯(lián)的前幀車道線,因此將該條車道線作為全新的車道線,更新下一幀幀間關(guān)聯(lián)約束的歷史幀信息;若ei=1,則認為當前幀車道線Li和歷史幀車道線Ej在前后幀間是同一條車道線;當ei>1時,用向量Vi記錄當前幀第i行中滿足條件的車道線位置,即:
在Vi中統(tǒng)計非零元素所在的列j的所有元素Vj,得到Vj中最小的元素,即:
(Δdij)min=min{Vj}(Vj≠0)
當則得到當前幀車道線Li和歷史幀車道線Ej在前后幀間是同一條車道線。
步驟6:基于卡爾曼濾波的多車道線實時跟蹤
卡爾曼濾波是由匈牙利數(shù)學家Kalman基于系統(tǒng)的能控性和能觀性,于上世紀60年代提出來的一種基于最小均方差預(yù)測的最優(yōu)線性遞歸濾波方法??柭鼮V波的基本思想是:以狀態(tài)方程和觀測方程為基礎(chǔ),運用遞歸方法來預(yù)測一個零均值白噪聲序列激勵下的線性動態(tài)系統(tǒng)的變化。其本質(zhì)是通過觀測值來重新構(gòu)建系統(tǒng)的狀態(tài)變化,以“預(yù)測-觀測-修正”的順序遞推,消除系統(tǒng)觀測值的隨機干擾,通過觀測值從被干擾的信號中恢復(fù)原始信號的本來特征。如圖5所示,卡爾曼濾波的詳細過程如下:
模塊一:先驗估計模塊
由于在道路圖像采集的過程中,相鄰幀之間的車道線位置變化緩慢,可近似認為是勻速變化,即vk=vk-1,由運動學公式:
sk=sk-1+Δt×vk-1
其中,sk-1表示第k-1時刻的位移,vk-1表示第k-1時刻的速度,Δt表示相鄰幀間的時間間隔,即車載相機的采樣頻率的倒數(shù),本文設(shè)定為15ms,此時卡爾曼濾波方程中的狀態(tài)向量可表示為:
x(k)和y(k)表示目標的中心點坐標,vx(k)和vy(k)分別表示目標早X軸、Y軸方向上的運動速度
狀態(tài)方程可表示為:
X(k|k-1)=A(k-1|k-1)*X(k-1|k-1)+ζk-1
其中,A(k-1|k-1)k-1時刻的狀態(tài)轉(zhuǎn)移矩陣,ζk-1表示系統(tǒng)噪聲,是均值為0的白噪聲序列,ζk-1∈(0,Qk),Qk為系統(tǒng)噪聲的方差,本文中將其作為常數(shù)處理,設(shè)
觀測方程:
Z(k)=Hk*X(k|k-1)+ηk
Z(k)表示k時刻的觀測向量,設(shè)其中xz(k)和yz(k)表示第k幀圖像中車道線的位置;Hk表示觀測矩陣,設(shè)ηk為觀測噪聲,ηk-1∈(0,Rk),Rk為觀測噪聲的方差,設(shè)其中,σx2和σy2為觀測噪聲的兩個分量方差,設(shè)σx2=σy2=1
誤差協(xié)方差預(yù)測方程:
P(k|k-1)=A(k-1|k-1)*X(k-1|k-1)*A(k-1|k-1)T+Qk-1
模塊二:后驗估計模塊:
卡爾曼增益:
A(k-1|k-1)為狀態(tài)轉(zhuǎn)移矩陣,設(shè)
狀態(tài)修正:
X(k|k)=X(k|k-1)+G(k)*[Z(k)-Hk*X(k|k-1)]
協(xié)方差修正:
P(k|k)=P(k|k-1)-G(k)*H*P(k|k-1)
狀態(tài)更新:
X(k-1|k-1)=X(k|k)
P(k-1|k-1)=P(k|k)。