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