李聰亮,宋煥生,穆勃辰,張文濤
長安大學 信息工程學院,西安 710064
近年來,隨著交通相機價位持續(xù)降低以及計算機視覺領域的迅速發(fā)展,在智慧交通系統(tǒng)(intelligent traffic system,ITS)中,交通相機愈發(fā)普及,相機標定的重要性不斷提高,其主流應用包括車速測量、車輛長寬高測量、車型識別、車流量監(jiān)控等[1-3]。由于交通相機所獲取的是二維圖像,不能直接求取三維空間中的物理交通參數(shù),因此需要建立二維坐標系到三維坐標系的映射關系,即相機標定。這是計算機視覺在交通領域應用的基礎和最重要的先決條件之一[4-5]。
目前我國ITS中的相機主要分為三種:不可變焦、不可旋轉相機,不可變焦、可旋轉相機,以及全方位可變焦(pan-tilt-zoom,PTZ)的云臺相機。隨著云臺相機的大范圍推廣,交通相機也逐步向云臺相機更新。由于云臺相機的可變焦、可旋轉的特性,使得現(xiàn)有單目相機標定方法暴露出兩個問題:傳統(tǒng)方法在部分旋轉角度下誤差劇烈增大;傳統(tǒng)方法在云臺相機旋轉過程中相機高度偏差較大。因此傳統(tǒng)標定算法優(yōu)化問題亟待解決。
現(xiàn)有的相機標定主要包含傳統(tǒng)的人工相機標定[6]和相機自標定方法[7]兩種。人工標定主要分為張氏標定法[8]和消失點標定法[9];相機自標定算法,一種是在張氏標定法基礎上衍生出來的PNP標定法,一種則是在消失點標定法上衍生出來的通過圖像處理,自動檢測所需先驗條件的相機標定算法??紤]到張氏標定法先驗條件在交通場景下難以實現(xiàn),因此本文采用消失點優(yōu)化方法。
針對交通場景的特殊性,很多學者提出了各種解決辦法:Kanhere等人[10]提出了基于一個消失點、兩個物理標識和兩個消失點、一個物理標識的辦法,其中消失點包括沿道路方向、垂直于道路方向和垂直于路平面三個,物理標識包括道路寬度、道路標線長度、相機高度等。該類方法靈活多變,具有較高的適應性,但是在一些特殊角度,如夾角比較小的情況下,誤差會急劇提高。Sochor等人[11]提出了一種基于車輛線框模型的標定方法,將Kanhere等人[10]提出的物理標識擴展到車輛本身的長寬高。該方法提高了原有算法的魯棒性,但是考慮到車輛三維線框獲取難度較高且精度較差,同時原有算法的特殊角度誤差大的問題并未解決,因此具有較大局限性。Zheng等人[12]提出了一種基于最小二乘約束的道路相機標定模型,該方法基于兩個消失點和一條消失線,通過最小二乘約束求取標定參數(shù),得到較好的標定結果。然而在實際交通場景中,第二個方向的消失點難以獲取,可適應場景較少,具有較大局限性。Bhardwaj等人[13]提出了基于深度學習的方法,采用DNN網絡學習車輛本身具有的關鍵點特征,并采用濾波和聚合算法求取相機的外參矩陣。該方法通過深度學習求解相機參數(shù),精度較高,但需已知相機內參,不適用于云臺相機。朱憶[14]提出了一種基于交通信息流分析的運動消失點獲取方式,該方法使用交通流求取消失點,應用場景廣泛,但并未解決標定算法中的誤差問題,并且考慮到交通流獲取消失點過程引起的誤差,導致其最終標定精度較差。
綜上所述,本文研究了國內外現(xiàn)有的交通場景標定方法后,發(fā)現(xiàn)主流標定方法均在Kanhere等人[10]方法上提高魯棒性或提高先驗條件的測量精度,對其方法本身存在的小角度誤差急劇增大和相機高度不穩(wěn)定問題并未解決。
在實驗過程中發(fā)現(xiàn),Kanhere等人[10]算法中相機高度和焦距呈現(xiàn)類反比例關系,這對于高度固定的交通相機顯然不適合。因此本文提出了一種金字塔迭代優(yōu)化方案,對基礎標定結果在沿道路方向和垂直于道路方向上進行迭代優(yōu)化,以求解精確、穩(wěn)定的相機焦距和高度,提高標定精度和穩(wěn)定性。
與當前主流交通場景下相機標定模型相同,本文將相機簡化為針孔模型[15],假定路面為水平面。參考Kanhere等人[10]的模型,圖1(a)為道路場景下相機標定模型的側視圖,圖1(b)為道路場景下相機標定模型的側視圖。為方便分析,設相機焦距為f,高度為h,道路寬度為w,偏航角為θ,俯仰角為φ,考慮到交通場景下相機不進行側傾[13],因此不予考慮。
本文標定模型中,共定義了3個坐標系:圖像坐標系(uv坐標)、相機坐標系(XcYcZc坐標)和世界坐標系(XwYwZw坐標)[16]。圖像坐標系原點在圖像左上點,u軸與行平行,v軸與列平行;相機坐標系Xc和Yc與圖像坐標系平行,Zc為相機光軸。世界坐標系以相機坐標系原點到路平面的垂直投影點為原點,垂直于道路方向為Xw,沿道路方向為Yw,原點正上方指向相機方向為Zw。假設圖像像素坐標系上某點坐標為p=[uv1],該點在世界坐標系下的對應點為x=[x y z1],比例因子[17]為α。圖像到世界坐標系的轉換關系為:為外參矩陣,R為旋轉矩
其中,K為內參矩陣陣,T為位移矩陣。
由標定模型可知:
式中,u0、v0為圖像中心,θ為偏航角,φ為俯仰角。
考慮到交通場景中相機高度無法準確獲得,求解第二個方向上的消失點誤差較大[18],本文采用基于VWL的標定模型[19]。下面進行詳細推導:
在VWL的模型中,假設沿道路方向上的消失點(u0,v0)、道路寬度w(單車道3.75 m)、道路虛線長度ls和虛線間隔ll(虛線長度為6 m,間隔為9 m),存在世界坐標系中道路平面上某點(x,y,0),與之對應的圖像坐標系中的點為(u,v),則:
由先驗條件得,消失點在世界坐標系中的位置為(-tanθ,1,0),代入式(3)、(4),得:
將上式轉換,得:
此時,建立關于u0、v0、φ、θ和f的關系式,在式(7)、(8)中共存在3個未知量,因此引入道路寬度w對應的真實距離為ww,圖像坐標系中沿道路方向兩點(u1,v1)和(u2,v2)之間的虛線距離,對應的真實長度為lw,利用虛線長度和道路寬度的坐標系映射關系,求得:
考慮到焦距f必為正值,故得到:
將f代入式(7)、(8),求解得到相機旋轉角φ、θ。利用相機模型,反算高度h得:
將f、φ、θ、h代入式(2),得到圖像坐標系到世界坐標系的映射關系。
傳統(tǒng)的VWL模型,在相機俯仰角和偏航角發(fā)生變動時,存在以下問題:(1)因采用單一道路寬度和標線長度,容易產生局部最優(yōu)問題;(2)相機高度h與相機焦距f成一種類反比例關系變換,但在旋轉過程中焦距不斷改變,而高度固定不變,因此不適用于云臺相機。因此在本文中,對原有算法進行以下改進:將高度h和焦距f均作為可變參數(shù)進行優(yōu)化,去除原有模型對焦距和高度的約束關系,并將固定不變的道路標線長度和車道寬度作為對比對象,采用迭代求取最小誤差的方法求解相機焦距和高度,提升了標定結果的準確性。
世界坐標系以國標作為參照,道路虛線長度為6 m、虛線間隔距離為9 m、單車道寬度為3.75 m。將其作為評判標準,采用枚舉試探的方式,求解準確的相機標定結果。詳細過程如下:
步驟1假定圖像坐標系下,靠近相機一側車道線上存在兩點(un1,vn1)、(un2,vn2),遠離相機一側的車道線上存在兩點(uf1,vf1)、(uf2,vf2);采用n條虛線(n為正整數(shù))對結果進行優(yōu)化,每條虛線端點的坐標為{(p2i-1x,p2i-1y),(p2i x,p2i y)|i=1,2,…,n}。根據映射關系,得到世界坐標系下的對應點坐標為(xn1,yn1)、(xn2,yn2)、(xf1,yf1)、(xf2,yf2),
步驟2采用道路標線長度作為沿道路方向的參照物,道路標線長為ls,道路標線間隔為ll,采用n條虛線對結果進行優(yōu)化。首先求取車道標線預測值{(pre_mark_xi,pre_mark_yi)|i=0,1,…,n},公式如下所示:
則沿道路方向上的誤差為:
步驟3采用道路寬度作為垂直于道路方向上的參照物,在世界坐標系中求取靠近相機一側和遠離相機一側車道線方程分別為anearx+bneary+cnear=0、afarx+bfary+cfar=0。利用式(12)求車道標線預測值{(pre_mark_xi,pre_mark_yi)|i=0,1,…,n},并對每個預測值的橫坐標與真實值橫坐標對比,同時將預測值的橫坐標分別加減單車道寬度w,求得靠近相機一側和遠離相機一側的預測車道線坐標分別為
步驟4求取預測車道線坐標點到真實車道直線方程的距離l_neari、l_fari,如下式所示:
則垂直于道路線方向上的誤差為:
步驟5設基礎標定結果為fst和hst,將f和h在[fst-fb,fst+fb]和[hst-hb,hst+hb]區(qū)間中進行枚舉試探,并設定兩個方向的誤差閾值為threx、threy,進行初步閾值過濾,得到f和h的集合M={(f0,h0),(f1,h1),(f2,h2),…}。
步驟6設垂直于道路方向上誤差εx的權重為weight,對集合M上的每個元素求取綜合誤差,誤差求解如下所示:
步驟7對集合M中每個元素求取綜合誤差的最小值εmin,其對應的焦距和高度即為最佳焦距fopt和最佳高度hopt。
本文算法對相機焦距和高度進行二次循環(huán)迭代,采用金字塔的迭代方式,二次循環(huán)為算法中的最高循環(huán)次數(shù),因此本文算法的時間復雜度為O(n2)。本文算法在執(zhí)行過程中,采用數(shù)組對數(shù)據進行存儲,并且使用了歸并排序對數(shù)據進行排序,因此本文算法的空間復雜度為O(n)。
對本文算法進行分組測試,其一為同一場景下,改變相機焦距和旋轉角,測試相機高度的穩(wěn)定性和誤差變化;其二為多個不同場景下,測試標定結果的橫向誤差εx、縱向誤差εy和綜合誤差ε;其三為算法時間消耗和內存消耗的對比。
根據國家標準,單車道寬度為3.75 m,道路虛線長度為6 m,道路虛線間隔為9 m,即:w=3.75 m,ls=6 m,ll=9 m,并取weight=0.5。
選取同一場景中的12個相同相機高度、不同角度的情況,采用傳統(tǒng)標定方法和本文方法進行標定,得到相機高度、沿道路方法誤差、垂直于道路方向誤差、綜合誤差對比。圖2為不同角度下標定結果對比,其中圖2(a)為其中3個角度下的原圖,圖2(b)為傳統(tǒng)標定結果,圖2(c)為本文迭代優(yōu)化結果,圖中紅色線條代表標定后的道路寬度,綠色線條代表標定后的道路標線長度。圖3為12個角度下的誤差對比,其中圖3(a)為沿道路方向45 m的累計誤差,圖3(b)為垂直于道路線方向37.5 m的累計誤差。垂直于道路方向和沿道路方向的誤差對比。圖4為同場景下綜合誤差和高度波動對比,其中圖4(a)為綜合誤差對比,圖4(b)為相機高度波動對比。
圖2 同場景標定結果對比Fig.2 Comparison of calibration results in same scene
圖3 同場景誤差對比Fig.3 Same scene error comparison
圖4 同場景綜合誤差和高度波動對比Fig.4 Comprehensive error and height fluctuation comparison
表1為12個同場景不同角度下,傳統(tǒng)標定方法與本文方法相機標定參數(shù)及綜合誤差對比結果,表2為同場景不同角度下的誤差的對比結果。表3為不同角度上的高度對比結果。
表1 同場景不同角度下標定優(yōu)化結果及誤差Table 1 Calibration optimization results and errors under different angles in same scene
表2 同場景不同角度下方法對比Table 2 Comparison of methods in same scene from different angles 單位:m
表3 同場景不同角度下高度對比Table 3 High contrast in different angles of same scene
選取12個完全不同的場景,采用傳統(tǒng)算法和本文算法進行相機標定,得到沿道路方向誤差、垂直于道路方向誤差和綜合誤差對比。圖5為其中3個不同場景下的標定結果對比,其中圖5(a)為其中3個不同場景原圖,圖5(b)為傳統(tǒng)標定方法誤差,圖5(c)為本文方法誤差,紅色線條代表標定后的道路寬度,綠色線條代表標定后的道路標線長度。圖6為12個不同場景下的誤差對比,其中圖6(a)~(c)分別為12個不同場景下沿道路方向、垂直于道路方向及綜合誤差對比。
圖5 不同場景標定結果對比Fig.5 Comparison of calibration results in different scene
圖6 不同場景誤差對比Fig.6 Different scene error comparison
表4為12個不同場景下的相機參數(shù)及綜合誤差對比。表5為兩種方法對不同場景進行標定時,沿道路方向、垂直于道路方向及綜合誤差的誤差對比。
表4 不同場景下標定優(yōu)化結果及誤差Table 4 Calibration optimization results and errors in different scenarios
表5 不同場景下方法對比Table 5 Comparison of methods in different scenarios單位:m
隨機選取12個場景,在Inter?CoreTMi7-6800K CPU@3.40 GHz和NVIDIAGeForce GTX 1080Ti上,使 用Kanhere等人[10]方法與本文方法測試,計算兩種方法的時間消耗和內存消耗。表6為兩種方法時間消耗對比,表7為內存消耗對比。本文方法的時間消耗和內存消耗明顯高于Kanhere等人[10]方法,但時間消耗低于1 s,內存消耗低于40 MB,考慮到相機標定算法在實際應用中,僅當相機啟動、相機角度或相機焦距改變時調用,因此多余時間消耗和內存消耗在實際應用幾乎沒有影響。
表6 時間消耗對比Table 6 Time consumption comparison
表7 內存消耗對比Table 7 Memory consumption comparison
與傳統(tǒng)單消失點算法對比,本文算法具有較高的精度和穩(wěn)定性,其中,相機高度誤差在2%左右,沿道路方向誤差低于2%,垂直于道路方向誤差低于0.5%,綜合誤差低于2%。同時本文算法雖增大了時間和內存消耗,但是工程應用中標定算法使用頻率較低,因此在實際應用中影響較小。
通過實驗驗證,在常見交通場景下,本文算法取得了較好的標定結果。本文貢獻主要有:(1)通過相機多角度旋轉進行標定,一方面通過投票求取相機高度的精確值,另一方面通過相機高度的波動情況來判斷標定算法的精度,進一步提高標定結果的穩(wěn)定性,為云臺相機下標定算法的精確度判斷提供了一種新的方式;(2)針對先驗條件不夠精確造成的誤差,在三維世界坐標系下,通過沿道路方向和垂直于道路方向上的實際距離進行約束降低誤差,提高了標定精度。
本文算法的最小標定條件為一個消失點、道路虛線長度以及道路寬度,其中交通場景下,實際道路虛線長度和道路寬度都為國標,消失點提取可通過車輛軌跡聚類提取,道路虛線和道路寬度則依賴于道路本身,且算法提取精度較人工標定精度較低。未來的工作主要從提高道路虛線和道路寬度的檢測精度,在交通場景下尋找更多標識物著手,擴大算法的應用場景,同時減少先驗條件不準確造成的誤差,提高標定精度。