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