基于圖像處理的智能交通信號(hào)系統(tǒng)設(shè)計(jì)*
*基金項(xiàng)目:遼寧省大學(xué)生創(chuàng)新項(xiàng)目,項(xiàng)目編號(hào):X202210143043
本文引用地址:http://cafeforensic.com/article/202304/445977.htm社會(huì)經(jīng)濟(jì)逐步發(fā)展,汽車(chē)制造行業(yè)興起,使我國(guó)汽車(chē)保有量大幅增加,但城市道路因各種原因無(wú)法進(jìn)行擴(kuò)建,易導(dǎo)致交通擁堵。在早高峰時(shí)間可能出現(xiàn)大量車(chē)在等紅燈,而另一方向路口卻很少有車(chē)輛通行。這種固定信號(hào)周期控制造成的交通擁堵,大大限制了交叉路口的通行能力。若信號(hào)燈綠燈時(shí)間可以隨著車(chē)況進(jìn)行調(diào)整,那這種情況將得以改善。由于人工統(tǒng)計(jì)車(chē)流量易造成遺漏且過(guò)于耗費(fèi)人力,地下線(xiàn)圈統(tǒng)計(jì)則安裝成本高且維護(hù)困難。
由此可見(jiàn),一個(gè)能隨著車(chē)流變化的智能交通信號(hào)系統(tǒng)尤為重要。在車(chē)流密集的道路上增長(zhǎng)綠燈時(shí)間,在車(chē)流稀少的路口相應(yīng)減少。利用視覺(jué)處理的方式避免安裝傳感器帶來(lái)的高成本、高維護(hù),減少對(duì)人力的投入。
1 系統(tǒng)總體方案設(shè)計(jì)
針對(duì)上述背景,設(shè)計(jì)了基于圖像處理的智能交通信號(hào)燈控制系統(tǒng),該系統(tǒng)在OpenCV 平臺(tái)的基礎(chǔ)上,利用Python語(yǔ)言編寫(xiě),并以樹(shù)莓派為主控。在使用過(guò)程中連接高清攝像頭實(shí)時(shí)捕捉路上車(chē)輛行駛的視頻圖像,經(jīng)過(guò)OpenCV 計(jì)算機(jī)視覺(jué)庫(kù)對(duì)圖像的處理,獲取車(chē)流輛、車(chē)輛排隊(duì)長(zhǎng)度,通過(guò)智能算法對(duì)下一刻汽車(chē)的數(shù)量進(jìn)行預(yù)測(cè)。根據(jù)此計(jì)算結(jié)果,調(diào)整交通信號(hào)燈的時(shí)間,以此實(shí)現(xiàn)智能交通信號(hào),改善交通狀況,使十字路口通行更加順暢。
2 硬件控制核心選擇
本設(shè)計(jì)需要對(duì)路面進(jìn)行抓拍、圖像處理以及計(jì)算等任務(wù)??梢允褂肙penMV 硬件或樹(shù)莓派+OpenCV+ 攝像頭。OpenCV 是一個(gè)跨平臺(tái)的計(jì)算機(jī)視覺(jué)庫(kù),有著多種計(jì)算機(jī)視覺(jué)的算法。而OpenMV 是視覺(jué)模塊硬件,本質(zhì)是一個(gè)STM32 單片機(jī)。在圖像處理方面,OpenCV更占優(yōu)勢(shì);在性能方面,OpenMV 在處理大量數(shù)據(jù),運(yùn)行實(shí)時(shí)性系統(tǒng)會(huì)比較吃力,樹(shù)莓派性能較高可以搭載OpenCV 運(yùn)行庫(kù),對(duì)圖像數(shù)據(jù)進(jìn)行處理,可以運(yùn)行更多算法。同時(shí),在公路上一般都裝載攝像頭,可以直接接入樹(shù)莓派進(jìn)行使用,更為方便。故采用樹(shù)莓派+OpenCV+ 攝像頭進(jìn)行開(kāi)發(fā)較為妥當(dāng)。
3 系統(tǒng)程序設(shè)計(jì)
首先利用OpenCV 庫(kù)對(duì)視頻流進(jìn)行獲取,對(duì)路面的車(chē)流的每一幀進(jìn)行處理,調(diào)節(jié)合適的參數(shù)使車(chē)輛凸顯出來(lái),并使用幀差法實(shí)現(xiàn)目標(biāo)跟蹤,用虛擬線(xiàn)圈法進(jìn)行統(tǒng)計(jì)車(chē)流量。把得到的平均車(chē)流量、車(chē)輛排隊(duì)長(zhǎng)度輸入到模糊控制器中得到一個(gè)更加合理的綠燈時(shí)間。程序設(shè)計(jì)流程如圖1 所示:
圖1 程序設(shè)計(jì)流程圖
3.1 圖像預(yù)處理
在圖像預(yù)處理中,需要對(duì)形態(tài)學(xué)進(jìn)行了解。這是對(duì)圖像處理和描述的有力工具,其在計(jì)算機(jī)視覺(jué)、數(shù)據(jù)處理方面有著廣泛的應(yīng)用。
視覺(jué)圖像處理就是運(yùn)用數(shù)學(xué)形態(tài)學(xué),它可分為二值形態(tài)學(xué)和灰度形態(tài)學(xué)。其主要的運(yùn)算就是腐蝕( 式1)、膨脹( 式2)。腐蝕會(huì)縮小白色部分,使輪廓更加的細(xì)化,一般處理用于處理離散點(diǎn),將兩個(gè)不同物體的連接斷開(kāi)。膨脹會(huì)增大白色部分,使輪廓更加粗壯,一般處理一個(gè)物體內(nèi)部像素點(diǎn)不全的問(wèn)題。
在此過(guò)程中,設(shè)置腐蝕、膨脹內(nèi)核,使用Numpy 庫(kù)進(jìn)行進(jìn)行卷積核的設(shè)定kernel = np.ones((6, 6), np.uint8)更改數(shù)值可以對(duì)核的形狀和尺寸進(jìn)行設(shè)定。即可得到一個(gè)尺寸相同的矩陣。這時(shí)就可以對(duì)矩陣中選定的形態(tài),進(jìn)行腐蝕、膨脹將形狀提取出來(lái)。二值化圖像如圖2 所示、腐蝕膨脹結(jié)果如圖3 所示:
3.2 車(chē)流量檢測(cè)設(shè)計(jì)
1)車(chē)輛目標(biāo)跟蹤
車(chē)輛目標(biāo)跟蹤采用幀差分法進(jìn)行目標(biāo)跟隨通過(guò)cv2.cvtColor()函數(shù)對(duì)這這一幀與上一幀圖像轉(zhuǎn)為灰度圖像,并通過(guò)高斯濾波消除噪音,以減小光線(xiàn)變化或攝像頭輕微晃動(dòng)引起的噪聲,而后使用cv2.absdiff() 對(duì)這附近兩幀進(jìn)行差分,得到兩張圖的差異之處。采用二值化處理,將車(chē)輛從圖中提取出來(lái)。最后將兩幀圖片變化的地方進(jìn)行腐蝕、膨脹處理,獲得更加明顯的差異。并不斷迭代形成一個(gè)連續(xù)的圖像。但這種方式精度略低,可以使用改進(jìn)方法:多幀間差分法[1],將當(dāng)前幀、前后相鄰兩幀像素的灰度值進(jìn)行運(yùn)算,通過(guò)3 幀圖像差分得到完整目標(biāo)輪廓。
通過(guò)上述方法獲得差異,利用cv2.findContours 進(jìn)行對(duì)所有輪廓點(diǎn)的儲(chǔ)存,并將輪廓添加到原始幀中,從而持續(xù)跟蹤目標(biāo)。目標(biāo)跟蹤算法如圖4 所示:
圖4 目標(biāo)跟蹤算法
這種方法與傳統(tǒng)的在路面下方安置物理線(xiàn)圈類(lèi)似,但物理線(xiàn)圈有著維護(hù)費(fèi)用高,易造成道路損壞等問(wèn)題。使用虛擬線(xiàn)圈計(jì)數(shù)成本低,檢測(cè)也更為方便。運(yùn)用視覺(jué)處理,以道路單一方向的車(chē)流為基礎(chǔ),在視頻的中央處垂直與車(chē)道線(xiàn)畫(huà)一條虛擬檢測(cè)線(xiàn)。每當(dāng)車(chē)輛穿過(guò)這條檢測(cè)線(xiàn)時(shí),車(chē)流量計(jì)數(shù)加一,并在這輛車(chē)離開(kāi)攝像頭的范圍將其計(jì)數(shù)減一。通過(guò)這種方式實(shí)時(shí)記錄車(chē)流量。
在判斷車(chē)輛是否穿過(guò)這條虛擬檢測(cè)線(xiàn),利用數(shù)學(xué)幾何中的叉乘。以下為正方向時(shí),車(chē)輛1 在線(xiàn)圈上方AC×AD 即為正、車(chē)輛2 在線(xiàn)圈下方BC×BD 為負(fù)??傻弥诰€(xiàn)圈上方時(shí)結(jié)果為正,下方為負(fù)。所以當(dāng)觀察到的目標(biāo)計(jì)算值由正變?yōu)樨?fù)時(shí),就可以確定有車(chē)穿過(guò)了虛擬線(xiàn)圈,進(jìn)而實(shí)現(xiàn)計(jì)數(shù)功能。虛擬線(xiàn)圈理論示意圖如圖5 所示、車(chē)流量計(jì)數(shù)測(cè)試圖如圖6 所示:
3.3 車(chē)輛排隊(duì)長(zhǎng)度獲取
要完成對(duì)車(chē)隊(duì)長(zhǎng)度的測(cè)量,需將圖像二值化處理將背景與車(chē)輛進(jìn)行分離。利用基于模板的快速單車(chē)道提取[5], 這是一種模板化的方法,由于車(chē)道線(xiàn)在任意一幀圖像中的位置是不變的,因此可以利用模板圖像對(duì)任意一幀圖像進(jìn)行模板化處理,以直接完成該幀圖像的單車(chē)道提取。由于圖片的橫向缺失故需進(jìn)行膨脹處理,使白色圖像更加豐滿(mǎn),最后對(duì)像素長(zhǎng)度進(jìn)行獲取,得到圖片中車(chē)輛的排隊(duì)長(zhǎng)度。車(chē)輛排隊(duì)長(zhǎng)度程序設(shè)計(jì)流程圖如圖7所示:
圖7 車(chē)輛排隊(duì)長(zhǎng)度程序設(shè)計(jì)流程圖
3.4 模糊控制器設(shè)計(jì)
一般十字路口變化基本為:①南北直行綠燈、東西直行紅燈50 s。②南北路口黃燈閃爍3 s、東西路口繼續(xù)紅燈。③南北直行路口紅燈、東西直行路口綠燈50 s。④南北直行紅燈、東西路口黃燈閃爍。這4 個(gè)反復(fù)循環(huán)是十字路口的基本規(guī)則,南北或東西路口的左轉(zhuǎn)、右轉(zhuǎn)都穿插在這直行信號(hào)之間,使各個(gè)車(chē)輛能夠安全地通過(guò)。但車(chē)流量會(huì)隨著交通情況實(shí)時(shí)改變,很難建立一個(gè)完美的信號(hào)周期。由于模糊控制是一種基于特定規(guī)則和專(zhuān)家經(jīng)驗(yàn)的控制思路,于人們的認(rèn)知誕生的算法,它不需要特別精確的數(shù)學(xué)模型也可以得到想要的效果。故采用模糊控制策略得出相對(duì)合理的、符合當(dāng)時(shí)道路的交通信號(hào)周期。
1)參數(shù)設(shè)置
模糊化處理是將獲取到的南北通行平均車(chē)流量Rsn 、東西通行平均車(chē)流量Rew 、南北車(chē)輛排隊(duì)長(zhǎng)度Lsn、東西車(chē)輛排隊(duì)長(zhǎng)度Lew 這4 個(gè)參數(shù)進(jìn)行模糊評(píng)級(jí)。將車(chē)流量密集程度分為4 個(gè)等級(jí)擁堵、稠密、正常、基本沒(méi)有車(chē)輛通行并對(duì)其分別賦值9、6、3、0。給車(chē)輛排隊(duì)長(zhǎng)度也分為4 個(gè)等級(jí)極長(zhǎng)、長(zhǎng)、一般、基本沒(méi)有車(chē)輛停止,也分別賦值為4、3、2、1。在進(jìn)行模糊化后開(kāi)始模糊推理,由于模糊推理的輸出結(jié)果是模糊量,需要使用式(3)(4)得出清晰化結(jié)果。模糊控制器算法設(shè)計(jì)圖如圖8 所示:
圖8 模糊控制器算法設(shè)計(jì)圖
2)參數(shù)獲取與優(yōu)化算法
當(dāng)處于①信號(hào)狀態(tài)時(shí),獲取南北通行平均車(chē)流量Rsn 處于②狀態(tài)時(shí)獲取東西車(chē)輛排隊(duì)長(zhǎng)度Lew 、處于③狀態(tài)時(shí)獲取東西通行平均車(chē)流量Rew 、處于④狀態(tài)時(shí)獲取南北車(chē)輛排隊(duì)長(zhǎng)度Lsn 。
在進(jìn)行①②③狀態(tài)后于④狀態(tài)的黃燈時(shí)間,整理獲取到交通情況的各個(gè)參數(shù)后,開(kāi)始對(duì)新一輪的南北綠燈時(shí)間Tsn和東西綠燈時(shí)間Tew進(jìn)行評(píng)估(K 默認(rèn)為1)。
通過(guò)這樣的方式不改變信號(hào)周期的總時(shí)長(zhǎng) ,當(dāng)哪個(gè)方位車(chē)流量增多,并以排隊(duì)時(shí)間之比進(jìn)行倍增,對(duì)于不同情況可以調(diào)節(jié)K 值,減小或增大ΔT 的范圍,提高了本優(yōu)化算法的適應(yīng)性,使其更加適合交通情況。
4 結(jié)束語(yǔ)
本文主要介紹了基于圖像處理的智能交通信號(hào)系統(tǒng),利用目標(biāo)跟蹤與虛擬線(xiàn)圈法得到路口車(chē)流量的稠密程度,并設(shè)計(jì)了模糊控制器,它可以根據(jù)車(chē)流量、車(chē)輛排隊(duì)長(zhǎng)度對(duì)路口的綠燈時(shí)間進(jìn)行適當(dāng)調(diào)整,這種能夠按照交通路口擁堵程度自行更改綠信比的智能交通信號(hào)系統(tǒng)可以大大提升十字路口的通行效率,使社會(huì)資源分配的更加合理,有效解決交通擁堵的現(xiàn)象。
參考文獻(xiàn):
[1] 宮金良,陳濤,張彥斐,等.一種基于多區(qū)域信息融合約束的改進(jìn)幀間差分目標(biāo)檢測(cè)與跟蹤算法[J].江蘇大學(xué)學(xué)報(bào)(自然科學(xué)版),2022,43(3):302-309.
[2] 文豐,王樂(lè)群,張凱華.基于ZYNQ加速的幀差法運(yùn)動(dòng)目標(biāo)檢測(cè)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2022,22(6):74-78.
[3] 李春明,楊?yuàn)?遠(yuǎn)松靈.結(jié)合幀差法與窗口搜索的車(chē)道線(xiàn)跟蹤方法[J].太赫茲科學(xué)與電子信息學(xué)報(bào),2022,20(4):372-377.
[4] 黃大君,吳昊.基于虛擬線(xiàn)圈的車(chē)速檢測(cè)算法研究[J].蘭州文理學(xué)院學(xué)報(bào)(自然科學(xué)版),2020,34(1):76-81.
[5] 林彬.基于圖像處理的智能交通信號(hào)燈控制系統(tǒng)的研究[D].哈爾濱:哈爾濱工業(yè)大學(xué),2011.
(本文來(lái)源于《電子產(chǎn)品世界》雜志2023年4月期)
評(píng)論