郭言信,朱明旱,張明月,張栩華,周楠皓
(湖南文理學院 計算機與電氣工程學院,湖南 常德 415000)
隨著時代的發(fā)展,數(shù)字圖像處理技術(shù)逐漸被應用到車輛的檢測和跟蹤算法中,在道路交通管理中發(fā)揮了越來越重要的作用,目前已經(jīng)有很多國內(nèi)外的學者在這方面做了大量并且深入的研究[1-2],各種各樣基于視頻的車輛檢測技術(shù)的算法開始出現(xiàn)。然而,很多算法都是在正常的日間光照下進行的[3],也有一些算法是在惡劣的特殊天氣情況下展開的,針對夜間條件的研究卻比較少,而且效果也不是很理想。
大部分原因是在圖像處理的過程中經(jīng)常會容易受到周圍的環(huán)境和條件的影響,夜間的燈光來源十分復雜,除了車輛的燈光,道路上的反射光也十分多。此外,道路沿線的其他事物、路燈等環(huán)境因素的干擾極大地阻礙了夜間車輛的檢測和識別,白天的許多視頻檢測算法無法在夜間實現(xiàn)。在基于視頻的車輛檢測中,因為受光照的影響,日夜場景不同的情況下檢測算法也是不同的。
但無論是對于白天還是夜間情況下的車輛檢測,算法一般主要分成兩部分:車輛的檢測和車輛的跟蹤[4-5]。車輛檢測是為了檢測視頻圖像中是否存在車輛,對于檢測到的車輛保存其位置和形態(tài)學信息。由于車輛信息在不斷的變化,檢測過程通常遍歷了整個幀圖像,導致完成這一部分的事件復雜度較高。車輛的跟蹤是在第一次檢測到車輛后,建立車輛的初始化信息,并且對接下來的每一幀跟蹤車輛的信息。因為跟蹤能夠通過車輛的最大行駛速度來預測車輛的移動范圍,讓搜索范圍和事件復雜度都變小。所以通過加入跟蹤算法可以提高車輛檢測的實時性[6]。
劉莉提出一種在夜間光照不充足的情況下通過連通區(qū)域檢測車輛的方法[7],閾值化,通過腐蝕去除一些孤立的點,后通過車燈的形狀大小等特征找出車燈并對其配對,最后通過比較相鄰兩幀之間的連通區(qū)域變化進行追蹤,從而計算出車流量。但是這種方法計算信息量較大,關(guān)于夜間交通堵塞,路燈反射光影響等問題沒有完全得以解決。
為了更好地解決上面的問題,文中提出一種建立矩形框來標記車輛的夜間車流量檢測和跟蹤的方法。首先,對圖像進行閾值化,提取可能為車燈的亮點,建立連通區(qū)域,再利用兩車燈連線的斜率接近于0,兩車燈之間的水平位置,兩車燈的面積應該是相近或幾乎相等及兩者之間的距離應該小于設定的閾值進行判斷,對車燈進行匹配。之后再適當放大匹配車燈的連線的長度,得到車頭寬度。進而根據(jù)車頭長寬比關(guān)系,確定其長度,從而得到車頭區(qū)域,通過矩形框保存好車輛信息之后,通過基于鄰域的方法進行車流量的統(tǒng)計跟蹤。
車燈作為在夜晚最明顯的特征并不受周圍環(huán)境的影響[8]。城市交通中存在著各種類型的車輛,不同類型的車輛的車燈數(shù)目也不相同,有時還會有一些車燈壞掉的故障車輛,所以要想通過車燈去得到準確的車輛數(shù)目必須進行車輛的配對和跟蹤。前者是為了判斷屬于同一輛車的車燈,配對后就可以通過車燈來代表車輛數(shù)目,后者是為了解決車輛計數(shù)和獲取運動軌跡的問題。
目前夜間車輛檢測和跟蹤算法主要分為3類:基于車前燈檢測算法[9-10]、基于車尾燈檢測算法[11]和基于機器學習檢測算法[12]。通過系統(tǒng)實時性和準確性的多重考慮,文中算法是在車燈檢測的基礎上通過建立矩形框來標志車輛的夜間車輛檢測法,通過規(guī)則集來定義多種情況下矩形框保存車輛信息[13]。
目前車燈檢測的方法主要是依靠一些外界的因素來對車燈進行檢測[14-15],這種方法比較依賴周圍的環(huán)境,很容易造成車輛檢測的穩(wěn)定性較低,從多方面考慮文中算法能夠較有效地檢測到車輛。
獲取夜間交通監(jiān)控的畫面之后,對圖像進行預處理,首先是進行灰度變換,再通過閾值化提取車燈,再依據(jù)車燈的形態(tài)學特征和車燈之間設定的距離的閾值將表現(xiàn)為同一輛車的車燈連通區(qū)域配對,保存最開始的車輛信息,然后建立了矩形框和車燈的在不同幀下的匹配原則,并給出車燈對的基于鄰域的跟蹤算法的流程[16],完成車輛的檢測和跟蹤。
1.1.1 視頻圖像預處理
首先預處理待檢測視頻圖像,主要是灰度處理和閾值化處理[17]。通過設置閾值來分割前景目標和背景,因為在夜間環(huán)境下車燈中間位置的亮度很高,在圖像的中亮度接近255,還有一些光線反射的亮度也很高,從而產(chǎn)生干擾,而圖像中剩下的部分亮度都很低,所以可以通過設置一個閾值T,當圖像中某個點的亮度大于T時,就令這個點的亮度為255,否則令這個亮度點為0。
閾值化后的圖像包括車燈,夜間反射光和一些微小噪聲,先通過形態(tài)學分析去除一些不規(guī)則的噪聲,然后通過腐蝕和設置車燈連通區(qū)域的最小值來去除一些小噪聲的干擾(如圖1(b))。此預處理效果良好,便于后續(xù)研究的進行。
圖1 視頻圖像預處理
閾值化公式如下:
1.1.2 車前燈的檢測和匹配
一般車輛只有兩個車燈,但是一些特殊車輛有不符合一般情況的車燈數(shù)量,對車輛提取造成了很大的影響。為了提取所有的車輛,將車輛的車燈配對是必要的步驟,同時也必須把判斷為同一車輛的車燈分為一組。一般來說,車輛的頭燈以同樣的速度向相同的方向移動,并且車燈的面積、縱橫比等參數(shù)相差不大。因此要將車輛進行匹配可以通過各個車燈之間的空間信息來進行[18-19]。
車燈檢測和匹配的目的是為了將需要的車燈從圖像中提取出來,并判斷哪些車燈屬于同一輛車,在經(jīng)過前文的預處理之后圖像中只有車燈,除了主燈以外的裝飾燈和一些車的反射光,而普通車輛的車燈在形態(tài)學上是有規(guī)則的,都接近圓形或者橢圓形,它們的長寬比和面積都在一定的閾值之內(nèi)。通過這些研究,可以剔除一部分干擾,再根據(jù)兩車燈的水平位置,車燈的面積應該是相近或幾乎相等及兩者之間的距離應該小于設定的閾值進行判斷,就可以將屬于同一輛車的車燈匹配起來,由于一輛車可能開了多個車燈,所以為了避免錯檢,也會將這些燈進行配對并建立車輛信息,并且通過后文建立的規(guī)則來判斷多個車燈如何計算車輛。文中提出的閾值大小都是根據(jù)具體情況來確定的。
要確定此連通區(qū)域為車燈并對其進行配對,必須同時滿足下列條件。匹配完成后,需要進一步判斷剩下的沒有匹配成功的單個連通區(qū)域是因為車輛本身只打開了一個車燈還是由于周圍的環(huán)境干擾所導致的。
想要提取出實際的車燈區(qū)域,可以通過下面幾個條件來判斷。
(1)兩個車燈的水平位置在圖像中相差不大,即連線的斜率接近0,設車燈中心為(x1,y1)、(x2,y2),則中心連線的斜率為:
(2)同一輛車的兩個車燈形狀類似,而且兩車燈的面積之比在閾值之內(nèi)。
(3)兩個車燈之間的中心距離的閾值用車道線的寬度來定義,即車燈的中心距離d小于閾值M,則:
車燈匹配成功之后,適當放大車燈對連線的長度,得到車頭寬度。進而根據(jù)車頭長寬比關(guān)系,確定其長度,從而得到車頭區(qū)域。后續(xù)建立車輛信息的規(guī)則集就是在矩形框的基礎上進行的(見圖2)。
1.1.3 保存車輛信息
通過規(guī)則集來判斷單個或多個車燈的情況如何確定車輛的位置以及如何保存當前的車輛信息。車輛信息存儲的是矩形框中的車燈對或單個車燈的位置信息以及對應的連通區(qū)域的形狀和面積信息。規(guī)則集如下:
(1)矩形框沒有重疊,可以直接保存這個矩形框的車輛信息;
(2)矩形框有重疊,并且重疊區(qū)域與矩形框的比值大于閾值Z,則判斷為是車燈對和車燈對路面的反射光或者是車輛的大前燈對和小前燈對,然后保存面積最大的矩形框的車輛信息;
圖2 車輛配對
(3)矩形框存在重疊,且重疊面積與矩形框之比小于閾值Z,就認為是車輛發(fā)生遮擋,保存兩個矩形框的車輛信息;
(4)矩形框周圍有落單的連區(qū)域,則認為它是路面的反射光或者是其他誤差因素,直接保存這個矩形框中連通區(qū)域的車輛信息;
(5)對于分組只包含了單個連通區(qū)域的矩形框,為了避免漏掉只開了單個車燈的車輛信息,則保存全部矩形框中的連通區(qū)域的信息。
在車輛檢測中匹配與比較的是每一幀圖像中的車燈,但在視頻中如果只對于單幀圖像進行處理無法計算出車輛,所以必須進行車輛的幀間匹配,在每一幀中檢測到目標車輛的位置信息。因為視頻中相鄰兩幀之間的時間十分短,不管車輛有任何突發(fā)的位置移動,車輛的位置變化都會在一定的范圍內(nèi),并且車燈面積同樣也變化不大。因此,可以根據(jù)車輛在行駛過程中的最高速度預測出車輛在下一幀的位置范圍,并把車輛能夠移動的最大距離設置為閾值K。根據(jù)車燈當前幀的信息,搜索并匹配下一幀中車燈的位置并判斷兩幀中是否檢測到的是同一輛車[20]。
關(guān)于車燈在幀間的匹配原則如下:
(1)首先計算兩車燈的中心坐標,確定為矩形框中兩車燈連線的中心位置,若是車燈為單個存在的矩形框中的車燈中心坐標就為這個車燈的中心。設車燈對的兩車燈坐標分別為(x1,y1)、(x2,y2),則中心坐標(x,y)為:
(2)計算矩形框內(nèi)的車燈的平均面積,若是車燈為單個存在的矩形框中的車燈平均面積就為這個車燈的平均面積。并且在前后幀之間矩形框內(nèi)的車燈面積相差在閾值內(nèi)。
(3)匹配時確定矩形框內(nèi)的車燈數(shù)目沒有變化。
依據(jù)上述所列出的車燈匹配原則,以下是文中車燈對跟蹤算法的具體實現(xiàn)方法:
(1)將矩形框中的車燈對的當前中心坐標和平均面積計算和保留下來,用向量Pi=(x,y)表示中心坐標,area為平均面積,i為幀數(shù),保存在初始目標池中。
(2)預測pi在下一幀中車輛的位置,先建立一個以pi為原點坐標,半徑為K的圓形窗口,在此范圍內(nèi)提取匹配目標。若沒有找到匹配車輛,則轉(zhuǎn)到(4)。反之,則進入下一步。
(3)為了判斷搜索提取到的是不是同一輛車,用幀間車燈的相似度來進行比較。將下一幀中的各個車燈對與當前幀的車燈對進行對比,如果提取的目標車燈對與當前幀車燈對的面積之比滿足下式,即:
則跟蹤成功,車輛計數(shù)加1,更新車輛中心坐標和平均面積等信息;如果車燈對Pi+1在目標池中找不到匹配的車燈對,則認為Pi+1是新進入的車燈對,將信息保存在目標池中,并進行下一幀的搜索。其中,areai+1,areai分別表示下一幀與當前幀的面積,閾值Amin和Amax分別設置為0.8和1.2。
(4)如果目標池中的pi在搜索窗口中沒有搜索到匹配的車燈,則首先判斷為失幀,重新跳轉(zhuǎn)到(2),假如像這樣循環(huán)15次都沒有搜索到匹配車燈,則判斷pi消失,從目標池中將pi刪除。
(5)保存跟蹤到的車燈對中心的位置信息,可以追蹤到其運動軌跡。
通過算法對目標的檢測和連續(xù)跟蹤,可以得到當前目標運動的速度和位置,預測下一幀中目標可能出現(xiàn)的位置,與此同時進行兩幀之間車燈的車輛信息匹配,通過預測的跟蹤方法不僅縮小了搜索范圍,也加快了速度,并且由于預測減少了不可能存在車輛的位置,可以提高跟蹤精度,使跟蹤更加準確。
車輛進入視頻后有三種狀態(tài):出現(xiàn)、消失、更新,對待不同的狀態(tài)有不同的對檢測目標的處理方式。
出現(xiàn):當前檢測到目標對象,將目標與目標池中的目標匹配,如果目標池中未找到與此目標匹配的對象,則將此目標作為新目標添加到目標池中。
消失:目標池中的車輛沒有在連續(xù)的15幀中檢測和搜索到匹配的車燈,則認為目標消失并從將它目標池中刪除。
更新:在當前幀中檢測到目標池中的車輛,則將當前幀此車輛中心坐標和平均面積等信息替代初始目標池中車輛的信息。
實驗采用文中方法對不同場景中的視頻進行了車輛檢測與跟蹤,其中的實際車輛數(shù)量是人工統(tǒng)計的。文中算法的檢測和追蹤效率如表1所示。視頻數(shù)據(jù)主要包括視頻的時長、道路環(huán)境以及人工計數(shù)的實際車輛數(shù)量。
表1 夜間車輛跟蹤結(jié)果統(tǒng)計
實驗結(jié)果表明,使用文中方法進行車輛檢測的檢測率都在95%以上,錯檢率較低,并且在一般的情況下具有一定的穩(wěn)定性,能滿足夜間車輛檢測的基本要求。
針對夜間環(huán)境下光照不充足以及光線反射干擾導致運動目標提取困難等問題,提出了一種通過在車燈配對階段建立矩形框來建立車輛信息的夜間車流量檢測方法,實驗結(jié)果證明該方法能有效地解決一車多燈的問題,在夜間環(huán)境下能達到一定的準確率。
為了提高夜間車輛檢測的穩(wěn)定性和實時性,在完成了車輛檢測后采用了基于鄰域跟蹤的方法。使用此方法可以降低需要檢測的區(qū)域,使運算速度大大提高。想要提取較為穩(wěn)定的跟蹤對象可以通過預測車輛在下一幀位置的方法來實現(xiàn),以便于提高跟蹤方法的穩(wěn)定性,減少丟失跟蹤目標的情況,此方法也可以增強車輛檢測的準確性和抗干擾性。通過實驗結(jié)果驗證了加入跟蹤的方法能確保車輛檢測的實時性、穩(wěn)定性以及準確性。檢測率在95%以上。然而在一些交通堵塞與天氣惡劣的環(huán)境下并不是通過簡單的配對與跟蹤就能計算的,如何在此類環(huán)境下進行車輛檢測并提高準確率將是未來的研究工作。