張麗平 范 紅,2 王璐瑤 張宇涵
(1.東華大學(xué)信息科學(xué)與技術(shù)學(xué)院 上海 201620)(2.東華大學(xué)數(shù)字化紡織中心 上海 201620)
運(yùn)動(dòng)目標(biāo)檢測(cè)是計(jì)算機(jī)視覺領(lǐng)域一個(gè)重要的研究方向,運(yùn)動(dòng)目標(biāo)檢測(cè)就是將運(yùn)動(dòng)目標(biāo)從含有背景的圖像中分離出來[1]。高性能計(jì)算機(jī)的普及,髙質(zhì)量、廉價(jià)攝像頭的大范圍使用對(duì)智能視頻分析日益増長的需求,許多性能優(yōu)異的跟蹤算法不斷涌現(xiàn)[2~3]。如果僅僅依靠一種檢測(cè)算法,很難從復(fù)雜的自然圖像序列中完整地檢測(cè)出運(yùn)動(dòng)的目標(biāo)。較高的檢測(cè)精度和效率就顯得尤為重要,因此融合多種檢測(cè)方法的研究越來越受到重視。
在智能視頻監(jiān)控領(lǐng)域,傳統(tǒng)的運(yùn)動(dòng)目標(biāo)檢測(cè)方法主要有幀間差分法和背景差分法、光流法等[4]。光流法利用運(yùn)動(dòng)目標(biāo)隨時(shí)間變化的光流特性來建立光流約束方程進(jìn)行目標(biāo)檢測(cè),但計(jì)算復(fù)雜、抗噪性差,在實(shí)時(shí)監(jiān)控系統(tǒng)中的效果并不理想。幀間差分法通過視頻序列中兩個(gè)或三個(gè)相鄰幀進(jìn)行時(shí)間差分閾值化來提取目標(biāo),該算法計(jì)算量小,易于實(shí)現(xiàn),且對(duì)于動(dòng)態(tài)環(huán)境具有較強(qiáng)的適應(yīng)性。但當(dāng)目標(biāo)運(yùn)動(dòng)過快或者過慢時(shí),不能夠準(zhǔn)確檢測(cè)出目標(biāo),且對(duì)照明條件等的改變反應(yīng)不太靈敏[5]。背景差分法由于計(jì)算簡(jiǎn)易而得到廣泛的應(yīng)用,該方法可以獲取完整的目標(biāo)信息,但對(duì)背景的建模要求較高,當(dāng)光照等外界條件突變時(shí),會(huì)導(dǎo)致較大的檢測(cè)誤差[6~7]。如果僅僅依靠一種檢測(cè)算法,很難從復(fù)雜的自然圖像序列中完整地檢測(cè)出運(yùn)動(dòng)的目標(biāo)。較高的檢測(cè)精度和效率就顯得尤為重要,因此融合多種檢測(cè)方法的研究越來越受到重視。本文提出光流法和幀差法相結(jié)合的方法,適用于道路交通車流量檢測(cè),對(duì)于疏導(dǎo)以及改善交通壓力有一定的參考價(jià)值。
LK光流法是一種基于梯度的光流估算方式,其一開始是為了計(jì)算稠密光流所提出的,后來因?yàn)樗奶攸c(diǎn),所以在求稀疏光流的方案里,也可以看到有些人的大膽嘗試[8]。LK算法基于以下三個(gè)假設(shè):1)運(yùn)動(dòng)要求是小速度的運(yùn)動(dòng)或者在時(shí)間上連續(xù)。2)在臨近的地方發(fā)生的運(yùn)動(dòng)相似,空間保證符合一致性。3)亮度恒定[9]。
HS光流法是Horn和Schunck將二維速度場(chǎng)與灰度相關(guān)聯(lián),在假設(shè)物體上同一點(diǎn)的灰度在相鄰幀變化時(shí)不會(huì)發(fā)生改變并且在短時(shí)間內(nèi)像素點(diǎn)運(yùn)動(dòng)的距離很小的前提下,推導(dǎo)出了光流的基本約束方程式如式(1)所示[10~11]。

