馬慶祿,唐小垚
重慶交通大學(xué) 交通運(yùn)輸學(xué)院,重慶400074
隨著視頻處理技術(shù)與運(yùn)用在交通場(chǎng)景中的不斷發(fā)展與成熟,通過機(jī)器精準(zhǔn)識(shí)別交通場(chǎng)景中的交通流信息能夠?yàn)榻煌▋?yōu)化提供數(shù)據(jù)支撐。目前的研究成果主要聚集在某些特定場(chǎng)景的分割算法和檢測(cè)算法[1-4],在復(fù)雜的交通環(huán)境中具有不適應(yīng)性。因此,需要在現(xiàn)有研究基礎(chǔ)上進(jìn)一步提高交通量檢測(cè)的準(zhǔn)確率。
現(xiàn)有的分割算法主要有基于幀差法、Canny邊緣檢測(cè)法的圖像邊緣分割,通過幀差法和全局閾值[5]、局部閾值[6]的圖像閾值分割,基于分水嶺變換的區(qū)域分割算法。Gangodkar等提出利用全搜索絕對(duì)差和算法動(dòng)態(tài)自適應(yīng)閾值檢測(cè)和分割運(yùn)動(dòng)車輛的方法[7],該方法會(huì)因動(dòng)態(tài)場(chǎng)景中運(yùn)動(dòng)物體而受到干擾,相機(jī)的振動(dòng)和光照條件的變化也會(huì)對(duì)檢測(cè)造成影響。Lou等提出利用卡爾曼濾波器和貝葉斯概率準(zhǔn)則實(shí)現(xiàn)運(yùn)動(dòng)車輛的檢測(cè)與跟蹤[8],該算法具有高效性和實(shí)時(shí)性,但受陰影和光線等影響。Zhang等提出將貝葉斯框架來分類背景和車輛的高斯運(yùn)動(dòng)模型,提高了模型的魯棒性,利用EM算法對(duì)模型的參數(shù)進(jìn)行估計(jì)[9]。Mech等提出了一種將閾值處理后得到的幀差圖像進(jìn)行光滑濾波降噪的變化區(qū)域檢測(cè)法[10],但是由于只利用了兩幀的幀差信息,得到的圖像噪聲干擾比較明顯,時(shí)域分割的常用方法有光流場(chǎng)和矢量場(chǎng)估計(jì)法等。Rashmi等研究了Prewitt、Robert、Sobel、Marr Hildrith和Canny算子等多種邊緣檢測(cè)技術(shù)[11]。通過比較可以看出,Canny邊緣檢測(cè)器在自適應(yīng)、噪聲圖像處理、邊緣銳化、檢測(cè)假邊緣概率等方面都優(yōu)于其他所有邊緣檢測(cè)器??沼蚍指罹褪歉鶕?jù)圖像的顏色等特征將圖像分割成若干相似區(qū)域,然后通過空間聚類形成語義對(duì)象[12]。由于分水嶺算法具有位置精確、閉合邊緣連續(xù)、單像素寬度大等優(yōu)點(diǎn),已成為人們關(guān)注的焦點(diǎn),但存在著對(duì)圖像中目標(biāo)的過度分割問題。時(shí)/空域聯(lián)合算法首先通過時(shí)域分割確定圖像中的運(yùn)動(dòng)區(qū)域,最后結(jié)合空域分割得到更精確的邊界語義信息,得到更精確的邊緣分割對(duì)象。牛武澤等提出了將運(yùn)動(dòng)目標(biāo)與時(shí)空信息融合的檢測(cè)算法,能夠較準(zhǔn)確地提取運(yùn)動(dòng)目標(biāo)[13]。李建等提出將多幀灰度差異檢測(cè)結(jié)合高斯聚類再通過小波變換后進(jìn)行分水嶺分割,很好地克服了過分割現(xiàn)象[14]。朱仲杰等提出一種基于時(shí)空信息的運(yùn)動(dòng)目標(biāo)提取法,將變化檢測(cè)信息和形態(tài)學(xué)分水嶺信息進(jìn)行投影運(yùn)算得到較為精確目標(biāo)邊緣信息,但不能克服復(fù)雜背景運(yùn)動(dòng)的情況[15]。
綜上,現(xiàn)有的圖像分割與檢測(cè)算法在靈活多變的交通環(huán)境運(yùn)用中不夠完善,具有一定的片面性,且計(jì)算效率不夠高。本文提出一種融合時(shí)域和邊緣信息的內(nèi)外標(biāo)記分水嶺的車輛檢測(cè)算法,首先根據(jù)視頻流相鄰三幀時(shí)域變化信息再結(jié)合Canny邊緣算子得到時(shí)域掩模圖像,然后運(yùn)用分水嶺空域算法對(duì)圖像進(jìn)行分割,最后將空域結(jié)果和時(shí)域掩膜圖像進(jìn)行融合,以獲取圖像中的車輛信息。
算法的原理如圖1所示。首先進(jìn)行時(shí)域分割,將相鄰視頻幀進(jìn)行差分運(yùn)算,得到多幀的灰度值差異,運(yùn)用Canny算法得到當(dāng)前幀的邊緣信息,以消除非運(yùn)動(dòng)區(qū)域的影響,利用幀差結(jié)果融合邊緣信息對(duì)結(jié)果進(jìn)行形態(tài)學(xué)優(yōu)化處理,獲取噪聲被抑制的時(shí)域分割掩膜圖像;然后進(jìn)行空域分割,對(duì)當(dāng)前幀進(jìn)行二次重構(gòu)處理和內(nèi)外區(qū)域標(biāo)記,通過梯度修正和分水嶺變換,得到空域掩膜圖像;最后將時(shí)域分割結(jié)果和空域掩膜圖像有效的融合,得到最終的車輛檢測(cè)圖像。
圖1 算法原理圖Fig.1 Algorithm principle diagram
2.1.1 時(shí)域變化目標(biāo)檢測(cè)
運(yùn)動(dòng)目標(biāo)在相鄰視頻幀中存在位置差異,兩幀間差分運(yùn)算適用于當(dāng)車輛速度較慢的場(chǎng)景,過快的車速就會(huì)導(dǎo)致相鄰兩幀位置差異過大。當(dāng)車輛速度較快時(shí),車輛運(yùn)動(dòng)輪廓提取不漏缺。因此,本文運(yùn)用的時(shí)域分割就是三幀差分運(yùn)算,通過圖像中當(dāng)前幀和前后幀的信息進(jìn)行分割。
設(shè)I(x,y,t)為t時(shí)刻當(dāng)前幀,其前后相鄰的兩幀分別為I(x,y,t-1)和I(x,y,t+1),t時(shí)刻相鄰兩幀作差分運(yùn)算:
為了后續(xù)的運(yùn)動(dòng)分析與理解,將Dt,t-1(x,y,t)和Dt,t+1(x,y,t)時(shí)域變化融合在一起,從而得到更精準(zhǔn)的運(yùn)動(dòng)目標(biāo)D3(x,y,t)。即:
接下來采用均值濾波法對(duì)其進(jìn)行優(yōu)化處理,以便能清晰地獲取目標(biāo)邊緣信息。在計(jì)算過程中,閾值T過大會(huì)導(dǎo)致消除一些目標(biāo)邊緣信息,過小由會(huì)導(dǎo)致降噪較弱,而且場(chǎng)景的光線會(huì)不斷變化,固定的閾值T無法適應(yīng)。那么為了能夠?qū)崟r(shí)的計(jì)算和更新閾值T,本文采用自適應(yīng)閾值選取法。該方法通常需迭代4至10次,其計(jì)算過程為:
(1)求出差分圖像Dt,t-1(x,y,t)的最大灰度值Hmax和最小灰度值Hmin,然后求取初始分割閾值T0=(Hmax+Hmin)/2。
(2)將差分圖像根據(jù)求得的閾值T0進(jìn)行分割,得到前景圖像D1=Dt,t-1(x,y,t)≥T0和背景圖像D2=Dt,t-1(x,y,t)<T0。
(3)分別在D1和D2圖像范圍內(nèi)計(jì)算求得像素灰度平均值,μ1=mean(D1)及μ2=mean(D2),在此基礎(chǔ)上,求得新域值T=(μ1+μ1)/2。
2.1.2 邊緣信息提取
本文在時(shí)域運(yùn)算中加入Canny邊緣檢測(cè)法以防止亮度和陰影對(duì)檢測(cè)目標(biāo)的影響,消除不是運(yùn)動(dòng)的區(qū)域。其操作步驟為:
(1)平滑降噪:本文采用固定濾波器(δ=1)的二維高斯函數(shù)對(duì)當(dāng)前幀進(jìn)行平滑噪聲消除。
(2)梯度幅值G(x,y)和梯度方向θ(x,y):將上述降噪處理后得到的I(x,y)用一階微分算子進(jìn)行計(jì)算,計(jì)算公式為:
式中,Gx為x方向的梯度幅值;Gy為y方向的梯度幅值。
(3)非極大值抑制:沿梯度方向θ(x,y),以3×3在梯度幅值圖像中點(diǎn)(x,y)鄰域內(nèi)進(jìn)行插值,將梯度幅值G(x,y)小于θ(x,y)方向上與其相鄰的兩個(gè)插值的點(diǎn)(x,y)記為非邊緣點(diǎn),大于的點(diǎn)(x,y)標(biāo)記為候選邊緣點(diǎn)。
(4)雙閾值分割:為了提取圖像的邊緣信息E(x,y,t),將邊緣圖像的強(qiáng)邊弱邊相連。以設(shè)定的高閾值Th來和低閾值Ts掃描圖像。
(5)優(yōu)化處理:利用形態(tài)學(xué)細(xì)化Endpoints函數(shù)和Bwmorph(E(x,y,t),′thin′)將提取的邊緣進(jìn)行處理,使圖像達(dá)到高信噪比和低均方差。
2.1.3 融合邊緣信息的時(shí)域變化
將時(shí)域檢測(cè)得到的圖像D3(x,y,t)和Canny邊緣檢測(cè)得到的圖像E(x,y,t)相結(jié)合,得到剔除了背景影響的初始掩膜檢測(cè)圖像M(x,y,t)。
為了精準(zhǔn)地提取目標(biāo)邊界,本文引入空域運(yùn)算。由于常規(guī)的空域分割算法分水嶺變換經(jīng)常由于梯度噪聲等因素的影響,導(dǎo)致分割效果不理想,計(jì)算效率低。因此,本文在原來的分水嶺變換之前,先對(duì)圖像采用灰度級(jí)形態(tài)學(xué)二次重構(gòu)和內(nèi)外標(biāo)記技術(shù)進(jìn)行預(yù)處理,然后進(jìn)行梯度修正,最后再分水嶺變換。
2.2.1 二次重構(gòu)運(yùn)算
本文采用常用的形態(tài)學(xué)重構(gòu)技術(shù)[16],通過開、閉運(yùn)算重構(gòu)處理圖像。
其中:
式中,f為圖像f(x,y);g為參考圖像g(x,y);b為結(jié)構(gòu)元素;代表重構(gòu)膨脹運(yùn)算;⊕代表形態(tài)學(xué)膨脹運(yùn)算;代表腐蝕重構(gòu)運(yùn)算;Θ表示形態(tài)學(xué)腐蝕運(yùn)算;緊接著采用不同尺寸的結(jié)構(gòu)元素b=ones(r)(選用的結(jié)構(gòu)元素是半徑為r的“disk”圓盤,r=1,3,5,7,9)進(jìn)行預(yù)處理,采用形態(tài)學(xué)開、閉混合重構(gòu)運(yùn)算處理當(dāng)前幀I(x,y,t),稱為多尺度形態(tài)學(xué)二次重構(gòu)運(yùn)算,計(jì)算公式為:
2.2.2 區(qū)域標(biāo)記提取運(yùn)算
一般的分水嶺算法最常見的問題就是會(huì)出現(xiàn)過分割問題,而區(qū)域標(biāo)記就是將與檢測(cè)目標(biāo)和背景分開標(biāo)記,避免出現(xiàn)分割與目標(biāo)不相關(guān)的區(qū)域,本文采用內(nèi)外區(qū)域標(biāo)記。
(1)內(nèi)部區(qū)域標(biāo)記
通過分析前景與背景較大的灰度值差異,計(jì)算其局部極大值[17],然后進(jìn)行內(nèi)部標(biāo)記。本文通過計(jì)算重構(gòu)圖像的局部極大值并標(biāo)記,得到局部極大值圖像
由于圖像背景復(fù)雜,標(biāo)記了很多無關(guān)區(qū)域,前景標(biāo)記不準(zhǔn)確,噪聲影響大。所以本文統(tǒng)計(jì)局部極大區(qū)域的灰度值與鄰域灰度值的差高于高度閾值的極大值區(qū)域,消除不相關(guān)區(qū)域,從而精確地提取前景目標(biāo)。計(jì)算公式如式(11)所示:
為了提取的準(zhǔn)確性,對(duì)上述形態(tài)學(xué)操作后得到的圖像分別進(jìn)行內(nèi)部標(biāo)記,然后按式(12)計(jì)算得到最終的前景標(biāo)記圖。
用像素值1標(biāo)記該輸出圖像的前景像素深局部最大區(qū)域的位置,用像素值0標(biāo)記無關(guān)區(qū)域,標(biāo)記結(jié)果如圖2(a)所示并用淺綠色標(biāo)記前景區(qū)域疊加在原圖中,如圖2(b)所示。由圖可知,前景標(biāo)記清晰。
(2)外部區(qū)域標(biāo)記提取
在獲得內(nèi)部標(biāo)記Imark(x,y,t)后,必須尋找外部標(biāo)記符(屬于背景的像素)。因此,本文采用通過分水嶺變換來標(biāo)記外部區(qū)域。具體計(jì)算過程如下:
①二值化閾值變換[18],計(jì)算公式為:
②優(yōu)化處理:對(duì)二值化閾值變換后的圖像進(jìn)行腐蝕imerode()操作,然后剔除背景噪聲bwareaopen(),最后對(duì)圖像進(jìn)行填充imfill()。
③距離變換:計(jì)算“骨架影響范圍”來“細(xì)化”背景,本文采用“準(zhǔn)歐式”距離來做變換,其邊界像素(a,b)和區(qū)域像素(m,n)之間的最小鄰域距離公式為:
④最后進(jìn)行分水嶺變換,背景標(biāo)記IBmark(x,y,t)結(jié)果為:
(3)梯度修正
對(duì)梯度圖像采用內(nèi)外區(qū)域標(biāo)記,消除過分割問題。其計(jì)算過程為:
①計(jì)算原梯度:通過對(duì)X方向和Y方向通過一階微分求取振幅,實(shí)現(xiàn)圖像梯度效果,微分算子一般有Prewitt與Sobel。本文采用Sobel算子計(jì)算當(dāng)前幀梯度圖像Igradmag(x,y,t)得到了圖3(b)和圖3(c)。
②梯度修正:對(duì)灰度級(jí)梯度圖像運(yùn)用ImposeMin函數(shù)進(jìn)行修改,刪除局部最大的區(qū)域,保留局部最小區(qū)域。整個(gè)計(jì)算過程如式(16)所示:
式中,Ix為橫向梯度圖;Iy為縱向梯度圖;為修改后的梯度圖像,如圖3(d)。
(4)分水嶺圖像變換
為了體現(xiàn)本文改進(jìn)的分水嶺算法的優(yōu)點(diǎn),本文通過對(duì)不同階段的圖像進(jìn)行分水嶺分割作為對(duì)比。首先將重建后的圖片直接分水嶺變換得到圖4(a),其次分割前景標(biāo)記后的圖像得到圖4(b)。
可以看出圖4(a)分割了一些與目標(biāo)無關(guān)的區(qū)域,效果差,且目標(biāo)區(qū)域分割不明顯;而圖4(b)可以看出背景影響較大,但目標(biāo)區(qū)域比較明顯。
圖4 圖像分割Fig.4 Image segmentation
為結(jié)合前景將場(chǎng)景區(qū)域分割,將背景標(biāo)記進(jìn)行分水嶺變換,并進(jìn)行內(nèi)外標(biāo)記得到圖5。
圖5 背景標(biāo)記分割Fig.5 Background tag segmentation
圖5 (a)為背景標(biāo)記分割結(jié)果,圖5(b)為內(nèi)外標(biāo)記結(jié)果,可以明顯地看出目標(biāo)區(qū)域。
空域運(yùn)算得到的圖像目標(biāo)區(qū)域還受背景影響,無法從圖中單獨(dú)提取出來,因此需要融入車輛運(yùn)動(dòng)信息。時(shí)域運(yùn)算獲得的圖像車輛運(yùn)動(dòng)信息完整。因此本文將空域和時(shí)域分割相結(jié)合,彌補(bǔ)兩者運(yùn)算的不足。時(shí)空融合過程為:
(1)將時(shí)域分割得到的初始運(yùn)動(dòng)掩膜圖像M(x,y,t)與空域分割后的圖像L(x,y,t)進(jìn)行投影運(yùn)算[19],得到最終的掩膜圖像F(x,y,t),如式(18)所示:
式中,Li為空域分割產(chǎn)生的任一區(qū)域,NLi為L(zhǎng)i的大小,th為經(jīng)驗(yàn)閾值,通常取0.6~0.7。
(2)邊緣信息修正:對(duì)圖像F(x,y,t)利用形態(tài)學(xué)修正,將圖像的邊緣細(xì)化處理,填充目標(biāo)區(qū)域,去除一些孤立點(diǎn),得到最終車輛檢測(cè)圖像Z(x,y,t),先對(duì)圖像F(x,y,t)進(jìn)行膨脹處理得到W(x,y,t),然后融合邊緣檢測(cè)得到的圖像E(x,y,t),具體過程如下所示:
實(shí)驗(yàn)采用重慶市學(xué)府大道某路口監(jiān)控視頻來驗(yàn)證本文算法的檢測(cè)效果。相關(guān)實(shí)驗(yàn)的軟硬件平臺(tái):Intel Core i5處理器,2.50 GHz,8 GB內(nèi)存的計(jì)算機(jī),操作系統(tǒng)為Windows 7,Python3.6.5,OpenCV3.4.2,PyCharm2017.1,MATLAB。首先將本文提出的算法與目前的常規(guī)運(yùn)算方法做了對(duì)比實(shí)驗(yàn)。然后將本文提出的分割算法運(yùn)用到平面區(qū)域的單向車輛進(jìn)行檢測(cè)。結(jié)果如下所示。
(1)時(shí)域分割算法:采集視頻中的第83、84、85幀,84幀記為當(dāng)前幀,用Canny算子運(yùn)算得到圖6(g),然后對(duì)83、84、85幀圖像用幀差法進(jìn)行運(yùn)算并融合圖6(g)得到圖6(h),最后是融合邊緣信息的幀差法如圖6(i)。
圖6 時(shí)域分割算法對(duì)比實(shí)驗(yàn)Fig.6 Contrast experiment of frame difference
可以看出本文方法有效地抑制了大部分幀差法和邊緣檢測(cè)法中的明顯的背景噪聲和重影,目標(biāo)區(qū)域信息完整,只是還受微弱的噪聲影響。
(2)空域分割算法:實(shí)驗(yàn)中采用了幾種不同的分割算法,算法效果對(duì)比圖如圖7。
本文采用的分水嶺分割算法能夠抑制傳統(tǒng)的分水嶺算法和平滑梯度分水嶺算法兩種算法的過分割現(xiàn)象,目標(biāo)區(qū)域分割明顯,車輛邊緣相互獨(dú)立,只是丟了一些內(nèi)部輪廓,本文算法明顯優(yōu)于其他兩種。
(3)融合算法:將時(shí)域分割算法得到的圖6(i)和空域運(yùn)算得到的圖7(c)相融合,得到圖8(a)。
圖7 分水嶺法的對(duì)比實(shí)驗(yàn)Fig.7 Contrast experiment of watershed
從圖8可以看出,對(duì)當(dāng)前幀采用時(shí)空融合運(yùn)算比單獨(dú)的對(duì)圖片進(jìn)行時(shí)域分割算法和空域運(yùn)算效果要好,車輛外部邊緣清晰、獨(dú)立,內(nèi)部輪廓比較完整。圖8(d)是為了得到更好的效果,對(duì)得到的融合圖像進(jìn)行了優(yōu)化處理后,最終得到的當(dāng)前幀車輛檢測(cè)圖。
圖8 本文算法的實(shí)驗(yàn)結(jié)果Fig.8 Experimental results of proposed algorithm
為了評(píng)估本文算法的效率與實(shí)時(shí)性,引用tic/toc函數(shù)記錄每一幀圖像的處理時(shí)間,tic表示計(jì)時(shí)的開始,toc表示計(jì)時(shí)的結(jié)束。經(jīng)過統(tǒng)計(jì),最長(zhǎng)時(shí)間、最短時(shí)間、平均檢測(cè)時(shí)間分別為0.57 s、0.38 s、0.43 s。通過合理的間隔取樣,本文的檢測(cè)算法效率較高,并且能夠保證實(shí)時(shí)性。
由第84幀圖像的檢測(cè)結(jié)果,單幀圖像識(shí)別車輛為4,實(shí)際車輛為4,可以得到該幀圖像中的車輛全部被檢測(cè)到,但為了避免單幀圖像檢測(cè)具有的偶然性,用本文算法將獲取的7 km監(jiān)控視頻按15 min為一個(gè)時(shí)間段進(jìn)行了視頻取樣,在此基礎(chǔ)上分別采用機(jī)器、人工對(duì)道路上的車輛進(jìn)行計(jì)數(shù),圖像檢測(cè)返回結(jié)果如圖9。
圖9 車輛檢測(cè)計(jì)數(shù)Fig.9 Vehicle detection count
通過統(tǒng)計(jì)4個(gè)時(shí)間段交通的流量,得到機(jī)器預(yù)測(cè)與實(shí)際情況的偏差,以得到機(jī)器檢測(cè)交通流的真實(shí)效果。統(tǒng)計(jì)結(jié)果如表1。
表1 7 km視頻車流量統(tǒng)計(jì)Table 1 Statistics of seven-kilometer video traffic flow
由表1可以看出本文提出的車輛檢測(cè)算法的平均漏檢率僅為4.90%,有效地降低了由于背景噪聲和陰影帶來的車輛檢測(cè)誤差。
本文提出了一種融合時(shí)域和空域的車輛檢測(cè)算法,在保證高效、實(shí)時(shí)的同時(shí),能夠準(zhǔn)確地提取快速運(yùn)動(dòng)的車輛。通過時(shí)域檢測(cè)中三幀差法與邊緣檢測(cè)法相結(jié)合,提取車輛的邊緣信息,抑制了背景噪聲和陰影對(duì)目標(biāo)區(qū)域的分割影響。再結(jié)合空域運(yùn)算提取的獨(dú)立的車輛外部輪廓,解決了過分割問題。
本文方法的局限性在于:當(dāng)車輛密度大時(shí),視覺上出現(xiàn)車與車之間信息重疊,尤其是大型貨車與公交車,導(dǎo)致檢測(cè)誤差,下一步研究將解決運(yùn)動(dòng)車輛信息重疊,在本文算法的基礎(chǔ)上繼續(xù)改進(jìn),將運(yùn)動(dòng)物體分開,提高算法的檢測(cè)精準(zhǔn)度。