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