其中u和v分別是光流場(chǎng)中某點(diǎn)光流(x,y)在t時(shí)刻的水平速度分量和垂直速度分量。
HS需要多次反復(fù)的迭代運(yùn)算才能得到精確結(jié)果,由于時(shí)間條件限制,沒時(shí)間進(jìn)行那么多次迭代,這時(shí)候LK的優(yōu)勢(shì)就顯現(xiàn)出來了,在精度與計(jì)算速度方面,均優(yōu)于HS算法,且LK算法在靜態(tài)背景下的目標(biāo)跟蹤中能夠取得良好的效果。由于LK光流法基于三個(gè)前提條件,這三個(gè)條件也是該方法存在局限性的原因。尤其是第一個(gè)假設(shè):小速度的運(yùn)動(dòng)或者在時(shí)間上連續(xù)。當(dāng)運(yùn)動(dòng)目標(biāo)移動(dòng)速度過快的時(shí)候,較大的運(yùn)動(dòng)會(huì)將點(diǎn)移出攝像頭的小窗口,從而造成無法再找到這些點(diǎn)。
高斯金字塔是圖像金字塔的一種,它在下采樣之前,先使用高斯平滑濾波器對(duì)原圖像進(jìn)行平滑,故命名為高斯金字塔[12]。構(gòu)建圖像金字塔分兩步:第一步對(duì)圖像做高斯平滑;第二步向下采樣[13~14]。自下而上是逐層由粗到細(xì)的,原始圖像是第零層,越往上層,是下一層平滑后的下采樣,當(dāng)這個(gè)過程進(jìn)行到恰當(dāng)?shù)某潭葧r(shí),原來的大運(yùn)動(dòng)被打磨到符合光流約束條件的小運(yùn)動(dòng),以此促成第一個(gè)假設(shè)實(shí)現(xiàn),這樣接下來就可以順利進(jìn)行光流的計(jì)算,利用得到的圖像金字塔的最上面一層進(jìn)行光流計(jì)算,獲得到的光流數(shù)值銜接到相鄰下層金字塔,反復(fù)進(jìn)行這個(gè)操作直至零層。如式(2)所示。

其中:Gk(x,y)為第k層高斯金字塔圖像;G0為原始圖像作為高斯金字塔的低層,w(m,n)為窗口函數(shù)。高斯金字塔原理如圖1所示。

圖1 高斯金字塔原理圖
幀間差分法顧名思義就是為了得到運(yùn)動(dòng)目標(biāo)大致形狀,對(duì)視頻圖像序列里面相鄰兩幀相減。不正常物體移動(dòng)的情況發(fā)生在監(jiān)控場(chǎng)景里時(shí),幀與幀之間存在顯著差異,獲得幀間的亮度差的絕對(duì)值。圖像序列的逐幀差異等效于時(shí)域中圖像序列的高通濾除雜質(zhì)。根據(jù)差分后得到的圖像進(jìn)行分析來獲得運(yùn)動(dòng)目標(biāo)輪廓的方法,在很多場(chǎng)景下,它都能夠體現(xiàn)良好的適用性。幀差法的原理如圖2所示。

圖2 幀差法算法流程圖
幀差法算法實(shí)現(xiàn)容易,實(shí)時(shí)性能好,不易受光線因素干擾。無需獲取背景圖像,適應(yīng)性,檢測(cè)有效且穩(wěn)定,但是它也有一定局限性,那就是很多時(shí)候它不能較完整檢測(cè)出所有運(yùn)動(dòng)像素點(diǎn),運(yùn)動(dòng)目標(biāo)的移動(dòng)速度過于快速或過于緩慢,都會(huì)對(duì)檢測(cè)結(jié)果產(chǎn)生影響[15]。幀差法原理如式(3)所示。

