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