1.一種基于視覺的路口精定位方法,包含下述步驟:
步驟1:在車輛內(nèi)后視鏡正下方安裝單目攝像機,要求攝像機的光軸與車輛的中軸線重合;
步驟2:對攝像機進行逆透視變換標定,要求逆透視變換后的鳥瞰圖的實際視野范圍的橫軸寬度是1500cm,縱軸長度是2500cm;要求鳥瞰圖中每像素代表實際距離為k厘米,k是鳥瞰圖像的比例系數(shù),要求k=5;
步驟3-1:路口場景特征庫建立;
采集需要定位的路口的場景圖像,要求每個路口采集100到200幀圖像,要求連續(xù)兩幀圖像的前后實際間距小于30cm;采集圖像時的車速要求控制在10km/h至20km/h的低速范圍內(nèi);圖像采集完畢后,離線提取這些場景圖像的SURF特征,每一幅場景圖像生成一個SURF特征向量,并且標記其所對應(yīng)的路口編號,建立一個包含所有需要定位的路口場景特征庫;
步驟3-2:路口場景識別;
所述的路口場景識別是一個實時在線的過程;對攝像機采集的當前幀圖像進行SURF特征提取生成特征向量,將當前幀圖像的特征向量與路口場景特征庫中的所有特征向量進行相似度計算;對所有相似度值進行排序,當相似度最大的值大于0.5時則識別成功,當前所在路口編號為最大相似度場景圖像在路口場景特征庫中所對應(yīng)的路口編號,否則對下一幀圖像進行路口場景識別直到識別成功為止;所述的相似度范圍為[0,1];
步驟4-1:對攝像機采集的當前幀圖像進行逆透視變換得到與世界路面坐標系相一致的鳥瞰圖;
步驟4-2:停止線檢測;先對鳥瞰圖像進行灰度化處理,然后進行自適應(yīng)閾值處理得到二值化圖像,根據(jù)停止線線條的特征,采用Hough變換進行直線檢測,并計算每條直線與水平的夾角rho,單位為度,和長度length,單位是像素,由Hough直線變換可知直線的兩個端點P1(x1,y1)和P2(x2,y2),則水平的夾角rho和長度length的計算如下:
其中θ的范圍是[-90,90],為了便于計算,將其值進行變換,公式如下:
如果一旦有滿足0≤rho≤20或160≤rho≤180,并且50≤length≤100的直線則是停止線;
步驟4-3:停止線測距;所述步驟的輸出結(jié)果是車輛與停止線中心點的實際距離;先計算該停止線的中軸中心點坐標p(w/2,y),w是指鳥瞰圖像的寬,即該點在圖像的中軸線上,設(shè)停止線直線方程為y=ax+b,則有:
b=y(tǒng)1-ax1 (5)
其中,(x1,y1)和(x2,y2)是停止線的兩個端點,那么中心點p的y坐標值為:
y=(w/2-x1)a+y1 (6)
點A是攝像機畫面的最低端中心點PA(w/2,h),已知停止線中軸中心點p(w/2,y),聯(lián)合公式(4)(5)(6)則計算距離d:
其中,h是鳥瞰圖像的高,d是一個像素距離,需要轉(zhuǎn)換成真實的實際距離D;根據(jù)逆透視圖像的線性特征,即逆透視圖像中每一像素代表實際長度k厘米,則
其中,D是實際距離,單位cm,k是鳥瞰圖像的比例系數(shù),單位是厘米每像素;那么根據(jù)S=K+D模型計算出停止線與智能車實際距離S:
S=K+D=K+kd (9)
其中,K是車輛到圖像底端位置的實際距離,也稱作盲區(qū)距離,;步驟4-4:車道線檢測;所述步驟中的車道線檢測指的是路口的車道線檢測;
先對鳥瞰圖像進行灰度化處理,然后進行Canny算子邊緣檢測,再對邊緣圖像進行Hough直線變換檢測所有的直線,根據(jù)公式(1-3)計算每一條直線與水平的夾角rho和直線像素長度lenght;然后根據(jù)角度和長度的范圍過濾掉一些干擾直線,長度范圍為lenght>h/5,其中h是鳥瞰圖像的高,其角度范圍為45≤rho≤135;對滿足范圍條件的直線按照rho進行分組,rho相同的直線放在一組;然后對每一組內(nèi)的直線進行垂直距離計算,假設(shè)直線line1的兩個端點坐標分別是p1(x1,y1)和p1(x2,y2),直線line2的兩個端點坐標分別是p2(x3,y3)和p2(x4,y4),直線line1和line2相互平行,則直線line1和line2的垂直距離L計算公式如下:
其中,a為直線的斜率,有:
假設(shè)道路的車道寬度為LaneW,LaneW的單位是像素,通過車道寬度的真實距離除以比例系數(shù)k得到,計算以下公式:
當結(jié)果滿足0.9≤N≤1.1或者1.9≤N≤2.1或者2.9≤N≤3.1,那么直線line1和line2則是車道線;
步驟4-5:計算車輛偏移左車道線的距離;車輛與左車道線的橫向偏離距離Δd,相對圖像坐標系是橫向的,假設(shè)左側(cè)車道線與圖像下邊沿的交點P(x,h),則其計算公式如下:
Δd=k(w/2-x) (13)
步驟4-6:計算車輛航向角;車道線檢測完之后需要進行航向角θlane計算,航向角是車輛中軸線與車道線的最小夾角,因此0≤θlane≤90,其計算公式為:
步驟4-7:計算車輛的位置坐標(X,Y);所述的坐標點的坐標系原點為路口處停止線與車輛當前車道左側(cè)車道線交點,要求橫向是X軸,右側(cè)為正,要求縱向是Y軸,下方為正;
通過停止線檢測與測距得到了停止線與車輛的距離為S,以及視覺盲區(qū)距離為K;通過車道線檢測計算得到車輛的航向角θlane以及橫向偏離距離Δd;
其中位置坐標(X,Y)的X的計算公式如下:
X=Δd×cosθlane+K×sinθlane (15)
其中位置坐標(X,Y)的Y的計算公式如下:
Y=S×cosθlane (16)
根據(jù)公式(15-16)知車輛的位置坐標為(Δd·cosθlane+K·sinθlane,S·cosθlane);當航向角θlane=0時,車輛中軸線與車道線平行,其坐標為(Δd,S);
當停止線傾斜的情況,就需要改進車輛位置坐標計算公式,將停止線與水平的夾角θ考慮進去;
由于停止線的傾斜造成多了h′的縱向距離,h′的計算如下:
h′=(Δd·cosθlane+K·sinθlane+S·sinθlane)·tanθ (17)
那么縱向坐標Y的計算公式如下:
Y=S·cosθlane-h′ (18)。