其中:Ik+1(x,y),Ik(x,y)為相鄰兩幀圖像的灰度值,T是設(shè)定的閾值,若閾值選取過大,則會(huì)使檢測(cè)到的目標(biāo)不完整;若選取過小,則又會(huì)無法濾除混入的噪聲,影響最終的檢測(cè)效果。
圖像濾波一般是指消除噪聲。對(duì)于普通人來說,對(duì)自己的正?;顒?dòng),造成不能接受的苦惱的聲音,都可以視為噪聲。而這些噪聲我們都能切身感受到,而在本文中的噪聲,不僅僅局限于我們聽到或者看到的,因?yàn)樵趫D像處理的時(shí)候,很多噪聲我們單純憑借感官系統(tǒng)無法獲知,但是在處理過程中就會(huì)表現(xiàn)出來。專業(yè)分類一般把圖像噪聲分為高斯噪聲,脈沖噪聲等。噪聲往往不會(huì)單獨(dú)存在,大多數(shù)都與信號(hào)糾纏在一起。如果濾波不好,那圖像本身比較細(xì)節(jié)的地方就會(huì)模糊不清[16]。
中值濾波是一種比較常見的非線性信號(hào)處理技術(shù),它以排序理論為基礎(chǔ),能夠有效地抑制噪聲。它主要是排序領(lǐng)域中的像素,接下來再選擇排序后的數(shù)據(jù)中的中間值作為最終輸出的像素值[17]。其基本原理為:首先針對(duì)以一個(gè)像素為中心點(diǎn)的具體領(lǐng)域進(jìn)行研究,領(lǐng)域也被稱為窗口,可以是方形,十字形,圓形或其他類似的形狀,然后對(duì)領(lǐng)域中的每個(gè)像素值按照灰度值的大小進(jìn)行排序,最后再將這組數(shù)的中值作為中心點(diǎn)像素灰度的真值進(jìn)行輸出。序列中值的具體定義如下:若為一組序列xi1≤xi2≤xi3… ≤xin,先把這組序列按大小排序,則該序列的中值y如式(4)所示。

LK光流法的實(shí)際跟蹤結(jié)果不理想的原因是:大的跟蹤窗口才能追尋大運(yùn)動(dòng),而大窗口往往與第一個(gè)假設(shè)條件背道而馳。在物體移動(dòng)速度較快的情況下容易丟失目標(biāo),所以使用圖像金字塔對(duì)圖像進(jìn)行縮小處理,使得光流法原來對(duì)應(yīng)的一個(gè)像素點(diǎn)變成更多,就更容易找到下一幀的目標(biāo)位置了。首先在較大空間進(jìn)行跟蹤,然后用圖像金字塔自上而下進(jìn)行處理工作,以此使一開始的運(yùn)動(dòng)速度滿足要求,這樣才能得到較為準(zhǔn)確的光流估計(jì)。本文將LK高斯金字塔光流法結(jié)合幀差法,算法實(shí)現(xiàn)容易,實(shí)時(shí)性能好,不易受光線因素干擾的優(yōu)點(diǎn),克服了傳統(tǒng)光流法計(jì)算量大,耗時(shí)長,實(shí)時(shí)性差,會(huì)把變化的光線錯(cuò)誤地識(shí)別為光流,對(duì)光線敏感的問題。
將從攝像頭獲取的監(jiān)控視頻載入,逐幀檢測(cè),利用幀差法獲得差圖像,然后從視頻里提取光流數(shù)據(jù)。為了減少后面的工作量,先將光流數(shù)據(jù)先灰度化,然后進(jìn)行二值化處理,從而獲得前景圖像。在前景圖像里面進(jìn)行一系列后續(xù)處理,包括尋找連通區(qū)域,運(yùn)用基本形態(tài)學(xué)操作進(jìn)行濾波,然后統(tǒng)計(jì)車輛數(shù)量。實(shí)驗(yàn)流程如圖3所示。

