技術領域:本發明涉及智能汽車技術,特別是一種汽車車道線檢測方法。
技術背景:
隨著社會進步、人們生活水平提高和交通工具的發展,全世界汽車數量急劇增長,同時,交通安全問題也成為了全球關注的熱點問題,高級駕駛輔助系統(adas)應運而生并得到了廣泛關注。adas是利用各類傳感器獲取車輛內、外的信息,并經過各種處理,最后通過報警讓駕駛者察覺可能將要發生的危險,以減少交通事故發生率。
現有的adas在實際使用過程中由于圖像識別處理的水平有限,所以對車道線的檢測經常出現問題,難以具備長時間長距離穩定運行的性能,限制了該類系統在特定環境下應用的可能性。
技術實現要素:
:
針對以上問題,本發明提供一種車道線檢測方法,實時對動態圖像進行處理,達到對車道線準確識別檢測的目的。
一種車道線檢測方法,包括:
一、獲取道路圖像:通過車載攝像頭捕捉道路圖像;
二、對圖像進行預處理:
包括彩色圖像灰度化、截取有效信息區域、濾波去噪、圖像灰度增強、邊緣檢測和修復車道線,其中修復車道線的處理步驟是先尋找需要的“短線段”,對每一個白點進行處理,若其在某個方向有連續的4個白點就判定這為一個“短線段”,找出所有的“短線段”,并記錄其方向;第二步,對每個短線段在其方向上尋找,如果在6個像素點內有著另一個和其方向相似的短線段,我們就認為這應是一條直線,把兩個短線段之間所有的像素點賦值為1,即把之間的黑色點變為白色點,從而達到連線的目的;對所有短線段進行處理,就能修復好斷續的車道線;
三、識別跟蹤車道線:
1、左右車道線的識別:
首先,降低檢測直線所需要的交匯點數量并且設置檢測直線段的最短值;
其次,當車輛在車道中行駛時,拍攝的道路圖像中左右車道線通常分布在圖像兩側,且兩條車道的斜率有一個范圍,通過分析計算大量道路圖像樣本,對極值點的極角和斜率依次進行約束,實際中約束的值根據攝像頭安裝位置進行改變;約束的極角范圍為-a1°<θ<a2°,即在此范圍內尋找直線,減少處理數據,對左車道線斜率的約束范圍是b1<k1<b2,右車道線斜率的約束范圍是b3<k2<b4,不在此范圍內的直線都從數組中刪去;
再次,將檢測出的線段從長到短排序,挑出前10條線段,總線段不足10條的挑出所有線段,然后將這些線段分成三類,第一類是斜率大于零并且斜率相近的直線,第二類是斜率小于零并且斜率相近的直線,第三類為其它所有直線,之后,按照長度越長權重越大、位置越靠下權重越大這兩個原則把第一類中的所有直線段擬合成右車道線,把第二類中的所有直線段擬合成左車道線,而第三類中的線段不予處理;
2、動態車道線檢測:
在相鄰兩幀圖像中,由于車輛行駛的距離很短,兩條車道線的位置不會出現太大偏差;實際算法中,把前一幀檢測到的車道線斜率、截距和兩車道線交點坐標進行保存,那么在下一幀中,車道線的角度與前一幀的角度應相差在3°以內,截距位置和前一幀的數據應相差在20個像素點內,根據這個就能知道下一幀中車道線的大致位置,從中尋找可以減少很多處理量,另外,相鄰兩幀兩條車道線交點的距離應在15個像素點內,通過這個條件,即可篩選出真正的車道線;
四、糾正車道線
將車道線透視圖像轉換成俯視圖像,逆透視變換通用的變換公式為
其中,[xyz]為原始拍攝圖像每個點坐標,[x'y'z']是進行逆透視變換后的圖像對應點的坐標,
將變換公式展開,得到
[x'y'z']=[a11x+a12y+a13za21x+a22y+a23za31x+a32y+a33z](4-2)
重寫變換公式得到
在(4-3)公式中,因為圖像是二維平面,所以z=1,令a33=1,此時有8個未知量,則只需已知變換前的4個點坐標和變換后的4個點坐標,共8個坐標就可以求取變換矩陣
在實際處理中,只變換每條車道線上的起點和終點,共四個點,然后將起點和終點連接起來,就能得到逆透視變換后的車道線;
五、車道偏移計算
1、角度偏移計算
假設左車道線的偏移角度為θ1,右車道線的偏移角度為θ2,車道線中心線偏移角度為θ0,兩車道線中心線與車道線的夾角為α,兩車道線中心線與x軸正方向的夾角為β,
消去角α,可得到車身偏移角度大小θ的計算公式為
式(5-1)中,θ角越大,車身偏移就越大,
圖像中車道中心線向右偏移,在實際中表現為車輛向左偏移了車道,因此車身偏移角度方向與β角有關,當0°<β<90°時,車身往左偏移了θ角度,當90°<β<180°時,車身往右偏移了θ角度;
2、距離偏移計算
假設實際中兩條車道線的距離為x,拍攝部分的車道線長度為y,在圖像中,兩條車道線的距離占用了u個像素點,車道線長度占用了v個像素點,則圖像坐標系中的u、v與俯視坐標系中的x、y有一定比例關系,假設x軸方向比例為λ,y軸方向比例為μ,有公式
假設車道線的下限與中心線偏移了d1個像素點,車道線上限與中心線偏移了d2個像素點;假設實際坐標系中車頭位置,即攝像頭位置偏移車道中心線的距離為d,車頭與下限位置距離為l0,
根據下限的偏移d1和角度偏移θ作出圖像坐標系中的關系圖,根據三角函數公式得到
根據公式(5-2),可知道
當l>l0時,根據相似三角形關系,偏移距離為
d=μd1-l0tanθ(5-5)
當l<l0時,根據相似三角形關系,偏移距離為
d=μd1-l0tanθ(5-6)
式(5-5)和(5-6)中,計算結果為正值則說明車輛往左邊偏移了一段距離,負值則說明往右偏移了一段距離。
本發明的車道線檢測方法有以下優點:一是適用性更好,能識別夜間、雨天和隧道中的車道線;二是算法簡單且耗時較短,能滿足實時性的要求;三是檢測誤差小,精度高。
附圖說明:
附圖1為本發明的流程示意圖。
附圖2a為車道線修復前的圖像。
附圖2b為車道線修復后的圖像。
附圖3a為原始圖像。
附圖3b為將圖3a經過逆透視變換得到的俯視圖。
附圖4a為車輛在實際道路中的情況示意圖。
附圖4b為將圖4a中車道線逆透視變換成俯視圖。
圖5為車道線偏移情況示意圖。
附圖6a為車道線下限的偏移d1和角度偏移θ作出圖像坐標系中的關系圖一。
附圖6b為車道線下限的偏移d1和角度偏移θ作出圖像坐標系中的關系圖二。
附圖6c為車道線下限的偏移d1和角度偏移θ作出圖像坐標系中的關系圖三。
具體實施方式:
下面結合實例和附圖對本發明實現方法和原理進一步說明。
一種車道線檢測方法,包括:
一、獲取道路圖像:通過車載攝像頭捕捉道路圖像;
二、對圖像進行預處理:
彩色圖像灰度化、截取有效信息區域、濾波去噪、圖像灰度增強、邊緣檢測和修復車道線,經過邊緣檢測后車道線的邊緣是斷斷續續的,不具有連續性,需要修復邊緣。處理步驟是先尋找我們需要的“短線段”,對每一個白點進行處理,若其在某個方向有連續的4個白點就判定這為一個“短線段”,找出所有的“短線段”,并記錄其方向。第二步,對每個短線段在其方向上尋找,如果在6個像素點內有著另一個和其方向相似的短線段,我們就認為這應是一條直線,把兩個短線段之間所有的像素點賦值為1,即把之間的黑色點變為白色點,從而達到連線的目的。對所有短線段進行處理,就能修復好斷續的車道線。
圖2a是道路圖像通過prewitt算子檢測出的邊緣,從圖中可以看出,經過邊緣檢測后的車道線是斷斷續續的,不具有連續性,這可能對后續識別車道線造成一定影響,所以我們需修復車道線。修復車道線的基本思想是判斷兩條線段之間的距離,當距離小于我們規定的值時,就把這兩條線段之間的點賦值為1,即把之間的黑色點變為白色點,從而達到連線的目的。修復后的圖像如圖2b所示,可以看出原來斷續的直線段被連接成完整的一條直線。
三、識別跟蹤車道線:
1、左右車道線的識別:
首先,降低檢測直線所需要的交匯點數量并且設置檢測直線段的最短值,這能讓檢測直線的容錯率增大,讓一些不是很直的直線被檢測出來,這有利于提高檢測虛線形式車道線的成功率。
其次,當車輛在車道中行駛時,拍攝的道路圖像中左右車道線通常分布在圖像兩側,且兩條車道的斜率有一個范圍。通過分析計算大量道路圖像樣本,對極值點的極角和斜率依次進行約束,實際中約束的值根據攝像頭安裝位置進行改變。本例子中,約束的極角范圍為-70°<θ<70°,即在此范圍內尋找直線,減少處理數據。對左車道線斜率的約束范圍是0.355<k1<0.73,右車道線斜率的約束范圍是k2<0.4516,不在此范圍內的直線都從數組中刪去,這樣處理能大大減少噪聲線段。
再次,將檢測出的線段從長到短排序,挑出前10條線段,總線段不足10條的挑出所有線段。然后將這些線段分成三類,第一類是斜率大于零并且斜率相近的直線,第二類是斜率小于零并且斜率相近的直線,第三類為其它所有直線。之后,我們按照長度越長權重越大、位置越靠下權重越大這兩個原則把第一類中的所有直線段擬合成右車道線,把第二類中的所有直線段擬合成左車道線,而第三類中的線段不予處理,因為這些大多是噪聲線段。
2、動態車道線檢測
在實際比較復雜的路況中,不是每時每刻都能檢測出左、右兩條車道線,也不是檢測出的車道線就是準確的,我們應再加一些約束條件。
在我們國家,攝像機拍攝的視頻一般為每秒25幀,采用pal制式,即每秒鐘拍攝25張圖片。在實時性要求非常高的adas中,一般是逐幀進行處理。那么每兩張圖片之間的間隔時間為0.04秒,即使假設車輛的行駛速度為120km/h,車輛也只能前行1.33米。因此,在相鄰兩幀圖像中,由于車輛行駛的距離很短,兩條車道線的位置不會出現太大偏差。實際算法中,我們把前一幀檢測到的車道線斜率、截距和兩車道線交點坐標進行保存,那么在下一幀中,車道線的角度與前一幀的角度應相差在3°以內,截距位置和前一幀的數據應相差在20個像素點內,根據這個我們就能知道下一幀中車道線的大致位置,從中尋找可以減少很多處理量。另外,相鄰兩幀兩條車道線交點的距離應在15個像素點內,通過這個條件,我們即可篩選出真正的車道線。因此,動態檢測使用更少的處理時間就能有更高的準確性。
四、糾正車道線
攝像機傾斜拍攝一個物體后,形成的圖像會發生變形,攝像機將實際三維場景投影到圖像的二維平面上,這個投影即稱為透視變換。實際情況中,攝像頭不一定安裝在中間位置,并且可能因為某些原因造成攝像頭左右偏移。車道線畸變的情況不利于我們后續計算車道偏移,所以我們將透視圖像轉換成俯視圖像,這個過程稱為逆透視變換。
將車道線透視圖像轉換成俯視圖像,逆透視變換通用的變換公式為
其中,[xyz]為原始拍攝圖像每個點坐標,[x'y'z']是進行逆透視變換后的圖像對應點的坐標,
將變換公式展開,得到
[x'y'z']=[a11x+a12y+a13za21x+a22y+a23za31x+a32y+a33z](4-2)
重寫變換公式得到
在(4-3)公式中,因為圖像是二維平面,所以z=1。令a33=1,此時有8個未知量,則只需已知變換前的4個點坐標和變換后的4個點坐標,共8個坐標就可以求取變換矩陣
圖3a中的四個白點坐標為原始圖像坐標,再加上我們想要的變換后的四個頂點坐標,就能通過公式(4-3)計算出變換矩陣。求出變換矩陣后,把原圖像中的每個像素點進行運算然后對應到新的位置。在新圖像中,可能有一些點沒有被原圖對應,即出現“空洞”的情況,我們可以使用最鄰近插值法,也可以用雙線性內插法或雙立方插值法將“空洞”補全。經過逆透視變換得到的俯視圖如圖3b所示,可以看出,逆透視變換后的圖像消除了變形的影響,恢復了俯視圖原貌。
五、車道偏移計算
1、角度偏移計算
假設圖4a中是車輛目前在道路中的情況,車輛偏移車道線的角度為θ。在理想情況中,我們將車道線逆透視變換成俯視圖,如圖4b所示,兩條車道線應是平行的,即左車道線斜率等于右車道線斜率。但是在實際情況中,汽車的顛簸抖動、公路的坡度會使兩條車道線不一定平行,此時我們利用兩條車道線的中心線來計算,以減少誤差。如圖5,假設左車道線的偏移角度為θ1,右車道線的偏移角度為θ2,車道線中心線偏移角度為θ0,兩車道線中心線與車道線的夾角為α,兩車道線中心線與x軸正方向的夾角為β,有
消去角α,可得到車身偏移角度大小θ的計算公式為
式(5-1)中,θ角越大,車身偏移就越大。
并根據攝像機的小孔成像原理,圖像中車道中心線向右偏移,在實際中表現為車輛向左偏移了車道,因此車身偏移角度方向與β角有關。當0°<β<90°時,車身往左偏移了θ角度,當90°<β<180°時,車身往右偏移了θ角度。
2、距離偏移計算
我們經過變換得到了俯視的車道線圖像,假設實際中兩條車道線的距離為x,拍攝部分的車道線長度為y,在圖像中,兩條車道線的距離占用了u個像素點,車道線長度占用了v個像素點。則圖像坐標系中的u、v與俯視坐標系中的x、y有一定比例關系,假設x軸方向比例為λ,y軸方向比例為μ,有公式
假設車道線的下限與中心線偏移了d1個像素點,車道線上限與中心線偏移了d2個像素點。假設實際坐標系中車頭位置(即攝像頭位置)偏移車道中心線的距離為d,車頭與下限位置距離為l0。
根據下限的偏移d1和角度偏移θ作出圖像坐標系中的關系圖,如圖6a,根據三角函數公式得到
根據公式(5-2),可知道
當l>l0時,如圖6b所示,根據相似三角形關系,偏移距離為
d=μd1-l0tanθ(5-5)
當l<l0時,如圖6c所示,根據相似三角形關系,偏移距離為
d=μd1-l0tanθ(5-6)
式(5-5)和(5-6)中,計算結果為正值則說明車輛往左邊偏移了一段距離,負值則說明往右偏移了一段距離。