摘要:為了使車流在交通路口順暢通過,通常需要統(tǒng)計一個交通信號燈周期內(nèi)的車流量,以實現(xiàn)交通信號燈的自動配時。文中提出了一種交通路口的車流量檢測算法。通過在道路前方設(shè)置檢測線,進而統(tǒng)計檢測線灰度變化的情況,即可統(tǒng)計出通過的車流量。并對其進行FPGA的硬件仿真。實驗結(jié)果表明,此方法實現(xiàn)簡單,運算處理速度快,能夠得到較滿意的結(jié)果。
關(guān)鍵詞:交通;車流量;檢測線;FPGA
隨著經(jīng)濟的發(fā)展以及城市化進程的逐步加快,我國的車輛數(shù)量正在迅速增長,這樣就給城市交通帶來的嚴峻的挑戰(zhàn)——交通擁堵。交通擁堵不但使事故發(fā)生率加大,而且也加劇了環(huán)境污染,造成了資源浪費。為了緩解交通壓力,減少車輛延誤和環(huán)境污染,實現(xiàn)智能交通信號控制是建設(shè)資源節(jié)約型社會的必然選擇。
在我國,現(xiàn)如今交通信號控制系統(tǒng)主要采取定時控制的方式。定時控制不能根據(jù)車流量自動調(diào)節(jié)紅綠燈時間,必然會造成車輛延誤及交通擁塞等情況。因此根據(jù)具體的車流量來控制紅綠燈時間,可有效的分配交通資源,減少交通擁堵。
傳統(tǒng)的基于視頻的車流量檢測方法包括光溜檢測法,幀差法,背景消減法,邊緣檢測法等,這些方法運算復(fù)雜,處理數(shù)據(jù)量大,且易受外部環(huán)境的影響。因此文中采取一種設(shè)置檢測線的車流量檢測的方法,通過在車輛行駛的道路前方垂直于道路的方向設(shè)置檢測線,當車輛經(jīng)過時車身陰影會造成檢測線灰度值的劇烈變化,進而即可統(tǒng)計出車流量。該方法簡單易行,且處理的數(shù)據(jù)量小,運算速度快,可得到較好的結(jié)果。
1 算法設(shè)計
1.1 視頻預(yù)處理
預(yù)處理是實現(xiàn)算法的重要部分,首先將視頻分成幀序列。設(shè)置于交通路口的攝像頭拍攝到的視頻一般是1秒25幀的標準視頻格式,由于車輛一般在交通路口行駛速度不快,故而不需要十分密集的幀序列,為了減少數(shù)據(jù)處理量而又不影響實驗結(jié)果,采取隔一幀取一次的方法,這樣數(shù)據(jù)量即成為原來的一半。
將視頻分成圖像序列后,要將其轉(zhuǎn)換成灰度圖像,方可進行后續(xù)的工作,如圖1所示。通過大量實驗的驗證,轉(zhuǎn)換成灰度圖像后,使用閾值0.4,再進行二值化,可以清晰的將車身、車身前的車影與道路明顯的區(qū)分開來,如圖2所示。
由圖2可以看出,路面上有很多不連貫的黑色區(qū)域和黑點,這些噪聲會對檢測結(jié)果產(chǎn)生不利的影響,因此,將上述二值化后的圖像序列再進行中值濾波,采用5*5的檢測窗口,可以去濾掉圖像上大部分的椒鹽噪聲,起到保護邊緣信息的作用,如圖3所示。
1.2 算法實現(xiàn)
由圖2及圖3清晰可見,經(jīng)過二值化后的圖像,車身前方的陰影呈黑色,路面呈白色,因此能把車身前方的陰影部分和路面信息清晰的分隔開來。當車輛行駛到某一位置時,車身前方的陰影一定會造成車輛前方的路面上的區(qū)域的灰度值發(fā)生劇烈的變化。因此,當發(fā)生一次劇烈變化,計數(shù)器計一次數(shù),這樣即可計算出行駛過的車輛的數(shù)量。
在車輛行駛的道路前方,設(shè)置一虛擬檢測區(qū)域,便可以實現(xiàn)上述過程。傳統(tǒng)的虛擬檢測區(qū)域可以分為3類:基于特征點、基于檢測線、基于檢測窗口。于檢測點包含的信息量太少,且易受噪聲干擾;而檢測區(qū)域過大,當車輛經(jīng)過時,容易造成重復(fù)計數(shù),因此文中將采取基于檢測線的檢測方法。如圖4所示。
當車輛即將行駛到檢測線上時,車身前方的陰影會迅速覆蓋檢測線,造成檢測線上的灰度值發(fā)生劇烈的變化。通過設(shè)定閾值,若灰度變化大于閾值,可判斷為有一輛車到達,若灰度變化小于閾值,就判斷為沒有車輛通過,這樣便完成了整個檢測過程。
由上可知,我們只需處理每一幀圖像的一行像素值,因此大大減少了數(shù)據(jù)的存儲空間,從而使計算機的處理速度更快。在實際處理中,用前一幀圖像減去后一幀圖像,比較差值圖像檢測線位置的像素值,此處通過大量實驗數(shù)據(jù),設(shè)定閾值為15,若其值大于該閾值,則可判斷有車輛通過,若小于該閾值,則沒有車輛通過。所有檢測線位置像素值做差后,可得到如圖5所示的數(shù)據(jù)曲線。
由圖5可見,圖像的正值尖峰,可看做一輛車的到來,通過設(shè)定閾值,可將小的尖峰部分濾掉,小的尖峰部分是車身及車窗造成的干擾,故通過此方法,可得到具體通過路口的車輛的數(shù)量。
統(tǒng)計寬闊路口的車流量,可將整個路口分成幾個車道,對幾個車道分別用此方法進行統(tǒng)計,最終求和,即可實現(xiàn)車流量的統(tǒng)計。
2 基于FPGA的硬件仿真
FPGA即現(xiàn)場可編程門陣列,它是在PAL、GAL、EPLD等可編程器件的基礎(chǔ)上進一步發(fā)展的產(chǎn)物。它是作為專用集成電路領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點。FPGA的使用非常靈活,同一片F(xiàn)PGA通過不同的編程數(shù)據(jù)可以產(chǎn)生不同的電路功能。FPGA在通信、數(shù)據(jù)處理、網(wǎng)絡(luò)、儀器、工業(yè)控制、軍事和航空航天等眾多領(lǐng)域得到了廣泛的應(yīng)用。
文中通過使用matlab對上述算法進行仿真,我們可以得到視頻圖像每一幀的像素信息,并將該信息作為一個數(shù)據(jù)矩陣儲存到后綴名為dat的二進制數(shù)據(jù)文件中,作為FPGA硬件仿真的輸入激勵,即像素點檢測的輸入部分。
基于FPGA平臺來完成實時算法的硬件實現(xiàn),文中根據(jù)算法復(fù)雜度及資源使用情況,選取Xilinx公司的SpartanIIIXC3S50芯片完成實現(xiàn)。
XC3S50是Xilinx公司推出的SpartanIII系列中資源可用量較少的一款芯片,它包含768個slices、4塊18x18乘法器、4塊獨立RAM(每塊RAM容量為18K)。經(jīng)過綜合計算以及篩選,在節(jié)約成本的基礎(chǔ)上,確定XC3S50為交通信號燈路口的車流量檢測算法的硬件實現(xiàn)平臺。
電路設(shè)計的開發(fā)環(huán)境采用ise12.4,并使用modelsim6.5se進行硬件電路仿真。
如圖6所示,視頻幀切換脈沖到來時啟動計數(shù)器進行時序控制計數(shù),計數(shù)到37后保持,等待下一個脈沖的啟動,在計數(shù)過程中將數(shù)值輸出至其他電路。累加器接收到計數(shù)后,對每一幀更新的并行灰度信號進行逐位累加處理,當37位累加完畢,輸出累加結(jié)果至減法器。減法器在時序計數(shù)控制下將當前幀的累加值與寄存器存放的上一幀灰度累加值做差,將結(jié)果輸出至比較器。比較器將差值與門限值進行比較,如果超過門限,則輸出一個高脈沖,作為有車經(jīng)過的標志。
仿真采用的系統(tǒng)時鐘為65.536 MHz,對應(yīng)時鐘周期約為15.2 ns,如圖7所示,每一幀的處理時間僅需38*15.2 ns≈577 ns,可以滿足快速處理的需要。圖中output_signal為比較器輸出的結(jié)果,即為監(jiān)測是否有車輛通過的標志,該結(jié)果與matlab算法仿真結(jié)果完全一致。該算法實現(xiàn)簡單,有很高的實時性和可操作性。
3 結(jié)束語
文中的算法是利用Matlab編程實現(xiàn)的,而硬件實現(xiàn)是在isel2.4+modelsim6.5se的環(huán)境下編譯完成的。通過對一段3分48秒的交通路口視頻進行驗證,準確率在97%以上。文中與其他實現(xiàn)車流量統(tǒng)計的算法相比較,優(yōu)點在于完成該算法的硬件實現(xiàn),且就算法本身而言,實現(xiàn)簡單,數(shù)據(jù)處理量小,處理速度快。但該算法自適應(yīng)性較弱,容易受到外界干擾影響,需要進一步加強對檢測算法的優(yōu)化和改進研究,以提高檢測算法的準確度和自適應(yīng)性。