圖3 實(shí)驗(yàn)流程圖
選取兩個(gè)不同格式的道路車輛監(jiān)控視頻作為樣本視頻,然后設(shè)置好車輛閾值為0.0015,車輛閾值是可以動(dòng)態(tài)修改的,其設(shè)定要根據(jù)具體場(chǎng)景,運(yùn)動(dòng)目標(biāo)與背景的顏色差度來選擇。這種方法的優(yōu)點(diǎn)是可以根據(jù)需要靈活調(diào)整閾值,反復(fù)更改閾值,以期達(dá)到較為準(zhǔn)確的實(shí)驗(yàn)結(jié)果。實(shí)驗(yàn)結(jié)果如圖4所示。

圖4 光流檢測(cè)實(shí)驗(yàn)結(jié)果一
該檢測(cè)視頻格式是avi,由MFC界面右下角的播放進(jìn)度,可以看出該視頻有374幀,當(dāng)前圖像停留在第121幀,左上角的光流圖像中的箭頭為光流場(chǎng)向量。播放控制界面可以控制檢測(cè)的繼續(xù)暫停,檢測(cè)結(jié)果可以準(zhǔn)確顯示當(dāng)前畫面的運(yùn)動(dòng)車輛數(shù)目。

圖5 光流檢測(cè)實(shí)驗(yàn)結(jié)果二
該檢測(cè)視頻格式是mp4,由MFC界面右下角的播放進(jìn)度,可以看出該視頻有304幀,當(dāng)前圖像停留在第122幀,左上角的光流圖像中的箭頭為光流場(chǎng)向量。播放控制界面可以控制檢測(cè)的繼續(xù)暫停,檢測(cè)結(jié)果可以準(zhǔn)確顯示當(dāng)前畫面的運(yùn)動(dòng)車輛數(shù)目。

圖6 不同車輛閾值檢測(cè)結(jié)果對(duì)比圖
由上圖6可知:當(dāng)車輛閾值為0.01時(shí),體型較小車輛會(huì)被誤認(rèn)為雜質(zhì)點(diǎn),從而降低了檢測(cè)準(zhǔn)確率。當(dāng)車輛閾值為0.001時(shí),雜質(zhì)會(huì)被誤認(rèn)為運(yùn)動(dòng)目標(biāo)。由此可知:車輛閾值的選取會(huì)嚴(yán)重影響檢測(cè)準(zhǔn)確率。所以人工誤差不可避免,這也是后續(xù)可以改進(jìn)的地方。由實(shí)驗(yàn)結(jié)果可以看到,車輛閾值為0.0015時(shí),該程序可以準(zhǔn)確檢測(cè)畫面里的車輛數(shù)目,而且濾除掉了一些雜點(diǎn),也就是車輛閾值小于0.0015的點(diǎn),達(dá)到了預(yù)期目標(biāo)。

表1 不同車輛閾值檢測(cè)結(jié)果對(duì)比
本文利用VS平臺(tái)的開發(fā)環(huán)境和c++語言,采用LK高斯金字塔光流法與幀差法結(jié)合的方法,進(jìn)行運(yùn)動(dòng)目標(biāo)的提取。本文將光流法的優(yōu)勢(shì)與幀差法程序設(shè)計(jì)簡(jiǎn)單的特點(diǎn)融合,且充分利用了LK高斯金字塔在精度與速度方面的優(yōu)勢(shì)特點(diǎn)和中值濾波優(yōu)良的性能。后續(xù)可以在閾值選取方面,進(jìn)行精細(xì)化閾值選取,以求獲得更好的實(shí)驗(yàn)效果。通過對(duì)運(yùn)動(dòng)車輛的識(shí)別,可進(jìn)一步統(tǒng)計(jì)出指定路段車輛的速度以及數(shù)量,有利于預(yù)報(bào)路況,對(duì)道路交通的疏導(dǎo)和公共秩序的維持具有一定的參考意義。