袁明昱 那真 張立
摘要:隨著科學技術的不斷發(fā)展,人們在滿足自身物質文化需求的同時,對安全的要求也逐步提高。針對傳統(tǒng)攝像頭的不足,研發(fā)了一種基于嵌入式系統(tǒng)的智能動態(tài)攝像頭。該系統(tǒng)以嵌入式樹莓派為核心,利用motion軟件實現視頻實時監(jiān)控。結合OpenCV及其python接口實現運動探測,達到跟蹤闖入者并抓拍上傳的功能。本系統(tǒng)的優(yōu)點在于開發(fā)體積小,價格低,私密性好等。
關鍵詞:嵌入式系統(tǒng);樹莓派;實時監(jiān)控;跟蹤抓拍
中圖分類號:TP277 文獻標識碼:A 文章編號:1007-9416(2018)01-0061-03
1 項目研究背景及意義
近年來,隨著科學技術的不斷發(fā)展,人們在滿足自身物質文化需求的同時,對安全的要求也逐步提高。然而,傳統(tǒng)意義上的模擬本地化監(jiān)控不僅耗費大量存儲空間和監(jiān)控設備,而且所監(jiān)控的內容大多數為無用的靜態(tài)畫面。
為有效解決傳統(tǒng)攝像頭的弊端,設計一個基于嵌入式系統(tǒng)(本文采用樹莓派)的智能動態(tài)攝像頭,既能通過網絡實時遠程觀看被監(jiān)控區(qū)域的視頻直播,還可以抓拍闖入者,實現闖入者跟蹤并將采集到的照片實時傳輸到百度云盤,最終只有這些照片被保存下來,大大節(jié)省了存儲空間。除此之外,基于嵌入式系統(tǒng)的智能動態(tài)攝像頭還具有低成本,算法簡單等優(yōu)點。
2 嵌入式系統(tǒng)的搭建
2.1 嵌入式系統(tǒng)
嵌入式系統(tǒng)是一種完全嵌入受控器件內部,為特定應用而設計的專用計算機系統(tǒng),用來控制或者監(jiān)視機器、裝置、工廠等大規(guī)模設備[1]。 與通用計算機系統(tǒng)不同,嵌入式系統(tǒng)通常執(zhí)行帶有特定要求的預先定義的任務。由于嵌入式系統(tǒng)只針對一項特殊的任務,設計人員能夠對它進行優(yōu)化,減小尺寸降低成本。嵌入式系統(tǒng)通常進行大量生產,所以單個的成本節(jié)約,能夠隨著產量進行成百上千的放大。
樹莓派就是一種嵌入式開發(fā)板,本文主要以樹莓派為核心進行設計。
2.2 樹莓派簡介
樹莓派即Raspberry Pi(RasPi/RPi),如圖1所示,只有信用卡大小的卡片式電腦,卻具有電腦的所有基本功能。其系統(tǒng)基于Linux。它是一款基于ARM的微型電腦主板,以SD/MicroSD卡為內存硬盤,卡片主板周圍有1/2/4個USB接口和一個10/100以太網接口(A型沒有網口),可連接鍵盤、鼠標和網線,同時擁有視頻模擬信號的電視輸出接口和HDMI高清視頻輸出接口,以上部件全部整合在一張僅比信用卡稍大的主板上,具備所有PC的基本功能只需接通電視機和鍵盤,就能執(zhí)行如電子表格、文字處理、玩游戲、播放高清視頻等諸多功能[2-5]。
2.3 樹莓派配置
本文均為在Windows上進行的操作。
2.3.1 首次安裝操作系統(tǒng)
因為樹莓派沒有板載存儲器,因此使用SD卡存儲數據和操作系統(tǒng)。使用SD卡之前先將SD卡格式化。用SD卡伴侶工具格式化清空SD卡上的原有數據,以便讓SD卡具有最佳性能。然后將操作系統(tǒng)的鏡像工具寫入SD卡,用流行的免費工具,Win32 Disk Imager從原始磁盤鏡像中將下載好的Raspbian操作系統(tǒng)寫入SD卡中。之后即可將SD卡插入樹莓派上的插槽[6-7]。
2.3.2 樹莓派連入互聯(lián)網
在完成了樹莓派的配置后,就到了將其接入互聯(lián)網之時。有兩種方法,一種利用無限網卡建立Wi-Fi;第二種通過PC從以太網接入互聯(lián)網。本文采用第二種方法。將樹莓派通過路由器連接有線網,使PC連接同一無線網。利用局域網IP掃描器查看樹莓派靜態(tài)IP,以后就用該IP地址從PC上訪問樹莓派。至此,樹莓派已經全部配置完成。
3 視頻實時監(jiān)控
隨著信息技術的不斷發(fā)展,人們將計算機技術引入視頻采集、制作領域。本系統(tǒng)以樹莓派3和Pi Camera為基礎搭建硬件開發(fā)平臺,基于OpenCV框架下,使用Python語言將運動檢測的一系列算法移植于嵌入式樹莓派3中,實現了抗干擾能力較強的目標檢測的嵌入式系統(tǒng)設計。
3.1 攝像頭的連接
樹莓派有一個用于連接攝像頭模塊的專用CSI接口,是一種先進的外圍設備控制器。可連接到樹莓派的攝像頭有兩種,分別是USB攝像頭和樹莓派專用攝像頭,后者的性能更為出色,因此本系統(tǒng)使用樹莓派專用攝像頭。專用攝像頭帶有兩英尺長的彈性線纜,以用于連接到樹莓派的CSI接口。
連接好攝像頭,需在配置窗口打開攝像頭,如圖2所示。按回車鍵選擇并打開。
3.2 用攝像頭傳輸實時視頻流
在局域網上將樹莓派作為網絡攝像頭以傳輸實時視頻流,用開源軟件motion在本地瀏覽器中啟用實時視頻流,motion內置了一個HTTP服務器,以用于在網絡瀏覽器中打開攝像頭圖像,用motion可以錄制MPEG格式的視頻以及捕捉JPEG格式的圖像[8],可以在任何地方存儲這些視頻和圖像。
為了實現這一功能,需要先在樹莓派上安裝motion,配置相關文件,目的是將樹莓派的IP地址和端口地址都告訴motion,然后啟動motion將視頻流實時傳輸至該IP地址和端口地址。圖3是用樹莓派拍到的一段視頻的截圖,紅色框內為IP地址。
4 動態(tài)跟蹤與捕捉
上一節(jié)已經實現了用樹莓派進行視頻的實時監(jiān)控,這只是完成了第一步,接下來實現闖入者的跟蹤與抓拍,并將抓拍到的圖片上傳至百度云Python客戶端。
4.1 運動探測
檢測到運動后,則要完成對運動者的跟蹤。
本論文采用OpenCV及其Python接口完成算法移植和軟件系統(tǒng)搭建[9-10]。OpenCV是Open Source Computer Vision(開源計算機視覺)的縮寫,是功能最強大、運用最廣泛的跨平臺圖像處理庫之一,它可以在任意硬件和軟件平臺上運行,它也可以被安裝在樹莓派上,以實現運動跟蹤。它輕量級而且高效,由一系列C函數和少量C++類構成,同時提供了Python語言的接口,實現了圖像處理和計算機視覺方面的很多通用算法[11-12]。
本論文采用圖像相減法實現運動目標的檢測和跟蹤[13],適用于背景己知且固定的場景,具有快速簡單和易于實現的特點,可以滿足計算量小、實時性好的要求。具體步驟如圖4流程圖所示[4]。
所謂圖像相減法就是先捕獲靜態(tài)的一幀,之后每隔一段時間捕捉一幅參考圖像并與第一幀相減,這兩幅圖像的差值將會傳遞給一個閾值函數以觀測兩幅圖像之間的變化,若變化數值小于規(guī)定值,則不做處理。然后利用代碼將RGB圖像轉換為灰度圖像,減小系統(tǒng)冗余。
高斯模糊是一種“數據平滑技術”,可有效過濾掉可能被誤認為運動檢測目標的高斯噪聲,避免一幀圖像中出現“假陽性”目標。
二值化圖像由灰度圖像轉化得到[15],是指圖像上的每一個像素只有兩種可能的灰度等級狀態(tài),即黑和白,用這種方法來分割目標與背景。
由于對圖像進行了閾值運算,所以圖像像素中可能存在噪聲,這會在求圖像平均值時產生錯誤結果,因此需要用腐蝕函數刪除白色物質的邊緣,即檢測目標外的小白點。
膨脹函數是腐蝕函數的逆過程,用腐蝕函數去除噪聲后,膨脹函數增強了圖像邊緣的白色像素。
目的就是讓運動目標、背景的對比更加明顯,更加有利于尋找運動目標的輪廓。
尋找輪廓就是尋找運動目標的輪廓,找到后利用函數確定目標位置,采用繪直邊界矩形的方式繪制目標位置。
4.2 運動跟蹤
在上一節(jié)已經確定了運動目標的位置。可以在屏幕中固定一個點,確定二者的差值、,控制舵機運動逐漸縮小二者差值,以達到闖入者的跟蹤效果,該效果可以直接由樹莓派實現也可以通過Arduino控制舵機間接實現。
5 實驗結果及總結
5.1 實驗結果
本文已經實現了以嵌入式樹莓派為設計平臺,結合樹莓派專用攝像頭、Arduino并運用Python語言編程實現視頻實時監(jiān)控與跟蹤。為了驗證此系統(tǒng)的可行性,在日常實驗室測試多次,驗證該系統(tǒng)為現代人的生活提供了一種簡潔可靠的監(jiān)控方式。主要完成了以下工作:
(1)本文在分析了一般嵌入式系統(tǒng)設計的基礎上,對基于視頻監(jiān)控的嵌入式系統(tǒng)進行了總體設計,并選定了嵌入式樹莓派為核心的設計。
(2)根據設計的需要,從實時性、安全性、實用性方面綜合考慮,使用motion軟件及嵌入式系統(tǒng)的以太網接口模塊對系統(tǒng)進行設計,達到視頻實時監(jiān)控與傳輸。
(3)對視頻采集處理模塊進行了詳細的軟硬件設計。結合OpenCV及Python語言,使用軟件獲取闖入者信息,控制硬件對系統(tǒng)進行相應配置。
(4)最后,對視頻實時監(jiān)控與傳輸的網絡接口模塊和視頻處理跟蹤模塊分別進行了測試和分析,驗證了系統(tǒng)設計方案的可行性。
5.2 總結
基于嵌入式系統(tǒng)的動態(tài)監(jiān)控是基于計算機技術且更加強調體積、功耗、成本、便攜化應用等綜合因素的精簡設計,具有體積小、成本低、性能優(yōu)越、工作穩(wěn)定、易于安裝和維護等優(yōu)點。
動態(tài)監(jiān)控是國內外研究的重要課題,國內外都展開了積極的研究,運動目標的檢測和跟蹤的算法發(fā)展較快,由于算法之間的可借鑒性和嵌入式平臺的可移植性,系統(tǒng)未來優(yōu)化和提升的空間巨大。
參考文獻
[1]涂剛,陽富民,胡貫榮.嵌入式操作系統(tǒng)綜述[J].計算機應用研究,2000,8(11):4-9.
[2]劉永峰.基于遠程視頻監(jiān)控的嵌入式系統(tǒng)的研究與設計[D].國防科學技術大學,2005.
[3]侯云東.基于嵌入式系統(tǒng)的視頻監(jiān)控系統(tǒng)的設計與實現[D].電子科技大學,2010.
[4]汪鑫,彭雨薇.基于樹莓派的網絡監(jiān)控系統(tǒng)的研究與實現[J].硅谷,2014(14):25-26.
[5]陸杰.基于嵌入式Linux的視頻監(jiān)控系統(tǒng)的設計與實現[D].山東大學,2011.
[6]唐旋來.基于嵌入式技術的遠程視頻監(jiān)控系統(tǒng)研究[D].湖北:華中科技大學,2011.
[7]馮志輝.使用樹莓派實現網絡監(jiān)控系統(tǒng)[J].電子技術與軟件工程,2015,(05):85.
[8]魯什·賈佳.樹莓派+傳感器[M].張夢玲,譯.機械工業(yè)出版社:2016.
[9]李濤.基于OpenCV的嵌入式視頻監(jiān)控系統(tǒng)應用研究[D].長江大學,2016.
[10]袁毅,基于嵌入式Web服務器的網絡視頻監(jiān)控[J].電網技術,2000,24(5):72-73.
[11]孔慶玲,胡志軍,劉英,等.程序復雜性度量技術分析[J].無線電工程.2011.41(2).61-64.
[12]Bradbury AIex,Everard Ben.樹莓派Python編程指南[M].王文峰,譯.北京:機械工業(yè)出版社,2015.
[13]Alexander Brock. Blackadder, Monty Python, and Red Dwarf[J]. English and American Studies in German (2001),2002,2001((Oct):16-18.
[14]胡靜波.基于OpenCV的嵌入式視頻監(jiān)控系統(tǒng)關鍵技術的研究[D].云南大學,2010.
[15]肖自美.圖像信息理論與壓縮編碼技術[M].廣州:中山大學出版社,2000.
[16]Bradbury AIex,Everard Ben.樹莓派Python編程指南[M].王文峰,譯.北京:機械工業(yè)出版社,2015.
[17]Richard BIum,Christine Bresnahan.樹莓派Python編程入門與實踐[M].北京:人民郵電出版社,2015.
[18]馮鵬.基于嵌入式系統(tǒng)的圖像跟蹤技術的設計與實現[D].西安電子科技大學,2010.
[19]埃里克·馬瑟斯.Python編程從入門到實踐[M].袁國忠,譯.人民郵電出版社,2017.
[20]康計良.Python語言的可視化編程環(huán)境的設計與實現[D].西安電子科技大學,2012.