程 騰,蔣亞西,吳勃夫,王靜靜,朱西漢,杜卿宇
(合肥工業大學汽車與交通工程學院,合肥 230009)
據統計,我國所有高速公路交通事故中,34.29%為追尾碰撞[1-3]。由于駕駛員注意力不集中導致的大量追尾事故已被認定為汽車主要的安全問題。因此準確的預警對減少交通事故起到了重要作用。
精確的車輛跟蹤與碰撞的預警密切相關,不精確的跟蹤一方面會產生報警不及時,無法有效避免交通事故,另一方面會產生誤報,降低駕駛員的駕駛舒適性。傳統的 meanshift跟蹤算法簡單,魯棒性好,但在跟蹤過程中由于窗口寬度大小保持不變,當背景復雜,目標尺度變化時,跟蹤就會失敗,無法實現后續的計算[4-5];CMT[6]算法是一種基于特征點的跟蹤方法,使用了經典的光流法,可跟蹤任何場景下任何物體,且跟蹤框能隨目標尺度的變化而變化。但在實際應用時,該算法耗時較長,在遠距離跟蹤時跟蹤不準確,無法有效實現遠距離車輛碰撞預警,同時計算目標尺寸縮放時選取的是所有特征點計算結果的中值為縮放值,存在一定誤差。
為解決上述問題,本文中提出一種基于數字圖像相關(DIC)的高精度車輛跟蹤算法,以檢測到的車輛為跟蹤目標,在目標區域周圍進行亞像素級別的搜索匹配并不斷更新跟蹤框大小,在保證算法實時性的同時提高了車輛跟蹤的精度,實現更為準確的預警,以提高駕駛安全性。
數字圖像相關方法(DIC)[7]于20世紀80年代被提出來,作為一種基于數字圖像處理和高精度數值計算的先進光學測量技術,已在工業上得到廣泛應用[8]。數字圖像相關方法處理的是變形前后物體表面的數字圖像,通常變形前后的圖像分別稱為“參考圖像”和“變形后圖像”,其基本原理如圖1所示。在參考圖像f(x,y)中選取以待求點(xc,yc)為中心、大小為(2M+1)×(2M+1)的區域為參考圖像子區,通過一定的搜索方法按照預先定義的相關函數進行計算,尋找與參考圖像子區的相關系數為最大值或最小值的、以(xc′,yc′)為中心的目標圖像子區,從而確定參考圖像子區中心點的x和y方向的位移分量[9-11]。

圖1 變形前后圖像子區示意圖
文獻[12]中顯示,零均值歸一化最小平方距離函數(ZNSSD)相關函數與常用的零均值歸一化互相關(ZNCC)函數等價,但ZNSSD相關函數對于目標圖像子區灰度的線性變化不敏感,抗干擾能力強,因此本文中使用ZNSSD相關函數作為評價變形前后的圖像子區相似程度的相關函數。

式中:f(x,y),g(x,y)分別為參考圖像和目標圖像子區中對應點的灰度;fm,gm分別為參考圖像和目標圖像子區灰度平均值;p為待求變形參數矢量,即p=(u,ux,uy,v,vx,vy)。當變形前后圖像子區最為相似時,相關系數Cf,g(p)取最小值。
參考圖像子區變形后,中心位置和整個子區形狀都可能發生變化,而使用位移形函數[13-14]可表示這種變化。當僅考慮圖像目標子區僅發生剛體位移、拉伸、彎曲和剪切等變形時,可采用1階位移形函數[15-17]:


如圖2所示,w1和w2分別為前車距相機鏡頭D1和D2處時相機圖像中的車寬;o為相機光軸與成像平面的交點。基于小孔成像的原理[18],主車距前車的距離與圖像中車寬的關系為

式中:W為前車寬度;D為距前車距離;f為相機焦距;w為前車車寬在成像平面中的大小。
利用4對透視變換前后對應點的坐標,通過二維透視變換公式[19-20],即可得到透視變換矩陣。采用獲得的透視變換矩陣實現相機圖像向實際空間俯視圖圖像的轉換[21]。透視變換如下:


圖2 成像幾何示意圖


相機圖像中道路上某點(x0,y0)對應的實際前車距離為式中:ym為實際空間中縱向距離1m對應俯視圖中像素個數;Dhead為相機圖像底端在實際空間中對應的位置到車頭的距離。
本文中采用的視頻分辨率為752×480,實驗中計算的透視變換矩陣為

Dhead=1.8m,ym=10個像素,前車位于主車正前方,選取前車輪胎與地面接觸點連線的中點(x0,y0)計算車距。實際行駛過程中前車遠離主車時x0變化較小,而y0值越來越小。實驗中某一幀對應的x0=434,y0=181,由式(7)可得距離 D11=105.671m,當前車繼續遠離本車,x0保持不變,y0變化一個像素即y0=180時,帶入式(7)可得 D22=114.402m。由此可見前車距本車較遠時,圖像中單位像素的變化對應實際距離較大,若仍采用像素級計算前車距離會產生較大誤差,因此在圖像分辨率確定條件下必須采用亞像素級精度計算。

對式(4)求導可得式中:w′為單位時間車寬像素變化個數,像素/s;vr為相對速度,m/s;T為預碰撞時間,s。
對式(8)兩端同時除以幀率fps可得連續兩幀之間圖像中車寬像素變化個數p,即

由式(9)可以看出,p與D,T,fps成反比,與f,W成正比,當相機完成標定后,f為定值,同時fps和W也為定值。當要求的碰撞預警時間固定時,預警距離越大,相鄰兩幀之間車寬像素變化個數越少。同理預警距離固定時,要求的碰撞預警時間越長,車寬像素變化個數也越少,實際的預警可通過跟蹤框寬度的變化來實現。
將式(7)代入式(9)可得

