徐 望,朱宜炳,張常泉
(江西科技學院,江西 南昌 330098)
我國經濟已由高速增長階段轉向高質量發(fā)展階段,人民群眾對生活質量的要求也在不斷提升,尤其是對自身息息相關的居住環(huán)境要求越來越高。由于社區(qū)住戶之間的相互交流往往比較少,因此良好的社區(qū)安防質量是人們選擇居住環(huán)境的一個重要因素。為了加強社區(qū)安全,高檔社區(qū)通常都會建立昂貴的專有視頻監(jiān)控網絡。近年來,隨著計算機網絡及其應用技術的不斷發(fā)展,基于廉價以太網技術的視頻監(jiān)控網絡在信息傳輸和數(shù)據(jù)處理能力等方面都有了長足進步,基于WLAN的無線視頻監(jiān)控技術也是步步跟進、不斷發(fā)展,使得普通社區(qū)也能夠以較低的成本部署視頻監(jiān)控網絡來提升社區(qū)安全性[1]。雖然基于以太網的視頻監(jiān)控網絡已經有了多種實現(xiàn)方案,但是有的方案可升級性和穩(wěn)定性較差,有的方案不夠智能,有的方案建設成本依然不便宜[2-3]。本文對基于樹莓派的視頻監(jiān)控網絡進行了研究與探索,期望能為用戶提供一種新的選擇。
樹莓派是銀行卡般大小的單板計算機,使用了ARM芯片的同時還配備了諸多外接接口,可以接入屏幕、攝像頭、鍵盤鼠標等諸多外設。2019年發(fā)布的樹莓派4代搭載1.5Ghz的64位ARM A53處理器和最大8G內存,內置的GPU支持4K分辨率的H.265視頻流,另外還集成Wi-Fi、千兆有線網卡和低功耗藍牙,USB接口也擴展到了4個。如此強大的單板機售價才35美元起步,使得很多“創(chuàng)客”想法可以利用樹莓派平臺來實現(xiàn)[4]。
運動目標偵測(Motion detection technology)又稱移動檢測,是指攝像頭對指定區(qū)域采集圖像后,利用CPU根據(jù)一定算法計算與比較判斷畫面是否發(fā)生了變化,然后和事先設定的閾值比較后做出一定的響應。比如感知到有人時則立刻進行視頻流傳輸,沒人時則停止視頻流傳輸以節(jié)省帶寬和存儲空間。比較常見的運動目標檢測算法有減背景法、幀差法和光流法這幾種[5]。
Python是一種用途廣泛的多范式編程語言,可以直接在樹莓派上運行并實現(xiàn)系統(tǒng)的業(yè)務邏輯,從而減少必須傳輸?shù)椒掌鞫说臄?shù)據(jù)量。它還可以直接與傳感器、執(zhí)行器和外設等進行交互,其解釋性特點也可以讓更改后的代碼立刻生效,使得程序的編寫和調試比其他語言快的多。Python的另一優(yōu)點就是擁有海量開源庫的支持,包括IoT庫,這些庫讓設備端的開發(fā)工作碰到困難時總能夠找到對應的解決方案[6]。
整個視頻監(jiān)控網絡的出口部分使用單核心路由設計,使用光纖線路連接外網,并在路由器上使用PAT地址轉換來實現(xiàn)內外網的劃分。同時添加ACL訪問控制列表以提升網絡的安全性,最后在核心交換機與核心路由器上運行RIPv2協(xié)議來提供動態(tài)路由。核心交換機需要高性能和高可靠設計,故選擇支持擴展的型號以便后期升級與改造,同時在核心交換機上激活DHCP,以便為樹莓派自動分配IP地址和網關,其架構如圖1所示。
圖1 基于樹莓派的視頻監(jiān)控網絡結構
R1(config)#interface FastEthernet0/0//進入接口f0/0
R1(config-if)#ip address 202.106.1.1 255.255.255.0//為接口f0/0配置IP地址和子網掩碼
R1(config)#interface FastEthernet0/1//進入接口f0/1
R1(config-if)#ip address 192.168.10.3 255.255.255.0//為接口f0/1配置IP地址和子網掩碼
//定義訪問控制列表,以list 1為例
R1(config)#access-list 1 permit 192.168.1.0 0.0.0.255
//外接口地址的服用及IP地址的動態(tài)轉換
R1(config)#ip nat inside source list 1 interface f0/0 overload
//開啟端口f0/0和f0/1的PAT功能
R1(config-if)#int f0/0//進入端口f0/0
R1(config-if)#ip nat outside//將端口f0/0劃分為外網
R1(config-if)#int f0/1//進入端口f0/1
R1(config-if)#ip nat inside////將端口f0/1劃分為內網
//添加指向外網的默認路由
R1(config-if)#ip route 0.0.0.0 0.0.0.0 f0/0
//核心路由器RIP配置,以f0/0為例
R1(config)#router rip//激活RIP協(xié)議
R1(config-router)#version 2//使用RIP-V2版本的協(xié)議
R1(config-router)#no auto-summary//關閉路由協(xié)議的自動匯總功能
//指定網段接口使能rip路由
R1(config-router)#network 202.106.1.0//以單個為例,余下的不在重復展示
SW(config)#vlan 10//創(chuàng)建VLAN 10
SW(config-vlan)#interface vlan 10//進入VLAN 10之中
SW(config-if)#ip address 192.168.1.1 255.255.255.0//給VLAN 10配置IP地址
//將對應接口劃入VLAN中,以接口f0/2為例
SW(config)#int f0/2//進入端口f0/2
SW(config-if)#Switchport mode access//強制接口f0/2成為access接口
SW(config-if)#Switchport access vlan 10//將端口f0/2劃分到VLAN 10中
//DHCP協(xié)議配置,以地址池20為例
SW(config)#ip dhcp pool 20//創(chuàng)建dhcp地址池20
SW(dhcp-config)#network 192.168.2.0 255.255.255.0
SW(dhcp-config)#default-router 192.168.2.1//默認路由設置為192.168.2.1
SW(dhcp-config)#ip dhcp excluded-add 192.168.2.1//將網關從地址池中排除
SW(config-if)#ip routing//啟用三層交換機的路由轉發(fā)功能
小區(qū)視頻監(jiān)控場景復雜多樣,為了降低網絡流量和視頻監(jiān)控服務器的存儲壓力,有必要在監(jiān)控端就對視頻流進行預處理。所以在樹莓派監(jiān)控層中加入了運動目標偵測技術,檢測到運動物體則傳輸影像,未檢測到運動物體則停止傳輸。
本文采用的方案是基于Python語言實現(xiàn)的幀差法,該方案雖然簡單但是很高效,核心編碼實現(xiàn)如下:
import cv2#導入opencv的包
import numpy as np#導入NumPy拓展,用來存儲和處理圖像矩陣
kernel=np.ones((5,5),np.uint8)#設置卷積核和圖像類型
BG=None#首先設置背景為空
camera=cv2.VideoCapture(0)
#使用VideoCapture()函數(shù)定義攝像頭對象,其參數(shù)0表示第一個攝像頭
while True:#循環(huán)讀入攝像頭的幀
ret,frame=camera.read()#參數(shù)ret表示是否讀取到幀
#使用顏色空間轉換函數(shù)創(chuàng)建灰色框架
G_frame = cv2.cvtColor (frame, cv2.COLOR_BGR2GRAY)
G_frame=cv2.GaussianBlur(G_frame,(21,21),0)#利用高斯濾波對灰色框架降噪
Continue
diff=cv2.absdiff(BG,G_frame)#將背景圖和灰色框架圖進行相減,返回差值
#把得到的幀差結果二值化
diff=cv2.threshold(diff,25,255,cv2.THRESH_BINARY)[1]#將diff圖像中灰度值小于25的點歸零,灰度值大于25的置255,THRESH_BINARY為閾值類型
#將得到的幀差結果進行膨脹處理
diff=cv2.dilate(diff,es,iterations=2)
#對得到的幀差結果進行輪廓檢索
image,cnts,hierarcchy=
cv2.findContours (diff.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
#cv2.findContours()函數(shù)返回兩個值,一個是輪廓本身,另一個是每條輪廓對應的屬性
for c in cnts:
if cv2.contourArea(c)<1500:
#將輪廓小于1500的區(qū)域舍去,這通常是噪點
為了進一步驗證方案的有效性,本次研究完成了基于樹莓派的視頻監(jiān)控終端設計,監(jiān)控終端采用紅外攝像頭,在夜晚也能獲得清晰的影像。由于樹莓派4支持IEEE802.3af以太網供電標準,一根網線即可完成供電和數(shù)據(jù)傳輸,因此大大簡化了視頻監(jiān)控網絡的布線任務。完成的視頻監(jiān)控終端實物如圖2所示,在服務器端也可以對監(jiān)控終端進行遠程管理,如圖3所示。
圖2 視頻監(jiān)控終端
綜上所述,基于樹莓派的視頻監(jiān)控方案依托已經存在的社區(qū)寬帶網絡,把廉價單板機引入到社區(qū)的安防監(jiān)控工作中,同傳統(tǒng)監(jiān)控方案相比有著極大的成本優(yōu)勢。而且樹莓派在軟件和硬件上的定制性很高,在軟件上可以實現(xiàn)各種算法,比如人臉識別和邊緣計算等,在硬件上可以添加多種傳感器和執(zhí)行器模塊,為以后的升級留下空間。隨著我國5G網絡的大規(guī)模鋪設,還可以利用5G模塊來擴大視頻監(jiān)控網絡的規(guī)模,使得廣大農村也能夠完成監(jiān)控覆蓋,從而提升社會的治安防控水平。