盧 彬,陳 域,李冬生,朱 闖
(1.重慶郵電大學(xué)通信新技術(shù)應(yīng)用研究所,重慶400065;2.重慶信科設(shè)計有限公司,重慶400065)
在智能監(jiān)控系統(tǒng)中,經(jīng)過十幾年的發(fā)展,視頻測速技術(shù)上已經(jīng)相當(dāng)成熟,其與線圈檢測技術(shù)相比所具有的優(yōu)越性和高性價比己得到業(yè)內(nèi)人士的公認。實現(xiàn)視頻測速需要具體解決以下兩個問題:一是目標車輛的檢測和跟蹤,二是攝像機標定。在本文中,調(diào)用Intel公司開發(fā)的OpenCV(Intel Open Source Computer Vision Library)函數(shù)庫[1]所提供的團塊檢測模塊來實現(xiàn)目標車輛的檢測和跟蹤。該方法相較于傳統(tǒng)目標匹配方法,計算復(fù)雜度下降,準確度和魯棒性都有很大改善。另外,本文中利用高速公路施工規(guī)范,通過對公路上車道線特征點的提取獲得圖像中相關(guān)參數(shù)信息,最后得到圖像坐標與車輛空間坐標的對應(yīng)關(guān)系,實現(xiàn)攝像機自動標定,比傳統(tǒng)攝像機標定方法更加靈活快捷,節(jié)省了大量的時間與計算量。
OpenCV是由Intel公司資助開發(fā)的一套可免費使用的開源代碼庫。在本文中,OpenCV提供了一個運動目標檢測以及跟蹤的框架。當(dāng)逐幀傳入圖像,就可以檢測到視頻圖像中所有的車輛目標團塊。為了實現(xiàn)上述功能,可以將整個過程細分成幾個模塊實現(xiàn),如圖1所示。
整個框架中3個模塊最為重要:前景檢測模塊,該模塊的主要功能是將輸入的視頻圖像轉(zhuǎn)化為該圖像的前景掩碼;新團塊檢測模塊,輸入是前景檢測模塊的結(jié)果和已經(jīng)檢測并標定的團塊,輸出的結(jié)果是新檢測到的團塊;團塊跟蹤模塊,使用上一步所得到的結(jié)果對該模塊進行初始化,并跟蹤新進入的車輛[2-4]。
圖1 運動目標處理流程
常用的運動目標檢測算法有光流法、幀差法、背景差分算法等。本文采用的方法是將幀差法和背景差分法結(jié)合起來對運行駛車輛進行檢測。具體流程如圖2所示。
圖2 幀差法和背景差分相結(jié)合的運動目標檢測方法
通過對輸入的視頻幀分別用幀差法和背景差分法得到的運動區(qū)域,調(diào)用cvOr()函數(shù)進行異或處理。Bx(i,j)為區(qū)域合并后(i,j)點的像素值,若大于閾值T,則為前景目標像素?,F(xiàn)采用OTSU方法求取閾值,基本思想是:把圖像中的像素按灰度值用閾值T分成兩類C1和C2。C1由灰度值在[0,T]之間的像素組成,C2由灰度值在[T+1,L-1]之間的像素組成,按下式計算兩類之間的類間方差值
式中:w1(t)和w2(t)分別為C1和C2所含的像素數(shù);μ1(t)和μ2(t)分別為C1和C2所有像素的平均灰度值。讓T在[0,L-1]范圍依次取值,使σ2最大的T值即為OTSU法最佳閾值。再對經(jīng)過二值化的圖像進行形態(tài)學(xué)處理,從而得到準確完整的檢測目標。
在本文中,通過Kalman濾波器預(yù)測車輛行駛軌跡在當(dāng)前幀圖像中的大小和具體位置,完成前后幀的目標匹配。具體實現(xiàn)流程為:
1)從前景圖像提取所有團塊,即提取車輛目標外部輪廓。根據(jù)輪廓的最小外接矩形框得到團塊的高度和寬度,由式(2)計算團塊的質(zhì)心坐標,質(zhì)心用Ctr表示
2)由上一幀中團塊大小及位置初始化卡爾曼濾波器,預(yù)測出當(dāng)前幀的所檢測團塊的大小及位置。
3)通過檢測團塊的跟蹤軌跡,找到離上一幀的團塊最近的當(dāng)前幀里的團塊,由此更新卡爾曼濾波器狀態(tài)。最終將此團塊加入到跟蹤序列中并對新團塊賦唯一標號,即ID。
攝像機標定過程[6]中,將實際空間坐標p以及與其相對應(yīng)的圖像坐標P的轉(zhuǎn)換關(guān)系通過M矩陣進行表示
式中:p=(u,v,1)T,P=(X,Y,Z,1)T分別代表圖像點的齊次坐標以及空間點的齊次坐標。若取地平面為X-Y平面(Z=0)建立世界坐標系,則上式可變?yōu)?/p>
對式(4)進行變換,則可得到以下方程組
由上式方程組化簡得到
如果現(xiàn)在已經(jīng)采集到了公路上n個點的圖像坐標(ui,vi)(i=1,2,…,n)和其對應(yīng)的實際坐標 (Xi,Yi)(i=1,2,…,n),則能得到關(guān)于M 矩陣的2n個方程,如下所示
由式(5)可以知道M矩陣與任何不為零的常數(shù)相乘并不影響p矩陣與P矩陣的轉(zhuǎn)換關(guān)系。因此,式(7)中可以將m34的值定義為1,這樣,要想求解轉(zhuǎn)換矩陣M,則采集的公路上實際點坐標以及相對應(yīng)的圖像坐標點的個數(shù)至少需要4個,且其中任意3點不能共線。求出矩陣M,即完成攝像機標定,得到圖像坐標與車輛空間坐標之間的轉(zhuǎn)換關(guān)系[6-7],接著根據(jù)圖像平面坐標求得在實際空間中的坐標,再根據(jù)速度公式求得所檢測車輛的車速。
在實際應(yīng)用中,要想完成攝像機標定,采集到4組以及4組以上標定點的圖像坐標與車輛空間坐標是其中重中之重。如果采取傳統(tǒng)的手工標定來得到標定點,需要浪費大量時間,極不方便。為了能夠進行自動標定,本文根據(jù)《高速公路交通安全設(shè)施設(shè)計及施工技術(shù)規(guī)范JTJ074-94》中規(guī)定高速公路上分隔虛線寬15 cm、分割線長6 m、分割線橫向間距3.5m、縱向間距9m等特點,找到不共線的2條分割線、4個頂點的世界坐標,同時得到視頻中對應(yīng)的點坐標,進而計算出轉(zhuǎn)換矩陣。具體實現(xiàn)流程如下:
1)為了防止標定點被遮擋等意外情況出現(xiàn),通過提取檢測區(qū)域無車輛通過時的視頻幀圖像,獲得公路路面樣本。
2)統(tǒng)計路面樣本灰度、邊界點分布、RGB對灰度的偏差等特征,建立高斯模型,然后對圖像進行窗口濾波處理,獲取車道線區(qū)域。
3)進行Sobel邊緣檢測,增加近區(qū)域邊界點權(quán)重。然后通過Hough變換獲得候選車道線,接著再對其二次Hough變換縮小消失點范圍排除游離直線。
4)利用車道線長度、間距恒定的特點,提取相鄰車道線的4個端點作為標定點(如圖3所示),得到其圖像坐標。
圖3 車道線檢測(截圖)
本文選取一段公路車輛行駛視頻,隨機地對其中的車輛進行抽取以檢測其行駛速度。圖4中的2幅圖像是實驗中采集到的對同一輛車在車頭進入車道線以及離開車道線時的2幅圖像。圖中,左下角數(shù)字為當(dāng)前幀數(shù),圖中小圈為標定點。
圖4 同一輛車的圖像序列(截圖)
通過上文可知,白色分割線長為6 m,實驗使用的攝像機采集幀率25幀/秒(f/s)。根據(jù)幀數(shù)統(tǒng)計目標車經(jīng)過6 m用時為(130-119)/25 s=0.44 s,則汽車實際速度為6/0.44 ×3.6=49.09 km/h。第2 幅圖同時顯示了團塊檢測測量速度50.85 km/h,可以看出,測出的車輛速度與實際速度誤差不大。為了使測試結(jié)果不失一般性,實驗將連續(xù)隨機抽取視頻中的行駛車輛進行檢測,具體結(jié)果如表1所示。
表1 實驗結(jié)果
實驗數(shù)據(jù)表明,本文提出的測速方法檢測得到的車速存在一定誤差,經(jīng)分析,誤差是由于以下幾點原因造成的:1)OpenCV團塊檢測法判斷團塊需要很多幀才能確定團塊,所以測出的速度與實際速度并不是相同區(qū)間內(nèi)的速度,只能算大致相近;2)得到實際速度可能與真實速度有一定的誤差。因為計算實際速度要求是汽車經(jīng)過6 m所用的時間計算得到的,而計算中所用的幀數(shù)為整數(shù),代表的實際距離并不等于6 m,這也會造成一定的誤差。
本文提出一種基于視頻圖像的車速檢測方法。利用OpenCV函數(shù)庫提供的運動目標跟蹤框架來實現(xiàn)行駛車輛的定位與跟蹤,接著結(jié)合攝像機自動標定結(jié)果獲得車輛在檢測的兩幀圖像間行駛的距離,從而檢測出車輛的行駛速度。經(jīng)測試,該方法可以實現(xiàn)車速的實時檢測,而且檢測結(jié)果比較準確。
[1]劉瑞禎,于仕琪.OpenCV教程基礎(chǔ)篇[M].北京:北京航空航天大學(xué)出版社,2010:405-427.
[2]柳宗浦,趙曙光,潘翔鶴,等.一種融合Kalman預(yù)測和Mean-shift搜索的視頻運動目標跟蹤新方法[J].光電子技術(shù),2009,29(1):30-33.
[3]張浩鵬,王宗義,張智,等.全景攝像機標定[J].哈爾濱工程大學(xué)學(xué)報,2009,30(11):1239-1245.
[4]高浩軍,杜宇人.基于視頻序列圖像的車輛測速研究[J].電子測量技術(shù),2007,30(2):40-45.
[5]鮮海瀅,李曉峰,李在銘.基于攝像機的車輛測速儀[J].電子測量與儀器學(xué)報,2008,22(3):94-99.
[6]鄒鳳嬌.攝像機標定及相關(guān)技術(shù)研究[D].成都:四川大學(xué),2005.
[7]劉明.基于目標檢測與跟蹤的機動車視頻測速方法研究[D].南昌:南昌大學(xué),2007.