譚超友,朱海榮,呂 濤,丁世賢
(廣西科技師范學(xué)院 廣西 來賓 546199)
隨著高層建筑日益增加,高空拋物傷人事件時(shí)有發(fā)生,輕則破壞環(huán)境衛(wèi)生,影響居民日常生活,重則直接造成重大人身傷亡和財(cái)產(chǎn)損失。社會各界對建立高空拋物監(jiān)測系統(tǒng)的呼聲越來越高。近年來,機(jī)器視覺(Machine vision)逐漸走進(jìn)人們的視野,它是人工智能(AI)的一個(gè)基本分支,是指利用計(jì)算機(jī)對圖像進(jìn)行處理、分析和理解,以識別各種不同目標(biāo)和對象的技術(shù),是一門涉及生物醫(yī)學(xué)、統(tǒng)計(jì)學(xué)、計(jì)算機(jī)科學(xué)、圖像處理、模式識別等諸多領(lǐng)域的交叉學(xué)科[1-2]。本文研究的高空拋物預(yù)警系統(tǒng)運(yùn)用機(jī)器視覺技術(shù),通過視頻錄像進(jìn)行實(shí)時(shí)監(jiān)控與分析,追蹤疑似高空拋物物體,做出預(yù)警和反饋。本文設(shè)計(jì)了一種基于STM32的高空拋物預(yù)警系統(tǒng),主要由OV2640攝像頭、STM32單片機(jī)、蜂鳴器以及軟件系統(tǒng)構(gòu)成,判斷出背景與移動物體的區(qū)別并進(jìn)行鎖定,并進(jìn)行去噪處理,該系統(tǒng)具有監(jiān)測靈敏度高、成本低、不受天氣環(huán)境影響等優(yōu)點(diǎn),能夠精確定位高空拋物的具體位置并實(shí)時(shí)發(fā)送警報(bào)信號,提醒路上行人及時(shí)躲避,既能起到事后追責(zé)的作用,也起到事前預(yù)防的作用[3-4]。
本系統(tǒng)由硬件部分和軟件部分組成。硬件主要由OV2640攝像頭、STM32單片機(jī)、蜂鳴器、LED等以及語音報(bào)警系統(tǒng)構(gòu)成,主要負(fù)責(zé)收集圖像信息,形成一套能感應(yīng)環(huán)境并做出反應(yīng)的裝置。軟件部分由具有豐富的函數(shù)庫以及兼容性良好的python技術(shù),結(jié)合Micropython解釋器用于處理圖像信息等系統(tǒng)構(gòu)成,主要處理數(shù)據(jù)并將獲取到的數(shù)據(jù)通過網(wǎng)絡(luò)反饋至服務(wù)器。
本套系統(tǒng)使用STM32-F407ZGT6開發(fā)板作為核心部件,圖像算法部分在此開發(fā)板上進(jìn)行運(yùn)算。模塊外擴(kuò)了IO口、UART、SPI、IIC、CAN通信接口,方便用戶拓展使用[5],使用OV2640攝像頭實(shí)時(shí)監(jiān)控高空情況,把接收到的視頻信息傳輸至開發(fā)板進(jìn)行視頻處理,當(dāng)視頻信息判斷為有物體掉落時(shí),發(fā)出報(bào)警指令,傳輸至報(bào)警模塊,以及存儲模塊,實(shí)現(xiàn)報(bào)警及存儲功能,之后將數(shù)據(jù)信息反饋到服務(wù)器實(shí)現(xiàn)數(shù)據(jù)可視化顯示。硬件設(shè)計(jì)圖如圖1所示。
圖1 硬件設(shè)計(jì)圖
主控板采用Open系列,芯片使用STM32-F407ZGT6,如圖2(a)所示,它帶有豐富的擴(kuò)展接口,支持各類外圍模塊的接入,方便對高空拋物監(jiān)視與預(yù)警。核心板(STM32-F407ZGT6)中DCMI接口方便接入OV2640攝像頭模塊,如圖2(b)所示;Ethernet接口方便接入以太網(wǎng)模塊,如圖2(c)所示;其電路原理圖如圖3所示。
圖2 硬件展示圖
圖3 電路原理圖
通過報(bào)告顯示城市高空墜物的種類中,“生活用品”的墜落所占比重達(dá)到了32.7%,居各項(xiàng)墜落之首[6]。通過攝像頭收集到的圖像數(shù)據(jù)進(jìn)行分析,使用背景分割器Background Subtractor進(jìn)行“生活用品”分割能夠取得良好效果,Background Subtractor是一款視頻分析專用軟件,會對視頻中的每一幀進(jìn)行“學(xué)習(xí)”并比較,計(jì)算陰影,排除檢測圖像的陰影區(qū)域,按照時(shí)間推移的方法提高運(yùn)動分析結(jié)果的準(zhǔn)確性。而且Background Subtractor不僅可以用于背景分割,還可以提高背景檢測效果。去除背景后,沒有運(yùn)動的物體,就不會出現(xiàn)白點(diǎn),將會繼續(xù)觀察并獲取圖像。當(dāng)出現(xiàn)運(yùn)動物體時(shí),捕捉白點(diǎn)進(jìn)行追蹤記錄并且報(bào)警。
整體軟件設(shè)計(jì)偽代碼如算法1所示。軟件設(shè)計(jì)框圖如圖4所示。
圖4 軟件設(shè)計(jì)框圖
算法1:
import cv2 as cv
Begin(算法開始)
# 構(gòu)造VideoCapture對象
cap
# 創(chuàng)建一個(gè)背景分割器
pBackgroundMOG
while True:
讀取視頻
當(dāng)所有幀讀取完畢后退出循環(huán)
If判斷視頻是否讀取完全
print('視頻讀取失敗或者視頻已讀取完畢')
else:
FGMask = pBackgroundMOG.apply(frame) #背景分割,并得到前景圖像
計(jì)算圖像大小并顯示得到的前景圖像,并用畫框框出圖像。
設(shè)備開啟后,設(shè)定監(jiān)控環(huán)境參數(shù),先對監(jiān)控背景進(jìn)行提取保存,后將監(jiān)控視頻與背景對比并去除提前保存的背景,區(qū)分靜態(tài)與動態(tài)效果,當(dāng)物體運(yùn)動時(shí)則在黑色的背景中顯示為白色,OV2640攝像頭不斷地將實(shí)時(shí)監(jiān)控畫面和歷史監(jiān)控畫面進(jìn)行對比,當(dāng)特征不改變即全為黑色時(shí),沒有發(fā)生像素的改變,繼續(xù)監(jiān)控對比;當(dāng)特征不一致即出現(xiàn)白色的圖像時(shí),通過OpenCV算法進(jìn)行視頻物體跟蹤、判斷,排除干擾項(xiàng),去除噪聲干擾。根據(jù)上述算法計(jì)算出有物體下落,即與系統(tǒng)預(yù)先保存背景進(jìn)行比對,即可鎖定拋物房間的具體位置,預(yù)警系統(tǒng)中的揚(yáng)聲器與LED燈發(fā)出預(yù)警,同時(shí)將信息傳送給服務(wù)器并記錄信息,為追究拋物者的責(zé)任提供佐證。
主要利用cv2中的create Background Subtracto KNN[7]判斷出背景與移動物體的區(qū)別并進(jìn)行鎖定:創(chuàng)建KNN的混合高斯模型,作用是判斷靜態(tài)背景,而主要參數(shù)是在幀數(shù)范圍內(nèi)像素沒有發(fā)生變化,則判斷此幀為背景。此算法實(shí)際運(yùn)用實(shí)例:黑白圖像為右側(cè)行人在15幀之前留下的圖像不同,所以顯示為白色的輪廓以此確定移動物體的具體位置,此時(shí)則可根據(jù)輪廓找到中心點(diǎn)進(jìn)行輪廓確定,以確定物體運(yùn)動的軌跡。去除背景前后對比圖如圖5所示。
圖5 去除背景前后對比圖
基于背景減除法的視頻序列運(yùn)動目標(biāo)檢測算法[8],主要作用是降低減除法針對光線變化、噪聲和局部運(yùn)動等因素對運(yùn)動目標(biāo)檢測的效果。
(1)使用cv2.morphologyEx(形態(tài)學(xué)去噪聲)
morphologyEx函數(shù)是一種形態(tài)學(xué)變化函數(shù)。數(shù)學(xué)形態(tài)學(xué)可以理解為一種濾波行為,因此也稱為形態(tài)學(xué)濾波。對于錄制圖像中出現(xiàn)的噪聲,首先利用cv2.morphologyEx進(jìn)行形態(tài)學(xué)去噪聲處理,以便能更精確地確定運(yùn)動物體位置,濾波中用到的濾波器,在形態(tài)學(xué)中稱為結(jié)構(gòu)元素。結(jié)構(gòu)元素往往是由一個(gè)特殊的形狀構(gòu)成,如線條、矩形、圓等。
(2)使用cv2.blur(圖像濾波)
cv2.blur只取內(nèi)核區(qū)域下所有像素的平均值并替換中心元素,一般設(shè)定為3x3標(biāo)準(zhǔn)化盒式過濾器。根據(jù)算法對真彩色圖像進(jìn)行濾波,該算法可以有效地濾除圖像中的脈沖噪聲,并能較好地保持圖像的邊緣細(xì)節(jié)信息[9]。
(3)使用cv2.boxFilter(img,-1,ksize,normalize=True)方框?yàn)V波
當(dāng)normalize=True時(shí),與均值濾波結(jié)果相同,normalize=False,表示不需要進(jìn)行歸一化處理,直接使用鄰域像素值的和。當(dāng)normalize=0時(shí),因?yàn)椴贿M(jìn)行歸一化處理,因此濾波得到的值很可能超過當(dāng)前像素值范圍的最大值,從而被截?cái)酁樽畲笾?。這樣,就會得到一幅純白色的圖像。使用get Structuring Element函數(shù)會返回指定形狀和尺寸的結(jié)構(gòu)元素,然后使用cv2.boundingRect提取矩形坐標(biāo)計(jì)算中心點(diǎn),反推出矩形以及長、寬、高坐標(biāo)(x,y,w),在原圖上繪制矩形顯示掉落物品的位置,物體展示如圖6所示。
圖6 物體追蹤展示
當(dāng)軟件數(shù)據(jù)處理設(shè)置與硬件連接設(shè)計(jì)完成后,在某學(xué)院中的宿舍樓安裝攝像頭并且進(jìn)行測試。測試的主要內(nèi)容為:利用本系統(tǒng)部署攝像頭監(jiān)測樓層。監(jiān)測到高樓拋物體則記錄為準(zhǔn)確,系統(tǒng)抓捕不到拋物體則記錄為失敗。在晴天、陰天、雨天的不同天氣情況中均累計(jì)測試1 000次。實(shí)驗(yàn)結(jié)果為:在晴天準(zhǔn)確次數(shù)為980次,陰天準(zhǔn)確次數(shù)為985次,雨天準(zhǔn)確次數(shù)為897次,三個(gè)天氣狀態(tài)下,準(zhǔn)確率分別為:98%、98.5%、89.7%。測試結(jié)果顯示,雨天雖受雨滴影響,但也有較高的檢測效果。證明系統(tǒng)實(shí)用性比較高。記錄同一監(jiān)控視頻在不同分辨率下得到的參數(shù)如表1所示。系統(tǒng)的主要工作流程,為攝像頭收集數(shù)據(jù)后利用串口將數(shù)據(jù)傳輸至STM32開發(fā)板,STM32開發(fā)板中處理數(shù)據(jù),并作出反應(yīng)后傳輸信號至警報(bào)系統(tǒng)和數(shù)據(jù)控制中心。
表1 同一監(jiān)控視頻在不同分辨率下得到的參數(shù)
從實(shí)際測試結(jié)果來看,實(shí)驗(yàn)的動態(tài)物體捕捉效果較好,使用的形態(tài)學(xué)去噪聲、形態(tài)學(xué)濾波,能更有效地去除視頻中的白點(diǎn)噪聲,使得背景去除時(shí)不會將白點(diǎn)作為運(yùn)動的物體列入警報(bào)行列,并且對于較大物體的運(yùn)動較為敏感。通過同一視頻不同分辨率下關(guān)鍵幀提取的研究,利用其他分辨率的視頻圖像進(jìn)行驗(yàn)證,結(jié)果證明本文方法可行,能夠較好地實(shí)現(xiàn)給定分辨率下監(jiān)控視頻關(guān)鍵幀的提取。目前高空拋物監(jiān)測系統(tǒng)大多是以視頻監(jiān)控、圖像處理等技術(shù)為基礎(chǔ),由于受到拍攝角度、天氣、環(huán)境等因素影響,其定位精度、實(shí)時(shí)預(yù)警等問題均有一定局限性。在后續(xù)研發(fā)及改進(jìn)過程中,可以采用超聲波傳感技術(shù)與OV2640攝像頭協(xié)同作用,利用超聲波測距原理,將高空拋物瞬間檢測到的信息傳送給單片機(jī),結(jié)合圖像分割及處理技術(shù),通過監(jiān)控服務(wù)器調(diào)取高空拋物的發(fā)生時(shí)刻和具體位置,便于后續(xù)追溯高空拋物責(zé)任人。綜上所述,本文設(shè)計(jì)并實(shí)現(xiàn)了一種高空拋物監(jiān)測與警示系統(tǒng),能夠精確定位拋物位置并實(shí)時(shí)發(fā)出預(yù)警信號,具有較好的實(shí)際應(yīng)用價(jià)值和發(fā)展改進(jìn)潛力。