譚超友,朱海榮,呂 濤,丁世賢
(廣西科技師范學院 廣西 來賓 546199)
隨著高層建筑日益增加,高空拋物傷人事件時有發生,輕則破壞環境衛生,影響居民日常生活,重則直接造成重大人身傷亡和財產損失。社會各界對建立高空拋物監測系統的呼聲越來越高。近年來,機器視覺(Machine vision)逐漸走進人們的視野,它是人工智能(AI)的一個基本分支,是指利用計算機對圖像進行處理、分析和理解,以識別各種不同目標和對象的技術,是一門涉及生物醫學、統計學、計算機科學、圖像處理、模式識別等諸多領域的交叉學科[1-2]。本文研究的高空拋物預警系統運用機器視覺技術,通過視頻錄像進行實時監控與分析,追蹤疑似高空拋物物體,做出預警和反饋。本文設計了一種基于STM32的高空拋物預警系統,主要由OV2640攝像頭、STM32單片機、蜂鳴器以及軟件系統構成,判斷出背景與移動物體的區別并進行鎖定,并進行去噪處理,該系統具有監測靈敏度高、成本低、不受天氣環境影響等優點,能夠精確定位高空拋物的具體位置并實時發送警報信號,提醒路上行人及時躲避,既能起到事后追責的作用,也起到事前預防的作用[3-4]。
本系統由硬件部分和軟件部分組成。硬件主要由OV2640攝像頭、STM32單片機、蜂鳴器、LED等以及語音報警系統構成,主要負責收集圖像信息,形成一套能感應環境并做出反應的裝置。軟件部分由具有豐富的函數庫以及兼容性良好的python技術,結合Micropython解釋器用于處理圖像信息等系統構成,主要處理數據并將獲取到的數據通過網絡反饋至服務器。
本套系統使用STM32-F407ZGT6開發板作為核心部件,圖像算法部分在此開發板上進行運算。模塊外擴了IO口、UART、SPI、IIC、CAN通信接口,方便用戶拓展使用[5],使用OV2640攝像頭實時監控高空情況,把接收到的視頻信息傳輸至開發板進行視頻處理,當視頻信息判斷為有物體掉落時,發出報警指令,傳輸至報警模塊,以及存儲模塊,實現報警及存儲功能,之后將數據信息反饋到服務器實現數據可視化顯示。硬件設計圖如圖1所示。

圖1 硬件設計圖
主控板采用Open系列,芯片使用STM32-F407ZGT6,如圖2(a)所示,它帶有豐富的擴展接口,支持各類外圍模塊的接入,方便對高空拋物監視與預警。核心板(STM32-F407ZGT6)中DCMI接口方便接入OV2640攝像頭模塊,如圖2(b)所示;Ethernet接口方便接入以太網模塊,如圖2(c)所示;其電路原理圖如圖3所示。

圖2 硬件展示圖

圖3 電路原理圖
通過報告顯示城市高空墜物的種類中,“生活用品”的墜落所占比重達到了32.7%,居各項墜落之首[6]。通過攝像頭收集到的圖像數據進行分析,使用背景分割器Background Subtractor進行“生活用品”分割能夠取得良好效果,Background Subtractor是一款視頻分析專用軟件,會對視頻中的每一幀進行“學習”并比較,計算陰影,排除檢測圖像的陰影區域,按照時間推移的方法提高運動分析結果的準確性。而且Background Subtractor不僅可以用于背景分割,還可以提高背景檢測效果。去除背景后,沒有運動的物體,就不會出現白點,將會繼續觀察并獲取圖像。當出現運動物體時,捕捉白點進行追蹤記錄并且報警。
整體軟件設計偽代碼如算法1所示。軟件設計框圖如圖4所示。

圖4 軟件設計框圖
算法1:
import cv2 as cv
Begin(算法開始)
# 構造VideoCapture對象
cap
# 創建一個背景分割器
pBackgroundMOG
while True:
讀取視頻
當所有幀讀取完畢后退出循環
If判斷視頻是否讀取完全
print('視頻讀取失敗或者視頻已讀取完畢')
else:
FGMask = pBackgroundMOG.apply(frame) #背景分割,并得到前景圖像
計算圖像大小并顯示得到的前景圖像,并用畫框框出圖像。
設備開啟后,設定監控環境參數,先對監控背景進行提取保存,后將監控視頻與背景對比并去除提前保存的背景,區分靜態與動態效果,當物體運動時則在黑色的背景中顯示為白色,OV2640攝像頭不斷地將實時監控畫面和歷史監控畫面進行對比,當特征不改變即全為黑色時,沒有發生像素的改變,繼續監控對比;當特征不一致即出現白色的圖像時,通過OpenCV算法進行視頻物體跟蹤、判斷,排除干擾項,去除噪聲干擾。根據上述算法計算出有物體下落,即與系統預先保存背景進行比對,即可鎖定拋物房間的具體位置,預警系統中的揚聲器與LED燈發出預警,同時將信息傳送給服務器并記錄信息,為追究拋物者的責任提供佐證。
主要利用cv2中的create Background Subtracto KNN[7]判斷出背景與移動物體的區別并進行鎖定:創建KNN的混合高斯模型,作用是判斷靜態背景,而主要參數是在幀數范圍內像素沒有發生變化,則判斷此幀為背景。此算法實際運用實例:黑白圖像為右側行人在15幀之前留下的圖像不同,所以顯示為白色的輪廓以此確定移動物體的具體位置,此時則可根據輪廓找到中心點進行輪廓確定,以確定物體運動的軌跡。去除背景前后對比圖如圖5所示。

