??? 摘 要: 通過對圖像中的斑塊進行分析,獲得斑塊在圖像中的信息,由非線性校正算法將其恢復為實際道路中信息。依據(jù)一定的條件將斑塊聚合為車輛以提取車輛信息,進而判斷是否有車輛隊列,得到較為準確的車流長度" title="車流長度">車流長度。實驗結果表明,該檢測算法有較高的準確性,且能滿足監(jiān)控的實時性。
??? 關鍵詞: 車流長度,斑塊處理" title="斑塊處理">斑塊處理,車輛聚合,非線性形變
?
??? 近年來,隨著計算機技術的不斷發(fā)展和高分辨率成像技術的運用,數(shù)字圖像處理分析技術在車輛自動監(jiān)視系統(tǒng)中的應用越來越廣泛。道路上車輛運行狀況與車流長度的實時檢測是智能交通管理的重要功能之一。參考文獻[1]中提出了基于FFT的隊列檢測方法,根據(jù)圖像上檢測區(qū)域內(nèi)有車與無車對應頻譜的不同,檢測車道上是否存在車輛,但該算法不能定量地給出車輛的排隊長度。參考文獻[2]中利用圖像的點特征與線特征來檢測隊列的長度,當圖像中存在陰影或遮擋時,角點檢測的魯棒性不夠。本文通過對單目圖像序列的斑塊分析、圖像非線性形變" title="非線性形變">非線性形變校正等,提出了一種有效的車輛排隊長度檢測算法。該算法具有較高的檢測精度與較強的魯棒性。
1 系統(tǒng)概述
??? 在視頻監(jiān)控系統(tǒng)中,由攝像機獲取交通視頻圖像,通過前景與背景作差法可將運動目標從背景中提取出來;然后經(jīng)過自適應的圖像閾值選擇,將前景圖像二值化后,可以看到車輛目標以一個個連通區(qū)域的形式表現(xiàn)在圖像上,稱這些連通區(qū)域為斑塊(Blob),如圖1所示。
?
??? 從圖1中可以看到,這些斑塊在分布上并沒有什么規(guī)律,非常隨機地分布在圖像的各個位置,其中有一些是車輛前景的斑塊,另一些則是具有干擾性的噪聲斑點。本文介紹的系統(tǒng)中,利用基本的斑塊分析算法提取目標圖像中所有斑塊的基本參數(shù)(包括斑塊的位置信息" title="位置信息">位置信息、周長和面積信息、斑塊的外接矩形的各個參數(shù)),然后根據(jù)斑塊的大小和位置信息,濾除噪聲點斑塊,將屬于同一輛車的斑塊進行聚合,實現(xiàn)從斑塊到車輛的提取。由于排隊車輛間的距離是比較小的,因此利用各車輛斑塊的位置與距離關系確定隊列的起始與終止點,從而可確定車流的長度或排隊車輛數(shù)等信息。
??? 由于單目攝像機位置所處的高度和角度的不同會導致圖像不同程度的非線性形變,使得圖像中的長度與位置信息不能正確反映實際的情況。本文提出基于圖像網(wǎng)格的非線性形變校正算法,對圖像進行形變校正,以獲得較為準確的隊列長度。
2 斑塊分析算法
2.1 斑塊邊緣檢測
??? 由于斑塊在圖像上的分布是雜亂且沒有規(guī)律的,這對于斑塊處理程序的魯棒性提出了較高的要求,尤其是斑塊會呈現(xiàn)出各種形態(tài),包括斑塊中間會有空洞也會有孤立的點等。因此,斑塊處理程序必然要求有足夠的適應性[3],能處理各種形狀的斑塊,并記錄它們的信息。斑塊邊緣檢測" title="邊緣檢測">邊緣檢測的具體步驟如下:
??? (1)保存原圖像
??? 由于在后續(xù)的斑塊操作中,需要對找到的斑塊進行填充,會破壞原圖,所以要將原圖像存入一個緩沖區(qū),實際處理的是原圖像的一個鏡像。這樣原圖像的斑塊仍可以作為源進行后續(xù)跟蹤處理。
??? (2)尋找斑塊起始點
??? 經(jīng)過二值化處理后的圖像,斑塊處的像素點是白色的(像素值為1),其余像素點均為黑色(像素值為0)。從圖像的左下角開始,按自下而上,自左而右的方向進行搜索,當遇到第一個白色的像素點時,該點就作為第一個斑塊的邊緣起點,并記下該點的坐標,且在斑塊計數(shù)值上加1。
??? (3)斑塊邊緣信息分析
??? 斑塊邊緣信息分析是指從起始點開始搜索斑塊的邊緣,繞邊緣一圈,將整個斑塊的邊界信息提取出來。本文采取順時針方向的檢測準則。由于每個像素點都有八個相鄰的像素點,根據(jù)該像素點與可能的相鄰點之間的相位關系確定了八個不同方向的向量,如圖2所示,按順時針方向依次搜索邊界點。
?
??? 搜索過程從確定的起始點開始,首先判斷第一個方向向量上相鄰點的像素值是否為1,若是,則為下一個邊緣點,記下該點的像素坐標;否則在該方向向量基礎上順轉45°,即檢測下一方向向量上的相鄰點,直到找到下一個邊界點。為了提高檢測的速度,同時又要保證檢測的準確性,考慮到有可能存在比較孤立的邊界點,將最近找到的邊界點到上一邊界點的方向向量逆轉90°,定為搜索下一邊界點的初始向量(并非每次都從第一方向向量開始搜索)。重復上面的操作,依次尋找像素值為1的下個邊界點,并保存這些點的像素坐標,同時判斷找到的點是否為初始起點,若是,則表示該斑塊的邊緣檢測過程結束。圖3為斑塊邊緣檢測的具體過程,圖中“1”代表白色像素點,即斑塊所在位置,其余的為“0”(省略),代表黑色像素點。
??? 根據(jù)斑塊邊緣檢測過程中記錄的各邊界點的坐標值,可以得到該斑塊的面積、周長、中心位置、外接矩形等信息。
2.2 斑塊填充
??? 斑塊填充就是在起始點的基礎上將整個斑塊填為黑色,實現(xiàn)將斑塊從圖像中移除的效果[4]。由于斑塊的分布極為散亂,對圖像上所有斑塊進行分析時,需要將已經(jīng)找到且已得到基本信息的斑塊從圖像中除去,以不影響其他斑塊的分析。因此斑塊填充過程是不可或缺的一步。
????考慮到斑塊形狀的復雜性,如中空的斑塊中間可能還有小斑塊等,因此不能僅依靠邊界點來填充,需要探求其中的每一個像素點。同時填充過程的耗時在整個斑塊處理過程中所占的比重也是最大的,因此斑塊填充算法需要有較高的魯棒性與實時性。本文研究了兩種填充算法:點處理方法與線處理方法。
??? 點處理就是在斑塊的填充過程中采用逐點處理的方法,又稱為漫水法。該算法實現(xiàn)簡單,沒有考慮斑塊內(nèi)部各個像素點之間的相關性,而是孤立地對各個像素進行測試,所以實現(xiàn)起來比較費時。如果考慮像素點間的相關性,在一個連通的像素段上進行掃描,則采用線處理的方法。即先取出一個種子像素,以此為中心向左和向右進行填充,直到斑塊的邊界點。線處理的具體實現(xiàn)過程如圖4所示。其步驟如下:
??? (1)將斑塊的第一個邊界點作為種子像素,將其進行填充。
??? (2)沿線掃描,對種子的左、右像素進行填充,直到遇到像素值為0的點,即斑塊的邊界處,記下這個填充的邊界坐標X。由于斑塊可能是中空的,所以填充邊界并非斑塊分析階段得到的左右邊界極值Xl或Xr。
??? (3)當Xl
??? (4)從堆棧中取種子像素,重復(2)、(3)步驟,直到堆棧為空,整個斑塊的填充過程結束。
??? 由于考慮了像素點之間的連通性與相關性,該算法在遞歸和堆棧的深度上遠遠低于點處理,特別是堆棧深度不會大于三層,在很大程度上解決了時間和空間復雜度的問題。實踐證明,這種方法可以實現(xiàn)實時的斑塊分析操作。
??? 經(jīng)斑塊分析算法找到并提取斑塊的邊緣信息,再由斑塊填充算法將該斑塊從圖像中移去后,在留下的圖像中仍采用自下而上,自左至右的方向?qū)ふ野咨南袼攸c,即搜索新的斑塊,直到得到所有斑塊的信息。
2.3 斑塊聚合
??? 經(jīng)過斑塊邊緣檢測得到了圖像中單個斑塊的信息,需要根據(jù)各個斑塊的特性將屬于同一輛車的斑塊聚合起來,實現(xiàn)對一輛整車的信息提取。根據(jù)聚合后車輛斑塊的位置信息,將排隊車輛進一步聚合,以得到圖像中的隊列信息。本文主要依據(jù)斑塊之間的距離與斑塊的面積信息來判定多個斑塊目標是否屬于同一個區(qū)域,對符合條件的斑塊進行合并。
??? 在聚合過程中,首先對搜索區(qū)域內(nèi)的斑塊進行初步篩選,將面積小于一定門限的斑塊置于考慮范圍之外,從而濾除這些噪聲點斑塊的干擾,從而在區(qū)域合并過程中進一步剔除了噪聲。區(qū)域合并主要依據(jù)斑塊的中心位置與外接矩形的邊界條件等,將滿足條件的、具有相似性的多個斑塊進行聚合。在該過程中,不斷將聚合后的斑塊信息來更新目標信息。
3 非線性校正算法
??? 在斑塊聚合中需要以各斑塊的大小與位置信息為依據(jù),但由于攝像機所處位置的高度與角度的不同,會導致圖像不同程度的非線性形變,圖像中的斑塊信息不能正確反映實際的信息,需要由校正算法對其進行參數(shù)恢復[5]。本文提出一種基于圖像網(wǎng)格的非線性校正算法。
??? 在所攝取的圖像上建立坐標系,規(guī)定圖像的左上角頂點為坐標原點。根據(jù)如圖5所示的道路的交通標志線設定圖像中的網(wǎng)格線,對應到如圖6所示的實際道路中的網(wǎng)格線和坐標系。通過在圖像上取點獲取像素坐標即可以計算出圖像網(wǎng)格中每條直線的方程,從而得到各線交點的坐標。在實際道路中,由道路的寬度和交通標志線得到實際網(wǎng)格的交點坐標,這兩類交點坐標有一一對應的關系。根據(jù)這些點坐標的對應,可以找到一個函數(shù)關系來反映圖像中所有點的坐標到實際坐標的映射。
???
??? 由于圖像上不同位置的點,其非線性形變的程度不同,所有點都對應同一個映射關系不能保證校正的準確性。為了使坐標的變換更為準確,可以建立小網(wǎng)格模型。在圖像中的每一個網(wǎng)格上取若干個點,分別對應到實際網(wǎng)格的若干個點上,由這些點的坐標對應關系建立每個網(wǎng)格的坐標映射函數(shù)。這樣在進行非線性坐標變換時,首先判斷被計算點所處的網(wǎng)格位置,再選擇相應的映射函數(shù)進行變換。
??? 當確切的函數(shù)難以求得時,通常采用近似的方法來盡可能地逼近所求函數(shù)。這里采用曲線擬合的最小二乘法[6]來求映射函數(shù)。取基底為:
???
??? 則所求的映射函數(shù)用矩陣表示為:
???
式中,(x,y)為圖像中的像素坐標,(X,Y)為轉換后標準坐標。
??? 將得到的斑塊邊界點的像素坐標,經(jīng)非線性算法校正后得到邊界點的實際坐標值,從而可以計算實際斑塊的大小和面積、斑塊間的距離等。根據(jù)這些恢復后的參數(shù)來對斑塊進行聚合,得到車輛的排隊長度。
4 實驗結果
??? 將上述斑塊處理算法與非線性校正算法相結合的車流檢測算法應用于實際的交通檢測中,以檢驗算法的有效性。
??? 以上海龍陽路段為檢測對象,對圖像進行二值化且經(jīng)斑塊處理后,得到某時刻的車輛隊列斑塊如圖7所示(已除噪處理)。聚合后的隊列斑塊的外接四邊形在圖像中的信息如表1前兩列所示;經(jīng)非線性校正后得到的該斑塊實際信息如表1后兩列所示。由上下兩條邊的平均縱坐標值可計算得到實際道路中的隊列長度為111.2米,檢測的平均誤差為1.4%。
????
?
??? 該斑塊處理算法只對車道范圍進行分析處理,而不是對整個圖像進行處理,所以其實現(xiàn)速度較快,能滿足視頻監(jiān)控系統(tǒng)的實時性要求。
??? 本文通過對二值圖像中的斑塊進行分析,將不規(guī)則的斑塊按一定的條件聚合為整車,再根據(jù)車輛間的信息關系聚合為隊列斑塊,提出了基于斑塊分析的車輛排隊檢測算法。考慮到圖像的非線性形變,提出了基于圖像網(wǎng)格的校正算法,對參數(shù)進行恢復,使測得的隊列長度更為準確。實驗結果表明,該算法有較高的檢測精度,其處理速度能滿足實時性要求,能很好地應用于智能交通管理中。
參考文獻
[1] ROURKE A,BELL M G H.Quene detection and congestion monitoring using image processing[J].Traffic Eng.& Control,1991:411-421.
[2] 李巖,張學工.應用圖像處理方法自動檢測路口車輛排隊長度[J].計算機應用與軟件,2003,(12):47-49.
[3] KOLLER D.Moving object recognition and classification?based on recursive shape parameter estimation[J].in Proc.12th Israel Conf.Artificial Intelligence,Computer Vision,Dec.1993:27-28.
[4] BEYMER D,MCLAUCHLAN P,COIFMAN B,et al.A?real-time computer vision system for measuring traffic?parameters[J].IEEE Conf.Computer Vision and Pattern?Recognition,Puerto Rico,June 1997:496-501.
[5] 韓鳳磊,龐其昌.一種圖像非線性形變的恢復方法[J].光學技術,2003,(5).
[6] 沈劍華.數(shù)值計算基礎[M].上海:同濟大學出版社,1999.