一種基于視頻技術(shù)的車輛檢測(cè)和計(jì)數(shù)算法
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引言
隨著視頻監(jiān)控的普及,智能視頻監(jiān)控是當(dāng)前備受關(guān)注的前沿技術(shù),該技術(shù)主要利用計(jì)算機(jī)視覺和視頻分析的方法對(duì)視頻圖像序列進(jìn)行自動(dòng)分析,從而實(shí)現(xiàn)對(duì)動(dòng)態(tài)場(chǎng)景中目標(biāo)的定位、識(shí)別和跟蹤,分析判斷目標(biāo)行為,得出對(duì)圖像內(nèi)容含義的理解以及對(duì)客觀場(chǎng)景的解釋。在視頻監(jiān)控系統(tǒng)中,車輛的檢測(cè)在交通方面意義重大。同時(shí)隨著視頻車輛檢測(cè)技術(shù)的發(fā)展,人們已不滿足于僅僅檢測(cè)出車輛,在國外,FHWA(美國聯(lián)邦公路局)就進(jìn)一步利用此技術(shù)來提取交通參數(shù),如交通流量,十字路口的車輛轉(zhuǎn)向信息等。
對(duì)車輛的檢測(cè)和計(jì)數(shù),可以檢測(cè)交通路口的車流量,通過對(duì)車輛的檢測(cè)可以實(shí)現(xiàn)對(duì)車輛堵塞和車禍進(jìn)行報(bào)警等功能。
1 車輛檢測(cè)和計(jì)數(shù)系統(tǒng)的實(shí)現(xiàn)步驟
1.1 提取目標(biāo)物體
對(duì)車輛的檢測(cè),首先要把“車”的圖像從背景中提取出來。由于針對(duì)交通系統(tǒng)中的車輛,特別是交通路口的車輛,一般都是運(yùn)動(dòng)物體,因而可以運(yùn)用運(yùn)動(dòng)目標(biāo)檢測(cè)技術(shù),將車輛從靜止的背景中分離出來再進(jìn)行分析。視頻監(jiān)控中常見的運(yùn)動(dòng)目標(biāo)檢測(cè)算法主要有3類:光流法,鄰幀差法和減背景方法。光流法的優(yōu)點(diǎn)是對(duì)動(dòng)態(tài)環(huán)境有很好的適應(yīng)性,但復(fù)雜度高,抗噪性差,難以符合視覺監(jiān)視實(shí)時(shí)處理的要求;鄰幀差法雖然算法簡(jiǎn)單,易于實(shí)時(shí)監(jiān)控,但難以獲得精確目標(biāo),容易產(chǎn)生空洞;減背景技術(shù)是最為常用的,它把序列中的每幀與固定的靜止參考幀(如靜止的背景)做幀差,若像素的差值大于某一閾值,就判斷此像素物體為運(yùn)動(dòng)目標(biāo)上的。閾值操作后得到的結(jié)果直接將給出了目標(biāo)的位置、大小、形狀等信息。綜合分析,這里采用減背景法。
運(yùn)動(dòng)目標(biāo)檢測(cè)的視頻處理過程如圖1所示。
圖1運(yùn)動(dòng)目標(biāo)檢測(cè)的處理過程
1.2 常用檢測(cè)方法的原理及實(shí)現(xiàn)方法
1.2.1 背景差法
背景差法⑵首先選取背景中的一幅或幾幅圖像的平均作為背景圖像,然后把以后的序列圖像當(dāng)前幀和背景圖像相減,并進(jìn)行背景消去操作。若所得到的像素?cái)?shù)大于某一閾值,則判定被監(jiān)視場(chǎng)景中有運(yùn)動(dòng)物體,從而得到運(yùn)動(dòng)目標(biāo)。這種差分法對(duì)于復(fù)雜背景下的運(yùn)動(dòng)物體檢測(cè)效果較好,一般能夠提供最完整的特征數(shù)據(jù),而且計(jì)算量小,實(shí)用價(jià)值大。缺點(diǎn)是受光線、天氣等外界條件的影響較大。通??梢酝ㄟ^背景建模來進(jìn)行背景模型的動(dòng)態(tài)更新以實(shí)現(xiàn)背景圖像的建模和自適應(yīng)更新,以減少場(chǎng)景變化對(duì)視頻圖像檢測(cè)分割的影響。
背景差法的實(shí)現(xiàn)原理和實(shí)現(xiàn)方法如下:設(shè)在To時(shí)刻保存一幀圖像做為背景圖像保存為backimage,然后循環(huán)從視頻中取一幀圖像,設(shè)T;時(shí)刻取一幀圖像保存為temp臨時(shí)圖像,將backimage和temp
相減即得到差值圖像difference,再對(duì)difference進(jìn)行灰度變換、二值變換等處理,即可較好的分離出前景物體。也可以先將backimage和temp轉(zhuǎn)換成單通道灰度圖像再進(jìn)行相減,這樣把兩幅度的灰度值相減,如果backimage和temp完全一樣,則相減的值為0,即為一幅全黑的圖像;而兩幅圖相減后不為0的區(qū)域即為前景物體所在區(qū)域。其差分公式如下:
difference(x,y)=temp(x,y)一backimage(x,y)
在OpenCV中實(shí)現(xiàn)差分該功能的函數(shù)是:
cvAbsDiff(backimage,temp,difference)
1.2.2 二值化
一幅圖像包括目標(biāo)物體、背景還有噪聲,要想從多值的數(shù)字圖像中直接提取出目標(biāo)物體,最常用的方法就是設(shè)定一個(gè)閾值T,用T將圖像的數(shù)據(jù)分成兩部分:大于T的像素群和小于T的像素群。這是研究灰度變換的最特殊的方法,稱為圖像的二值化。把圖像轉(zhuǎn)換為只有黑白兩種顏色的圖像,會(huì)便于圖像的后期分析與處理,也易于觀察。
二值圖像的獲取可以通過下面方法得到:
1.2.3 形態(tài)學(xué)濾波法
在實(shí)際處理過程中,由于傳感器本身的光學(xué)特性以及傳輸線路的影響,可能會(huì)在每一幀圖像中產(chǎn)生一定的噪聲,從而給目標(biāo)檢測(cè)帶來困難。為提高目標(biāo)檢測(cè)的有效性和正確性,有必要對(duì)Bi(x,y)圖像進(jìn)行形態(tài)處理以消除噪聲。
其實(shí)現(xiàn)方法是對(duì)二值化后的圖像進(jìn)行膨脹、腐蝕等形態(tài)學(xué)濾波,這可以在OpenCV中由函數(shù)Smooth()和DilateO及ErodeO實(shí)現(xiàn),其中腐蝕Erode()和膨脹Dilate。對(duì)濾波的效果起主要作用。
1.2.4 背景建模方法
背景差法的原理很容易理解,但是,這樣的減背景很容易受光照等環(huán)境物體的影響,背景差法的研究主要集中在背景建模的研究上,即主要研究如何實(shí)現(xiàn)背景圖像的建模和自適應(yīng)更新m,使背景能夠不斷接近理想狀態(tài),以期減少場(chǎng)景變化對(duì)視頻圖像檢測(cè)的影響。目前的背景建模E方法主要有時(shí)間差分法(temporaldifference),中值濾波法(average\medianfiltering),W4方法、混合高斯法(mixtureofGauss)、隱馬爾科夫模型(hiddenMarkovmodels,HMM)等。
本設(shè)計(jì)中采用運(yùn)行期均值法來實(shí)現(xiàn)背景建模。運(yùn)行期均值法(runningaverage)是中值濾波法的改進(jìn)算法,其思想是通過引入學(xué)習(xí)率a來體現(xiàn)背景圖像對(duì)場(chǎng)景變化的響應(yīng)。a越低,則前景的變化越不會(huì)影響背景,a一般取0.05左右,可以根據(jù)反復(fù)實(shí)驗(yàn)調(diào)節(jié)a的大小,以找到最合適的a值。
設(shè)實(shí)時(shí)加權(quán)的圖像為movingAverage,則:
movingAverage(x,y)=(1—a)?movingAverage(x,y)+aimage(x,y)
上述公式中,右邊的movingAverage(x,y)和image(a:,y)均為前一時(shí)刻匸―i時(shí)背景圖像和當(dāng)前圖像的灰度值,公式左邊的movingAverage(x,y)為當(dāng)前時(shí)t1的背景圖像各像素的灰度值。用變換過后的movingAverage優(yōu)化temp,即可實(shí)現(xiàn)背景的建模,這樣可減少環(huán)境變化對(duì)背景差法的影響,提高背景差法的適應(yīng)性。
1.3 分析目標(biāo)物體
通過對(duì)視頻中運(yùn)動(dòng)車輛的提取,一般都可以得到提取的目標(biāo)物體(即車輛),接下來就可以對(duì)系統(tǒng)進(jìn)行車輛計(jì)數(shù)功能的設(shè)計(jì)。
算法中,通過函數(shù)cvFindContours()來實(shí)現(xiàn)在二值圖像中尋找輪廓,并用函數(shù)cvBoundingRect()獲得矩形框的數(shù)據(jù)。
可以通過對(duì)圖像中矩形框的數(shù)目的計(jì)算來對(duì)車輛的數(shù)目進(jìn)行計(jì)數(shù),但是該方法也存在以下幾個(gè)問題:
首先,對(duì)視頻的處理實(shí)際上是把視頻分成一幀一幀的圖像進(jìn)行處理,單純的根據(jù)矩形框的數(shù)目進(jìn)行車輛計(jì)數(shù)會(huì)造成車輛的重復(fù)計(jì)數(shù),因?yàn)橥惠v車會(huì)在幾幀甚至幾十幀圖像中出現(xiàn);
其次是對(duì)停止車輛的處理,若車輛駛?cè)氘嬅嫱A艘欢螘r(shí)間又繼續(xù)前進(jìn),那么,就必須要防止車輛的重復(fù)計(jì)數(shù);
第三是車輛重疊問題,由于二值圖像的缺陷,重疊的車輛會(huì)被同一個(gè)矩形框圈出,從而造成車輛的少計(jì)數(shù),因此,這里也需要通過算法對(duì)這個(gè)問題進(jìn)行處理和解決。
在算法中,可循環(huán)對(duì)每一個(gè)圈出的矩形框進(jìn)行處理。對(duì)一個(gè)矩形框,首先求取其中心點(diǎn)的值aryX,以及寬、高等基本數(shù)據(jù)。為了避免車輛的重復(fù)計(jì)數(shù),可利用邊界進(jìn)行計(jì)數(shù),并定義兩個(gè)邊界變量closetoleft和closetoright0操作時(shí)可首先根據(jù)aryX的值判斷車輛是否處于邊界,若處于邊界且未完全進(jìn)入畫面,則不斷更新邊界值,即令closetoleft(closetoright)=aryX,并根據(jù)上一幀圖像的邊界量closetoleft(closetoright)判斷車輛是否剛剛進(jìn)入畫面。若剛剛進(jìn)入畫面,則根據(jù)aryX和preX的比較來判斷車的行駛方向是進(jìn)入還是出去,并對(duì)于剛進(jìn)入的車輛進(jìn)行計(jì)數(shù),其余情況不計(jì)數(shù),這樣就可以避免重復(fù)計(jì)數(shù),這樣,即使車輛在畫面中停頓后又開始運(yùn)動(dòng)也不會(huì)重復(fù)計(jì)數(shù)。實(shí)現(xiàn)這一功能的算法流程圖如圖2所示。
在尋找輪廓過程中,由于二值圖像的缺陷會(huì)把重疊在一起的車輛算成是一個(gè)大的矩形框,因此,如果只在找到符合條件的矩形框后就令numcar自增1,則可能會(huì)造成車輛的誤測(cè),會(huì)少計(jì)算重疊的車輛。這里可以利用算法解決,因?yàn)樵趯?shí)際路況中,車的大小是有限的,如果程序框出的矩形框面積過大,則大部分原因可能是車輛重疊造成的,所以,當(dāng)矩形框面積過大時(shí),通常認(rèn)為是多輛車重疊的結(jié)果,設(shè)計(jì)時(shí)可以設(shè)定幾個(gè)門限面積值,然后根據(jù)矩形框面積的大小是否大于門限面積值來決定numcar自增幾次。門限面積值的設(shè)定可以通過反復(fù)的實(shí)驗(yàn)來確定,一個(gè)最合適的值可使誤差達(dá)到最小。實(shí)現(xiàn)該功能的流程圖如圖3所示。
圖3車輛計(jì)數(shù)流程圖
當(dāng)然也可以采用其他方法:可限定一個(gè)時(shí)間閾值T,檢測(cè)到某一目標(biāo)車輛在背景中停滯時(shí)間過久或者活動(dòng)太小以至于可以忽略,則可認(rèn)為該地點(diǎn)發(fā)生了交通堵塞或者車禍?zhǔn)录?,此時(shí)系統(tǒng)則應(yīng)發(fā)出報(bào)警。
2 車輛檢測(cè)技術(shù)與程序?qū)嶒?yàn)
本設(shè)計(jì)是基于OpenCV庫來進(jìn)行的,可在Windowsxp及Visualc++6.0的環(huán)境下運(yùn)行調(diào)試,本實(shí)驗(yàn)所采用的視頻序列是分辨率為352X240的AVI格式的彩色視頻流,其處理速度為24幀/s。
2.1 背景的獲取和更新
現(xiàn)舉例說明,圖4所示為開始提取的背景,圖5為有一輛車駛過時(shí)的背景。比較圖4和圖5可以看到,雖然有車橫穿場(chǎng)景,但是背景并沒有任何變化,這樣,就可使用運(yùn)行期均值法,在每一步都對(duì)背景進(jìn)行更新和均值運(yùn)算,從而避免誤差的累積,提高背景的適應(yīng)性。
2.2 形態(tài)學(xué)濾波
一般情況下,在視頻中提取運(yùn)動(dòng)物體,不可避免地會(huì)產(chǎn)生噪聲,對(duì)圖像進(jìn)行形態(tài)學(xué)濾波可以在一定程度上消除這種噪聲,提高目標(biāo)檢測(cè)的有效性和正確性。圖6所示為形態(tài)學(xué)濾波處理前后,車輛的提取效果。實(shí)際上,若不進(jìn)行形態(tài)學(xué)濾波,對(duì)運(yùn)動(dòng)物體的提取十分不準(zhǔn)確,因而可能無法進(jìn)行計(jì)數(shù)等后續(xù)處理。而形態(tài)學(xué)濾波后,則可以大大提高計(jì)算的準(zhǔn)確性。
圖7所示為視頻中只有一輛車駛過的情況,實(shí)驗(yàn)證明,若畫面中車輛一輛一輛地順序駛過而無重疊,其計(jì)算流量的準(zhǔn)確度可達(dá)99%以上,但是,在實(shí)際路況中,這種情況發(fā)生的概率非常小。而圖8所示為有兩輛車重疊時(shí)的車輛計(jì)數(shù),該情況下,本程序仍可以正確地計(jì)算出車輛的數(shù)目。
圖9中,車輛將要駛出邊界,這種情況下,程序仍然能將運(yùn)動(dòng)物體輪廓框出,但這個(gè)時(shí)候,矩形框的面積均與物體本身面積差距很大,如果此時(shí)仍然對(duì)矩形框進(jìn)行計(jì)數(shù),就會(huì)產(chǎn)生很大誤差,而本文的邊界計(jì)數(shù)法恰好可以避免這一誤判。
圖10所示是當(dāng)一段視頻分析完成后輸出計(jì)數(shù)結(jié)果。由于程序采用了邊緣計(jì)數(shù)法,所以,對(duì)視頻監(jiān)控的角度有一定要求,視角最好與車輛呈90°,角度條件越好,準(zhǔn)確度越高;反之,如果角度條件不好,則測(cè)試的準(zhǔn)確率可能也會(huì)下降。
需要說明的是,本系統(tǒng)僅適用于白天,即日光條件下對(duì)車輛的計(jì)數(shù)。而對(duì)于夜晚車輛的計(jì)數(shù),則可以采用數(shù)車燈的方式,對(duì)此,本文不做介紹。
3 結(jié)論
本文對(duì)基于視頻的車輛檢測(cè)技術(shù)算法的實(shí)現(xiàn)和實(shí)驗(yàn)結(jié)果進(jìn)行了介紹,通過分析邊界值,可以避免重復(fù)計(jì)算車輛。考慮到車輛重疊的情況,利用該算法進(jìn)行處理,可以減少車輛計(jì)數(shù)中的各種誤判?;究梢詫?shí)現(xiàn)交通路口車輛計(jì)數(shù)功能。
該算法的優(yōu)點(diǎn)有:
(1)該算法能自動(dòng)提取背景并自動(dòng)更新背景;
(2)在角度合適條件下,計(jì)算車流量的準(zhǔn)確度可達(dá)98%以上;
(3)實(shí)時(shí)性好,可同步處理視頻;
(4)對(duì)視頻噪聲有較強(qiáng)適應(yīng)性;
(5)可以長時(shí)間無故障運(yùn)行,并且操作簡(jiǎn)單。
事實(shí)上,該算法也存在一定的問題,需要進(jìn)一步的工作。
由于智能視頻監(jiān)控系統(tǒng)的實(shí)際應(yīng)用環(huán)境比較復(fù)雜多樣,如何使智能視頻監(jiān)控系統(tǒng)實(shí)現(xiàn)快速、高準(zhǔn)確性和高魯棒性的實(shí)時(shí)監(jiān)控,將是一個(gè)長期的研究課題,從目前來看,該算法還有很多問題需要進(jìn)一步的深入探索。
無論如何,該設(shè)計(jì)基本完成了車輛的檢測(cè)與計(jì)數(shù)功能,但是系統(tǒng)的魯棒性不高,對(duì)視頻的角度有要求,而且角度對(duì)系統(tǒng)的準(zhǔn)確度影響很大,此外,還有車輛重疊、車輛速度等因素影響系統(tǒng)的計(jì)數(shù)精度。為了提高該系統(tǒng)的準(zhǔn)確度和魯棒性,解決系統(tǒng)存在的問題,本文特為今后的工作提出以下幾種設(shè)想:
(1)對(duì)于車輛重疊問題,從模式識(shí)別角度可以釆用升維的方法來分開重疊車輛,如從正面和側(cè)面兩個(gè)角度聯(lián)合對(duì)車輛進(jìn)行檢測(cè)和計(jì)算,這樣可以使系統(tǒng)的魯棒性和準(zhǔn)確度增加,但同時(shí)也會(huì)增加該程序的復(fù)雜度和成本。
(2)加入角度判據(jù),可以預(yù)置攝像頭與汽車的角度,在對(duì)車輛的檢測(cè)中可通過角度的換算來增強(qiáng)系統(tǒng)的準(zhǔn)確性,減小角度的限制,但這種方法適應(yīng)性差,對(duì)本設(shè)計(jì)中釆用的矩形框計(jì)數(shù)法無法應(yīng)用,而且對(duì)該角度重疊車輛仍然無法分離。
(3)不采用二值圖像,直接運(yùn)用彩色圖像,通過車輛之間的色差區(qū)分車輛。如果色彩變化的邊緣頻譜密度大,還可利用一些圖像的特點(diǎn)分割目標(biāo)物體。當(dāng)然,也可以解決重疊車輛和角度問題,但是要充分考慮光照對(duì)色彩的影響。