圖5 去除背景前后對比圖
基于背景減除法的視頻序列運動目標檢測算法[8],主要作用是降低減除法針對光線變化、噪聲和局部運動等因素對運動目標檢測的效果。
(1)使用cv2.morphologyEx(形態學去噪聲)
morphologyEx函數是一種形態學變化函數。數學形態學可以理解為一種濾波行為,因此也稱為形態學濾波。對于錄制圖像中出現的噪聲,首先利用cv2.morphologyEx進行形態學去噪聲處理,以便能更精確地確定運動物體位置,濾波中用到的濾波器,在形態學中稱為結構元素。結構元素往往是由一個特殊的形狀構成,如線條、矩形、圓等。
(2)使用cv2.blur(圖像濾波)
cv2.blur只取內核區域下所有像素的平均值并替換中心元素,一般設定為3x3標準化盒式過濾器。根據算法對真彩色圖像進行濾波,該算法可以有效地濾除圖像中的脈沖噪聲,并能較好地保持圖像的邊緣細節信息[9]。
(3)使用cv2.boxFilter(img,-1,ksize,normalize=True)方框濾波
當normalize=True時,與均值濾波結果相同,normalize=False,表示不需要進行歸一化處理,直接使用鄰域像素值的和。當normalize=0時,因為不進行歸一化處理,因此濾波得到的值很可能超過當前像素值范圍的最大值,從而被截斷為最大值。這樣,就會得到一幅純白色的圖像。使用get Structuring Element函數會返回指定形狀和尺寸的結構元素,然后使用cv2.boundingRect提取矩形坐標計算中心點,反推出矩形以及長、寬、高坐標(x,y,w),在原圖上繪制矩形顯示掉落物品的位置,物體展示如圖6所示。

圖6 物體追蹤展示
當軟件數據處理設置與硬件連接設計完成后,在某學院中的宿舍樓安裝攝像頭并且進行測試。測試的主要內容為:利用本系統部署攝像頭監測樓層。監測到高樓拋物體則記錄為準確,系統抓捕不到拋物體則記錄為失敗。在晴天、陰天、雨天的不同天氣情況中均累計測試1 000次。實驗結果為:在晴天準確次數為980次,陰天準確次數為985次,雨天準確次數為897次,三個天氣狀態下,準確率分別為:98%、98.5%、89.7%。測試結果顯示,雨天雖受雨滴影響,但也有較高的檢測效果。證明系統實用性比較高。記錄同一監控視頻在不同分辨率下得到的參數如表1所示。系統的主要工作流程,為攝像頭收集數據后利用串口將數據傳輸至STM32開發板,STM32開發板中處理數據,并作出反應后傳輸信號至警報系統和數據控制中心。

表1 同一監控視頻在不同分辨率下得到的參數
從實際測試結果來看,實驗的動態物體捕捉效果較好,使用的形態學去噪聲、形態學濾波,能更有效地去除視頻中的白點噪聲,使得背景去除時不會將白點作為運動的物體列入警報行列,并且對于較大物體的運動較為敏感。通過同一視頻不同分辨率下關鍵幀提取的研究,利用其他分辨率的視頻圖像進行驗證,結果證明本文方法可行,能夠較好地實現給定分辨率下監控視頻關鍵幀的提取。目前高空拋物監測系統大多是以視頻監控、圖像處理等技術為基礎,由于受到拍攝角度、天氣、環境等因素影響,其定位精度、實時預警等問題均有一定局限性。在后續研發及改進過程中,可以采用超聲波傳感技術與OV2640攝像頭協同作用,利用超聲波測距原理,將高空拋物瞬間檢測到的信息傳送給單片機,結合圖像分割及處理技術,通過監控服務器調取高空拋物的發生時刻和具體位置,便于后續追溯高空拋物責任人。綜上所述,本文設計并實現了一種高空拋物監測與警示系統,能夠精確定位拋物位置并實時發出預警信號,具有較好的實際應用價值和發展改進潛力。