同時,利用跟蹤框的縮放[18],可計算相對速度。

將式(7)代入式(12)可得

式中ε為相鄰兩幀之間車寬變化率,通過DIC方法可直接輸出得到。通過式(13)可計算兩車的相對速度。
本文中f=750個像素,W=1.68m,fps=20幀/s,在第1.2節空間距離計算中可知,x0=434,y0=181時,D11=105.671m,若要實現在距離D11處滿足預警時間T=3s,代入式(10)可得p=0.199個像素,即連續兩幀相機圖像中車寬變化|w2-w1|為0.199個像素,像素級精度已不能滿足精度要求,同時由式(10)知p與D有關,在距離分析中,像素級精度在距離計算上也會產生較大誤差,這樣進一步增加了p計算的不準確度。
從式(13)可知,相對速度的計算與距離、跟蹤框的縮放和視頻幀率有關,要獲得精準的相對速度計算,必須滿足高精度的距離和跟蹤框縮放的計算。通過上述分析可知,在典型的相機分辨率下,像素級精度已不能滿足要求。因此,提出一種基于DIC的高精度車輛跟蹤算法,由式(2)可得

DIC方法中Δx′可滿足0.001個像素的精度,不論是在距離還是車寬縮放計算上都能很好地滿足遠距離時前車的準確跟蹤計算。
本實驗采用主頻3.4GHz CPU,內存8G的計算機為硬件平臺,Windows7操作系統為軟件平臺,編譯環境采用VS2012配置opencv2.4.9,視頻分辨率為752×480,幀率為20幀/s。實驗中使用Adaboost+Haar特征檢測算法進行車輛檢測,以檢測到的車輛作為初始跟蹤區域,檢測結果為正方形區域。為提高車輛跟蹤的精度,同時降低耗時,本文中提出的跟蹤算法如下。
首先,考慮到檢測的車輛區域邊界部分包含的背景較多,以檢測到的車輛區域的中心為中心,邊長為原邊長的0.8倍作為最終的車輛區域。其次將截取后的車輛區域縮放到23×23大小,采用同樣的縮放比例對原圖進行縮放。之后以縮放后的車輛區域為圖像參考子區,以參考圖像子區中心點為中心,在縮放后的原圖中選取35×35大小為感興趣區域,在該區域內采用DIC的方法進行亞像素級別的搜索匹配,尋找目標圖像子區,當ZNSSD大于或等于設定的閾值時表示跟蹤成功,當小于閾值時則表示跟蹤失敗,本文中設定的閾值為0.88。實驗證明該閾值能達到很好的跟蹤效果。隨后在滿足跟蹤條件下,采用DIC方法的同時得出目標圖像子區在x和y方向的縮放大小。經過大量實驗證明,x方向的縮放更符合實際情況,因此使用x方向的縮放作為車輛跟蹤框的最終縮放值。根據最終輸出的ε值,利用式(13)可實現相對速度的計算。
實驗設置為前方車輛在距本車10m處以30km/h的相對車速遠離本車,分別采用本文的算法與CMT算法進行跟蹤,統計圖像中跟蹤框寬度、中心點位置變化以及跟蹤耗時。如圖3所示,圖3(a)和圖3(b)分別為采用基于DIC的跟蹤算法和采用CMT算法在視頻中第22,78,98幀的跟蹤效果圖。從圖中可以看出,基于DIC的跟蹤算法能夠實現遠距離高精度跟蹤,而CMT算法進行跟蹤時在遠距離處無法準確跟蹤。

圖3 基于DIC的跟蹤算法與CMT算法第22,78,98幀實時跟蹤對比
圖4為本文提出的基于DIC的跟蹤算法與CMT算法在跟蹤框寬度w和跟蹤框中心點y坐標的比較。其中圖4(a)為跟蹤框寬度w隨幀數變化的比較,圖4(b)為跟蹤框中心點y坐標隨幀數變化的比較。從圖中可以看出,在第37幀到第47幀期間由于路面不平導致主車輕微振動,基于DIC的跟蹤算法受其影響較小,跟蹤框尺度縮放平穩,而CMT算法在跟蹤過程中受其影響較大,同時從第89幀到第99幀可以看出,基于DIC的跟蹤算法能進行精確的遠距離跟蹤,跟蹤框寬度隨著前方車輛的遠離不斷減小,而CMT算法在遠距離處未能有效實現準確跟蹤。圖5為基于DIC的跟蹤算法與CMT算法在跟蹤耗時上的對比。圖中顯示在耗時方面基于DIC的跟蹤算法明顯優于CMT算法,同時CMT算法的耗時受特征點的影響,特征點越多,耗時越長。綜合分析本研究算法在跟蹤精度與耗時方面均優于CMT算法,而跟蹤精度能很好滿足與前車碰撞報警的要求。

圖4 基于DIC的跟蹤算法與CMT算法跟蹤框寬度w與中心點y坐標對比

圖5 基于DIC的跟蹤算法與CMT算法跟蹤耗時對比
針對現有的車輛跟蹤算法跟蹤精度不高的問題,本文中提出一種基于DIC的高精度車輛跟蹤算法,跟蹤框的縮放可達到2%像素精度。實驗結果表明,該算法能很好地實現高精度車輛跟蹤,同時與CMT算法相比,大大降低跟蹤耗時,在保證精度的同時縮短了跟蹤時間,有助于低成本開發,降低對相機高分辨率的依賴,具有很好的應用價值。