,,
(蘭州理工大學(xué) 機電工程學(xué)院,蘭州730000)
用ARM9實現(xiàn)移動目標跟蹤的視頻監(jiān)控系統(tǒng)
劉磊,余淑榮,吳明亮
(蘭州理工大學(xué) 機電工程學(xué)院,蘭州730000)
提出了一種基于ARM的無線視頻監(jiān)控系統(tǒng),該監(jiān)控系統(tǒng)使用S3C2440處理器作為主控制器,并使用UVC攝像頭進行視頻數(shù)據(jù)的采集,最后利用WiFi網(wǎng)卡發(fā)送視頻數(shù)據(jù)。搭載Linux操作系統(tǒng)并利用Mjpg_streamer視頻服務(wù)器發(fā)送視頻數(shù)據(jù),然后通過自己設(shè)計的客戶端接收視頻數(shù)據(jù)。最后在基于Mean-shift算法的基礎(chǔ)之上,使用Opencv 2.4.12和VS 2010開發(fā)平臺以及C/C++編程語言實現(xiàn)了運動目標跟蹤。實驗結(jié)果表明,該監(jiān)控系統(tǒng)可以為用戶提供實時的、穩(wěn)定的、清晰的視頻圖像,并且成功實現(xiàn)了在運動背景不太復(fù)雜,運動目標慢速移動情況下的運動目標的跟蹤。
視頻監(jiān)控;ARM;Linux操作系統(tǒng);Mjpg_streamer;Mean-shift算法
隨著計算機技術(shù)、互聯(lián)網(wǎng)技術(shù)和通信技術(shù)的不斷發(fā)展,視頻監(jiān)控應(yīng)用也取得了巨大的進步與發(fā)展。目前嵌入式技術(shù)與圖像處理技術(shù)的結(jié)合已經(jīng)成為視頻監(jiān)控的主流研究方向。視頻監(jiān)控系統(tǒng)目前已被廣泛應(yīng)用諸多場合。早期的監(jiān)控系統(tǒng)由于體積大、操作不方便、價格昂貴、功能單一而無法滿足現(xiàn)代社會的需求,因此人們開始研究新一代的視頻監(jiān)控系統(tǒng),數(shù)字化的視頻監(jiān)控系統(tǒng)逐步進入人們的視野。這種新型的視頻監(jiān)控技術(shù)以嵌入式技術(shù)為核心并結(jié)合熱成像、云存儲、人臉識別等先進技術(shù),尤其是將圖像處理技術(shù)應(yīng)用在監(jiān)控系統(tǒng)中來實現(xiàn)運動目標跟蹤更加受到人們的青睞?;谇度胧郊夹g(shù)的智能圖像監(jiān)控系統(tǒng)必將有良好的應(yīng)用與發(fā)展前景,由它代替當前普遍應(yīng)用的基于PC的遠程監(jiān)控系統(tǒng)將成為必然趨勢[1]。
本文所設(shè)計的視頻監(jiān)控系統(tǒng)的整體方案包括硬件和軟件設(shè)計方案。系統(tǒng)的總體結(jié)構(gòu)框架如圖1所示。
圖1 系統(tǒng)總體結(jié)構(gòu)框架
本視頻監(jiān)控系統(tǒng)使用JZ2440開發(fā)板作為控制器。CPU使用三星S3C2440A,該處理器擁有獨立的16 KB指令Cache和16 KB數(shù)據(jù)Cache MMU,非常適合低功耗的場合;SDRAM存儲器為64 MB,頻率為133 MHz,用于Linux系統(tǒng)的加載以及應(yīng)用程序中相關(guān)數(shù)據(jù)的存儲。NAND Flash芯片為K9F1208,大小為256 MB,具有非易失性、電可擦除性、可重復(fù)編程以及高密度、低功耗等特點,用于存儲操作系統(tǒng)的固有程序。有線網(wǎng)卡采用100 Mbps低功耗以太網(wǎng)DM9000A芯片,該芯片具有標準的RJ45插口,并集成了網(wǎng)絡(luò)變壓器。
由于該視頻監(jiān)控系統(tǒng)是基于Linux操作系統(tǒng)設(shè)計的,而該操作系統(tǒng)中提供了視頻設(shè)備的內(nèi)核驅(qū)動框架(即V4L2框架),因此在硬件上必須使用符合UVC規(guī)范的攝像頭,最終選用環(huán)宇飛揚6160攝像頭作為視頻采集模塊。該攝像頭的感光元件類型為CMOS,支持的最大分辨率是640×480,視頻數(shù)據(jù)的輸出格式為原始的YUV格式。
該視頻監(jiān)控系統(tǒng)中利用WiFi模塊將UVC攝像頭采集到的視頻數(shù)據(jù)通過Mjpg_streamer視頻服務(wù)器發(fā)送到個人電腦或者手機終端,真正實現(xiàn)了無線監(jiān)控的目的。其中所使用的WiFi模塊采用RT3070芯片,該模塊具有150 Mbps無線傳輸速率,具備強大的 WPA/WPA2、WPAPSK/WPA2PSK 安全機制。其工作原理為:系統(tǒng)需要發(fā)送數(shù)據(jù)包時,首先對網(wǎng)絡(luò)進行偵聽,如果網(wǎng)絡(luò)繁忙,則進入等待狀態(tài),等到網(wǎng)絡(luò)空閑時,立即發(fā)送數(shù)據(jù)。在接收數(shù)據(jù)的過程中,先對接收到的數(shù)據(jù)幀進行解碼、去幀頭、地址檢驗,然后將數(shù)據(jù)緩存到芯片內(nèi),等待CRC校驗[2],通過校驗后會將接收到的數(shù)據(jù)幀傳送到系統(tǒng)存儲器中。RT3070芯片與S3C2440的連接電路圖如圖2所示。
圖2 RT3070芯片與S3C2440的連接電路圖
嵌入式開發(fā)平臺的搭建包括引導(dǎo)加載程序的移植、Linux內(nèi)核的移植以及文件系統(tǒng)的燒寫[3]。首先移植Bootloader引導(dǎo)加載程序,其作用是初始化硬件設(shè)備、分配內(nèi)存空間,從而使系統(tǒng)的軟硬件環(huán)境達到合適狀態(tài),為調(diào)用操作系統(tǒng)內(nèi)核做好準備[4]。
本文的內(nèi)核選用Linux-3.4.2版本,由于本監(jiān)控系統(tǒng)中需要使用UVC攝像頭和WiFi無線網(wǎng)卡,因此需要配置相應(yīng)的內(nèi)核驅(qū)動程序。要使內(nèi)核支持UVC驅(qū)動,只需將MEDIA_USB_SUPPORT、USB_VIDEO_CLASS、USB_VIDEO_CLASS_INPUT_EVDEV、MEDIA_SUPPORT這4個配置項都配置為“Y”,即可將UVC驅(qū)動編進內(nèi)核。要使內(nèi)核支持WiFi網(wǎng)卡驅(qū)動,只需將RT2800USB、USB等配置項配置為“Y”,即可將WiFi網(wǎng)卡驅(qū)動編進內(nèi)核。因此,首先使用 “make menuconfig”命令按照如上配置項進行內(nèi)核的配置,其次使用“make uImage”命令來編譯內(nèi)核,最終就可以編譯出支持相應(yīng)驅(qū)動的內(nèi)核。
最后使用BusyBox工具包制作文件系統(tǒng)fs_video_monitor。該文件系統(tǒng)中已經(jīng)安裝有l(wèi)ibjpeg庫、Mjpg_streamer服務(wù)器、hostapd應(yīng)用程序和dhcpd 應(yīng)用程序。dhcpd是Linux下的一個DHCP服務(wù)器,它的作用是使得WiFi網(wǎng)卡動態(tài)獲取IP。hostapd 是一個用戶態(tài)用于AP和認證服務(wù)器的守護進程,其作用是提供WiFi網(wǎng)卡的AP功能。
圖3 Mjpg_streamer的 主函數(shù)處理流程圖
Mjpg_streamer是一款輕量級的視頻流服務(wù)器軟件,該軟件有多個輸入/輸出組件,可根據(jù)功能的需要來選擇要用的組件[5]。本系統(tǒng)中使用input_uvc.so輸入組件和output_http.so輸出組件。input_uvc.so組件的主要功能是獲取UVC攝像頭捕獲的視頻數(shù)據(jù)并將其壓縮編碼,最后將數(shù)據(jù)保存在緩存區(qū)中。output_http.so輸出組件的主要功能是將存在緩存區(qū)中的數(shù)據(jù)以http視頻數(shù)據(jù)流的方式輸出到各類客戶端。Mjpg_streamer的主函數(shù)處理流程如圖3所示。
Mjpg_streamer客戶端Mjpg_streamer_client用來接收從服務(wù)器中發(fā)來的視頻數(shù)據(jù)并進行處理,然后寫入framebuffer中,最后刷新到LCD上顯示出來。其主函數(shù)的流程分為四步。
第1步是做初始化工作,調(diào)用函數(shù)Init_display()注冊framebuffer顯示設(shè)備。緊接著調(diào)用Init_Video_channel()函數(shù),該函數(shù)的作用是初始化視頻獲取的通道,隨后繼續(xù)調(diào)用Get_Video()函數(shù),該函數(shù)的參數(shù)為"http" 字符串,意思是根據(jù)名字"http" 獲得視頻獲取的通道。
第2步是啟動攝像頭設(shè)備并創(chuàng)建獲取攝像頭數(shù)據(jù)的線程。首先調(diào)用函數(shù)Connect_To_Server()來連接服務(wù)器并啟動攝像頭設(shè)備,緊接著調(diào)用pthread_mutex_init()函數(shù),該函數(shù)的第一個參數(shù)是&global.db,其作用是初始化 global.db 成員,然后又調(diào)用pthread_cond_init( )函數(shù),該函數(shù)的第一個參數(shù)為&global.db_update,其作用是初始化 global.db_update成員。最后調(diào)用函數(shù)pthread_create()來創(chuàng)建VideoThread 線程,該線程的作用是從服務(wù)器中獲得一幀數(shù)據(jù)。
第3步是使用循環(huán)的方式從輸入組件中不斷獲取一幀的視頻數(shù)據(jù)并進行格式轉(zhuǎn)換,最后寫入framebuffer。當輸入組件從UVC攝像頭中獲取一幀數(shù)據(jù)并存放在buf中之后,會調(diào)用 pthread_cond_broadcast()函數(shù)發(fā)送一個信號給輸出組件來通知輸出組件獲取數(shù)據(jù),當信號發(fā)出之后會調(diào)用函數(shù)pthread_cond_wait()來等待接收該信號。當接收到信號之后,會調(diào)用Convert()函數(shù)將接收到的原視頻數(shù)據(jù)轉(zhuǎn)換為RGB 格式的數(shù)據(jù)并存入ConvertBuf中,隨后調(diào)用Merge_video()函數(shù)把新的視頻數(shù)據(jù)合并進framebuffer中。緊接著調(diào)用video_save()函數(shù)錄制視頻。最后調(diào)用Disp_lcd()函數(shù),該函數(shù)的作用是把framebuffer中的數(shù)據(jù)刷新到LCD上并顯示出來。
第4步是等待線程結(jié)束,并回收它的資源,該功能由pthread_detach()函數(shù)完成。
本文將圖像處理技術(shù)中的運動目標跟蹤應(yīng)用在視頻監(jiān)控系統(tǒng)中,使得該系統(tǒng)的功能更加完善,應(yīng)用也更加廣泛。目標跟蹤的算法大致可以分為均值漂移算法(Mean-shift算法)、Kalman濾波算法、基于粒子濾波的目標跟蹤、基于對運動目標建模的方法這4類。由于Mean-shift算法具有很強的魯棒性,并且計算量不是很大,因此本文選擇Mean-shift算法作為運動目標跟蹤算法。
對第一幀圖像中運動目標區(qū)域內(nèi)的每個像素點計算其特征值的概率,這個過程即為目標模型的描述。設(shè)目標區(qū)域的中心為x0,假設(shè)其中有n個像素用{z}i=1,2,…,n表示,特征值的個數(shù)為m,則目標模型中的特征值u=1,2,…,m的概率密度函數(shù)為:
其中:
候選區(qū)域即為運動目標在第二幀及以后的每一幀中可能包含目標的區(qū)域。在第s幀時,可以由前一幀的目標中心的位置f0得出候選目標的中心位置坐標是f,然后計算出當前幀的候選目標區(qū)域直方圖,該區(qū)域的像素可以用{w}i=1,2,…,m來表示,因此可以求得候選模型的概率密度函數(shù)為:
相似性函數(shù)用來描述目標模型與候選模型的相似程度,在本文的算法中使用Bhattacharyya系數(shù)作為相似性函數(shù),該函數(shù)為:
該函數(shù)值在0到1之間,其值越大表示兩個模型越相似,通過對當前幀中不同候選區(qū)域的計算得到候選模型,在眾多區(qū)域中相似函數(shù)值最大的候選區(qū)域即為目標區(qū)域。
為了使得相似函數(shù)的函數(shù)值最大,對相似函數(shù)進行泰勒展開,即可得到Bhattacharyya系數(shù)的近似表達式為:
該函數(shù)的極大化過程可以用下列的Mean-shift迭代方程完成:
(其中, gx=-K′(x) )
Mean-shift迭代方法的核心就是從fk開始向兩個模型相比顏色變化最大的方向不斷移動,直至移動距離小于閾值時即找到了目標位置,并以此作為下一幀的起始搜索窗口中心,如此不斷循環(huán)進行。
首先在開發(fā)板的USB口依次接入UVC攝像頭和USB WiFi網(wǎng)卡,然后成功接入網(wǎng)線,最后通過USB線和電腦主機進行通信。其次在PC中安裝SecureCRT 8.0.4 終端仿真軟件,并在虛擬機中安裝Ubuntu 9.10。當測試平臺搭建完之后即可啟動開發(fā)板,然后通過命令來開啟Mjpg_streamer服務(wù)器,最后在Ubuntu的文本模式下進入相應(yīng)的目錄中,通過命令來啟動客戶端,隨后即可觀看視頻圖像,運行效果如圖4所示。視頻監(jiān)控系統(tǒng)實物圖如圖5所示,其可以很好地滿足各種場合的視頻監(jiān)控需求。
圖4 客戶端效果圖
圖5 視頻監(jiān)控系統(tǒng)實物圖
本文獲取之前錄制的一段視頻進行測試運動目標跟蹤的效果,該測試在CPU為Intel(R) Core(TM)2 Duo,運行內(nèi)存為2 GB的Windows系統(tǒng)上進行,并在Opencv 2.4.10和VS 2010的開發(fā)平臺上利用C/C++編程語言實現(xiàn)。視頻序列中每幀圖片的大小為320×240,視頻中的運動目標水杯緩慢向左移動。測試發(fā)現(xiàn),當運動目標緩慢移動并無明顯尺寸變化以及無遮擋情況發(fā)生時,采用經(jīng)典的Mean-shift算法對運動目標進行跟蹤還是比較理想的。獲取其中的第5幀、第20幀、第30幀的測試效果圖如圖6所示。
圖6 運動目標跟蹤測試效果圖
[1] 楊勇.基于ARM的嵌入式遠程視頻監(jiān)控系統(tǒng)的設(shè)計[J].微計算機信息,2008,24(11-2):1-2.
[2] 劉塵塵.基于ARM的遠程視頻監(jiān)控系統(tǒng)的設(shè)計[J].計算機測量與控制,2012,20(8):1.
[3] 周鵬飛.基于MJPG-Streamer的移動視頻監(jiān)控系統(tǒng)的設(shè)計與研究[D].合肥:安徽理工大學(xué),2013.
[4] 何少佳,史劍清.基于ARM的家居遠程視頻監(jiān)控平臺[J].計算機系統(tǒng)應(yīng)用,2014,23(9):1-2.
[5] 陳宗成,鄧華秋.基于ARM11的嵌入式視頻傳輸系統(tǒng)的實現(xiàn)[J].電視技術(shù),2013(9):2-3.
劉磊(碩士研究生),主要研究方向為嵌入式計算機及其應(yīng)用、 物聯(lián)網(wǎng)技術(shù);余淑榮(教授), 主要研究方向為計算機控制、機械制造;吳明亮(教授), 主要研究方向為人工智能、計算機控制和復(fù)雜工藝過程制。
參考文獻
[1] ZHANG C,BAI Z,CAO B.Study On regenerative braking of electric vehicle[C]//Proceeding of the 4th International Conference on Power Electronics and Motion Control,2004:836-839.
[2] 孫心華.三相直流無刷電機控制系統(tǒng)設(shè)計[D].廣州:廣東工業(yè)大學(xué),2008.
[3] 譚建成.永磁直流無刷電機技術(shù)[M].北京:機械工業(yè)出版社,2011.
[4] ERTUGRUL N,ACARNLEY P.Indirect rotor position sensing in real time for brushless permanent magnet motor drives [C]//IEEE Ann PESC,1997:736-742.
[5] Lin ChengTsung.Position Sensorless Control for Four-Switch Three-Phase Brushless DC Motor Drives[J].IEEE Transactions on Power Electronics,2006,23(1):438-444.
[6] 吳強,熊浩,孟光偉,等.三相永磁無刷電機起動控制研究[J].船電技術(shù),2011,31(9):6-10.
[7] 張相軍,陳伯時.無刷直流電機控制系統(tǒng)中PWM調(diào)制方式對換相轉(zhuǎn)矩脈動的影響[J].電機與控制學(xué)報,2003,7(2):87-91.
潘安樂(碩士),主要研究方向為嵌入式開發(fā)、數(shù)字信號處理、智能控制;陳小平(教授),主要研究方向為嵌入式系統(tǒng)應(yīng)用、智能信息處理、虛擬儀器技術(shù)。
VideoMonitoringSystemforMovingTargetTrackingBasedonARM9
LiuLei,YuShurong,WuMingliang
(School of Mechanical And Electrical Engineering,Lanzhou University of Technology,Lanzhou 730000,China)
In the paper,a wireless video monitoring system based on ARM is proposed,which uses S3C2440 as the main processor,and uses UVC camera to collect video data,and finally sends the video data by using WiFi network card.The software platform is equipped with Linux operating system.The video data is sent by Mjpg-streamer video server and
by the client designed by myself.Finally,on the basis of Mean-shift algorithm,the moving target tracking is realized by using Opencv 2.4.10,VS 2010 development platform and C/C++ programming language.The experiment results show that the monitoring system can provide users with real-time,stable and clear video images.Furthermore,the moving target tracking is realized under the condition that the moving background is not too complex and the moving object is moving slowly.
video monitoring;ARM;Linux operating system;Mjpg_streamer;Mean-shift algorithm
TP311
A
薛士然
2017-08-23)
2017-09-06)