胡宇博,劉志東,殷婉婷
(吉林農業科技學院 電氣與信息工程學院,吉林 吉林 132101)
現如今,城市中絕大多數路口的交通信號燈系統采用的是固定時間變化方式,這種系統不能根據交叉路口的車輛情況進行靈活地改變,各個方向道路的通行時間是一成不變的,給居民的日常出行和生活帶來了極大的不便,影響我國社會經濟的發展[1-3]。 這種交通燈分布不合理的現象造成了大量的能源浪費,使得交通效率低下。 如何智能化交通燈控制系統已成為解決交通路口擁堵問題的關鍵因素之一[4-6]。
基于機器視覺的交通流檢測屬于非接觸檢測技術,交通流圖像由安裝在十字路口的攝像機獲取。 當攝像機檢測到車輛已進入規定的拍攝范圍時,會立即捕捉到該車輛,并將所捕捉到的圖像數據發送到控制器進行相應的處理和分析,以獲取用于智能調節的路段交通燈[7-8]。
本系統功能的實現主要基于樹莓Pi 的圖像處理功能和ZigBee 的數據傳輸與處理功能的結合。 1,2,3 和4 分別對應交通路段的4 個十字路口。 設備是:攝像機、ZigBee 從機、交通燈、數碼管。 這4 個路段的功能實現過程主要是負責該路段的攝像機每5 s 鐘采集一次該路段的路況,并將圖像通過有線傳輸到樹莓Pi 控制板,樹莓Pi 控制板提取4 個路段的路況圖像。 根據預編程程序處理交通流數據,獲得每個路段的交通燈持續時間指令,再將交通燈持續時間指令通過有線傳輸到ZigBee 主機,ZigBee 主機進行無線傳輸。 該命令發送給相應路段中的ZigBee 從機,每個路段上的ZigBee 從機控制該路段交通燈的持續時間和顏色變化。 通過這種方式,可以實現智能控制交通燈時間的效果。 每次數據提取和命令傳輸只會影響下一個紅綠燈持續時間,即在此時間段內每5 s 更新一次下一個紅綠燈持續時間命令。 命令替換,使用最新命令作為當前持續時間結束時的下一個紅綠燈持續時間[9-10]。
樹莓派安裝Linux。 在Linux 環境下開發,具有很大的擴展性,可以調用別人已經編寫好的、成熟的技術庫,方便發展[11]。
在樹莓派中安裝OpenCV。 OpenCV 是一個在BSD許可下分發的跨平臺計算機視覺庫,可在眾多主流的操作系統上運行。 它是由一系列的C 函數和少量的C++類組成的視覺庫。 除此之外,OpenCV 還提供了Python,Ruby,Matlab 等語言的接口,十分方便快捷,并借此實現了圖像處理和計算機視覺中非常多的常用算法。 OpenCV _ creatsamples 生 成 器 和 OpenCV _trainCASCADE 分類器用于訓練分類器以識別汽車。TensorFlow 是谷歌于2015 年9 月為其研發的二代人工智能系統發布的開源機器學習軟件庫。 它既是執行的框架,又是實現機器學習算法的接口。 TensorFlow 支持多種開發語言,支持移植到異構系統上并可以進行異構分布式系統部署。 TensorFlow 同時支持線性回歸、邏輯回歸、隨機森林等深度學習算法,用于構建深度學習網絡,實現紅綠燈根據變化的實時學習和優化功能的交通流量。
OpenCV_createsamples 用于準備正樣本數據和訓練測試數據。 OpenCV_createsamples 能生成OpenCV_haartraining和OpenCV_traincascade 程序支持的正樣本數據。
OpenCV_performance 可評估分類器的質量,但只能評估OpenCV_haartraining 的分類器輸出。 它讀取一組帶標簽的圖像,運行分類器并報告性能,比如檢測到的對象的數量、漏檢的數量、誤報的數量以及其他信息。
傳統的背景去除算法是從當前圖像中減去背景圖像,剩下的就是車輛圖像。 在很多情況下,背景提取并不是那么理想,而且經常會夾雜一些其他的殘留陰影。 傳統的背景提取算法無法避免背景中殘留的運動車輛信息,因此難以區分前后背景中的數據信息。 本設計采用順序輪廓差異捕獲算法來避免背景提取的多變量元素。
使用邊緣提取能大幅度地提升車輛圖像捕捉的成功率。 鑒于攝像頭一般安裝在道路的一側,所以在提取的圖像中,車輛的行駛路線都是按圖像的對角線行駛。因此可以采用Robert 算子進行邊緣檢測。 Robert 算子是一種最簡單的基本算子,利用局部差分算子尋找到邊緣算子。 Robert 邊緣算子是一個2×2 的模板,采用的是對角方向相鄰的兩個像素之差。 從圖像處理的實際效果來看,邊緣定位較準,更容易識別成塊物體的圖像。
具體實現如下:

其中,G(i,j)為經Robert 處理后的圖像,(i,j)為像素點。
首先,利用OTSU 確定閾值:

其中,u為整個圖像的均值;w0為前景點占圖像比例;u0為前景均值;w1為背景點占圖像比例;u1為背景均值;t為前景與背景的分割閾值。
g(t)就是分割閾值為t時的類間方差表達式。OTSU 算法使得g(t)取得全局最大值,當g(t)為最大時所對應的t為最佳閾值,從而得到汽車的基本輪廓。
使用前后兩幀圖像對比,進行差影檢測:

其中D(i,j,k+1)為輪廓捕捉的后一幀圖像。P(i,j,k)為該時刻的圖像,k為時間變量。 在實現二值化后,車輛輪廓所在像素值為1,而背景圖像像素值為0。當拍攝移動車輛的時候,該時刻圖像的車尾處像素值為1。 隨著車輛向前運動,后一幀圖像的相對位置就變成了公路(背景)為0。 此方法可以避免背景輪廓對車輛輪廓識別的干擾,如欄桿,車道,斑馬線等。 提高了車輛捕捉的正確率。

無線傳輸模塊是檢測紅綠燈和樹莓派的數據連接部分,主要傳輸控制命令、狀態信息和檢測數據。ZigBee 主模塊采用The SerialApp 協議棧提供的ZigBee無線串口數據透傳、全雙工通信和流控。 在數據超時或丟包的情況下,具有數據重復功能,實現一個協調器和一個節點之間的數據傳輸。 在一般的 ZigBee 通信中,默認使用密鑰設備來查找目的節點的地址。 由于系統硬件不同,設備不使用關鍵外設,所以屏蔽了通過關鍵模式獲取目標地址的方法,采用上電自動地址匹配的方法(見圖1)。

圖1 ZigBee 程序流程
本設計有別于傳統紅綠燈的控制方法,提出了基于人工智能中深度學習方面的機器視覺紅綠燈時長智能控制系統的設計方案。 基于機器視覺的交通流量監測與紅綠燈智能控制系統實現閉環控制,有效解決了時序控制方式適應性差、時間分配不合理、感應控制方式不足等問題。 可根據路段的車流量實時調整各路段的交通信號燈時間,解決人流較少的路段綠燈時間長造成的交通擁堵和資源浪費問題,提高交通出行效率,緩解道路交通壓力。