,,
(蘭州理工大學 機電工程學院,蘭州730000)
用ARM9實現移動目標跟蹤的視頻監控系統
劉磊,余淑榮,吳明亮
(蘭州理工大學 機電工程學院,蘭州730000)
提出了一種基于ARM的無線視頻監控系統,該監控系統使用S3C2440處理器作為主控制器,并使用UVC攝像頭進行視頻數據的采集,最后利用WiFi網卡發送視頻數據。搭載Linux操作系統并利用Mjpg_streamer視頻服務器發送視頻數據,然后通過自己設計的客戶端接收視頻數據。最后在基于Mean-shift算法的基礎之上,使用Opencv 2.4.12和VS 2010開發平臺以及C/C++編程語言實現了運動目標跟蹤。實驗結果表明,該監控系統可以為用戶提供實時的、穩定的、清晰的視頻圖像,并且成功實現了在運動背景不太復雜,運動目標慢速移動情況下的運動目標的跟蹤。
視頻監控;ARM;Linux操作系統;Mjpg_streamer;Mean-shift算法
隨著計算機技術、互聯網技術和通信技術的不斷發展,視頻監控應用也取得了巨大的進步與發展。目前嵌入式技術與圖像處理技術的結合已經成為視頻監控的主流研究方向。視頻監控系統目前已被廣泛應用諸多場合。早期的監控系統由于體積大、操作不方便、價格昂貴、功能單一而無法滿足現代社會的需求,因此人們開始研究新一代的視頻監控系統,數字化的視頻監控系統逐步進入人們的視野。這種新型的視頻監控技術以嵌入式技術為核心并結合熱成像、云存儲、人臉識別等先進技術,尤其是將圖像處理技術應用在監控系統中來實現運動目標跟蹤更加受到人們的青睞。基于嵌入式技術的智能圖像監控系統必將有良好的應用與發展前景,由它代替當前普遍應用的基于PC的遠程監控系統將成為必然趨勢[1]。
本文所設計的視頻監控系統的整體方案包括硬件和軟件設計方案。系統的總體結構框架如圖1所示。

圖1 系統總體結構框架
本視頻監控系統使用JZ2440開發板作為控制器。CPU使用三星S3C2440A,該處理器擁有獨立的16 KB指令Cache和16 KB數據Cache MMU,非常適合低功耗的場合;SDRAM存儲器為64 MB,頻率為133 MHz,用于Linux系統的加載以及應用程序中相關數據的存儲。NAND Flash芯片為K9F1208,大小為256 MB,具有非易失性、電可擦除性、可重復編程以及高密度、低功耗等特點,用于存儲操作系統的固有程序。有線網卡采用100 Mbps低功耗以太網DM9000A芯片,該芯片具有標準的RJ45插口,并集成了網絡變壓器。
由于該視頻監控系統是基于Linux操作系統設計的,而該操作系統中提供了視頻設備的內核驅動框架(即V4L2框架),因此在硬件上必須使用符合UVC規范的攝像頭,最終選用環宇飛揚6160攝像頭作為視頻采集模塊。該攝像頭的感光元件類型為CMOS,支持的最大分辨率是640×480,視頻數據的輸出格式為原始的YUV格式。
該視頻監控系統中利用WiFi模塊將UVC攝像頭采集到的視頻數據通過Mjpg_streamer視頻服務器發送到個人電腦或者手機終端,真正實現了無線監控的目的。其中所使用的WiFi模塊采用RT3070芯片,該模塊具有150 Mbps無線傳輸速率,具備強大的 WPA/WPA2、WPAPSK/WPA2PSK 安全機制。其工作原理為:系統需要發送數據包時,首先對網絡進行偵聽,如果網絡繁忙,則進入等待狀態,等到網絡空閑時,立即發送數據。在接收數據的過程中,先對接收到的數據幀進行解碼、去幀頭、地址檢驗,然后將數據緩存到芯片內,等待CRC校驗[2],通過校驗后會將接收到的數據幀傳送到系統存儲器中。RT3070芯片與S3C2440的連接電路圖如圖2所示。

圖2 RT3070芯片與S3C2440的連接電路圖
嵌入式開發平臺的搭建包括引導加載程序的移植、Linux內核的移植以及文件系統的燒寫[3]。首先移植Bootloader引導加載程序,其作用是初始化硬件設備、分配內存空間,從而使系統的軟硬件環境達到合適狀態,為調用操作系統內核做好準備[4]。
本文的內核選用Linux-3.4.2版本,由于本監控系統中需要使用UVC攝像頭和WiFi無線網卡,因此需要配置相應的內核驅動程序。要使內核支持UVC驅動,只需將MEDIA_USB_SUPPORT、USB_VIDEO_CLASS、USB_VIDEO_CLASS_INPUT_EVDEV、MEDIA_SUPPORT這4個配置項都配置為“Y”,即可將UVC驅動編進內核。要使內核支持WiFi網卡驅動,只需將RT2800USB、USB等配置項配置為“Y”,即可將WiFi網卡驅動編進內核。因此,首先使用 “make menuconfig”命令按照如上配置項進行內核的配置,其次使用“make uImage”命令來編譯內核,最終就可以編譯出支持相應驅動的內核。
最后使用BusyBox工具包制作文件系統fs_video_monitor。該文件系統中已經安裝有libjpeg庫、Mjpg_streamer服務器、hostapd應用程序和dhcpd 應用程序。dhcpd是Linux下的一個DHCP服務器,它的作用是使得WiFi網卡動態獲取IP。hostapd 是一個用戶態用于AP和認證服務器的守護進程,其作用是提供WiFi網卡的AP功能。

圖3 Mjpg_streamer的 主函數處理流程圖
Mjpg_streamer是一款輕量級的視頻流服務器軟件,該軟件有多個輸入/輸出組件,可根據功能的需要來選擇要用的組件[5]。本系統中使用input_uvc.so輸入組件和output_http.so輸出組件。input_uvc.so組件的主要功能是獲取UVC攝像頭捕獲的視頻數據并將其壓縮編碼,最后將數據保存在緩存區中。output_http.so輸出組件的主要功能是將存在緩存區中的數據以http視頻數據流的方式輸出到各類客戶端。Mjpg_streamer的主函數處理流程如圖3所示。
Mjpg_streamer客戶端Mjpg_streamer_client用來接收從服務器中發來的視頻數據并進行處理,然后寫入framebuffer中,最后刷新到LCD上顯示出來。其主函數的流程分為四步。
第1步是做初始化工作,調用函數Init_display()注冊framebuffer顯示設備。緊接著調用Init_Video_channel()函數,該函數的作用是初始化視頻獲取的通道,隨后繼續調用Get_Video()函數,該函數的參數為"http" 字符串,意思是根據名字"http" 獲得視頻獲取的通道。
第2步是啟動攝像頭設備并創建獲取攝像頭數據的線程。首先調用函數Connect_To_Server()來連接服務器并啟動攝像頭設備,緊接著調用pthread_mutex_init()函數,該函數的第一個參數是&global.db,其作用是初始化 global.db 成員,然后又調用pthread_cond_init( )函數,該函數的第一個參數為&global.db_update,其作用是初始化 global.db_update成員。最后調用函數pthread_create()來創建VideoThread 線程,該線程的作用是從服務器中獲得一幀數據。
第3步是使用循環的方式從輸入組件中不斷獲取一幀的視頻數據并進行格式轉換,最后寫入framebuffer。當輸入組件從UVC攝像頭中獲取一幀數據并存放在buf中之后,會調用 pthread_cond_broadcast()函數發送一個信號給輸出組件來通知輸出組件獲取數據,當信號發出之后會調用函數pthread_cond_wait()來等待接收該信號。當接收到信號之后,會調用Convert()函數將接收到的原視頻數據轉換為RGB 格式的數據并存入ConvertBuf中,隨后調用Merge_video()函數把新的視頻數據合并進framebuffer中。緊接著調用video_save()函數錄制視頻。最后調用Disp_lcd()函數,該函數的作用是把framebuffer中的數據刷新到LCD上并顯示出來。
第4步是等待線程結束,并回收它的資源,該功能由pthread_detach()函數完成。
本文將圖像處理技術中的運動目標跟蹤應用在視頻監控系統中,使得該系統的功能更加完善,應用也更加廣泛。目標跟蹤的算法大致可以分為均值漂移算法(Mean-shift算法)、Kalman濾波算法、基于粒子濾波的目標跟蹤、基于對運動目標建模的方法這4類。由于Mean-shift算法具有很強的魯棒性,并且計算量不是很大,因此本文選擇Mean-shift算法作為運動目標跟蹤算法。
對第一幀圖像中運動目標區域內的每個像素點計算其特征值的概率,這個過程即為目標模型的描述。設目標區域的中心為x0,假設其中有n個像素用{z}i=1,2,…,n表示,特征值的個數為m,則目標模型中的特征值u=1,2,…,m的概率密度函數為:

其中:

候選區域即為運動目標在第二幀及以后的每一幀中可能包含目標的區域。在第s幀時,可以由前一幀的目標中心的位置f0得出候選目標的中心位置坐標是f,然后計算出當前幀的候選目標區域直方圖,該區域的像素可以用{w}i=1,2,…,m來表示,因此可以求得候選模型的概率密度函數為:

相似性函數用來描述目標模型與候選模型的相似程度,在本文的算法中使用Bhattacharyya系數作為相似性函數,該函數為:
該函數值在0到1之間,其值越大表示兩個模型越相似,通過對當前幀中不同候選區域的計算得到候選模型,在眾多區域中相似函數值最大的候選區域即為目標區域。
為了使得相似函數的函數值最大,對相似函數進行泰勒展開,即可得到Bhattacharyya系數的近似表達式為:
該函數的極大化過程可以用下列的Mean-shift迭代方程完成:

(其中, gx=-K′(x) )
Mean-shift迭代方法的核心就是從fk開始向兩個模型相比顏色變化最大的方向不斷移動,直至移動距離小于閾值時即找到了目標位置,并以此作為下一幀的起始搜索窗口中心,如此不斷循環進行。
首先在開發板的USB口依次接入UVC攝像頭和USB WiFi網卡,然后成功接入網線,最后通過USB線和電腦主機進行通信。其次在PC中安裝SecureCRT 8.0.4 終端仿真軟件,并在虛擬機中安裝Ubuntu 9.10。當測試平臺搭建完之后即可啟動開發板,然后通過命令來開啟Mjpg_streamer服務器,最后在Ubuntu的文本模式下進入相應的目錄中,通過命令來啟動客戶端,隨后即可觀看視頻圖像,運行效果如圖4所示。視頻監控系統實物圖如圖5所示,其可以很好地滿足各種場合的視頻監控需求。

圖4 客戶端效果圖

圖5 視頻監控系統實物圖
本文獲取之前錄制的一段視頻進行測試運動目標跟蹤的效果,該測試在CPU為Intel(R) Core(TM)2 Duo,運行內存為2 GB的Windows系統上進行,并在Opencv 2.4.10和VS 2010的開發平臺上利用C/C++編程語言實現。視頻序列中每幀圖片的大小為320×240,視頻中的運動目標水杯緩慢向左移動。測試發現,當運動目標緩慢移動并無明顯尺寸變化以及無遮擋情況發生時,采用經典的Mean-shift算法對運動目標進行跟蹤還是比較理想的。獲取其中的第5幀、第20幀、第30幀的測試效果圖如圖6所示。


圖6 運動目標跟蹤測試效果圖
[1] 楊勇.基于ARM的嵌入式遠程視頻監控系統的設計[J].微計算機信息,2008,24(11-2):1-2.
[2] 劉塵塵.基于ARM的遠程視頻監控系統的設計[J].計算機測量與控制,2012,20(8):1.
[3] 周鵬飛.基于MJPG-Streamer的移動視頻監控系統的設計與研究[D].合肥:安徽理工大學,2013.
[4] 何少佳,史劍清.基于ARM的家居遠程視頻監控平臺[J].計算機系統應用,2014,23(9):1-2.
[5] 陳宗成,鄧華秋.基于ARM11的嵌入式視頻傳輸系統的實現[J].電視技術,2013(9):2-3.
劉磊(碩士研究生),主要研究方向為嵌入式計算機及其應用、 物聯網技術;余淑榮(教授), 主要研究方向為計算機控制、機械制造;吳明亮(教授), 主要研究方向為人工智能、計算機控制和復雜工藝過程制。


參考文獻
[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] 孫心華.三相直流無刷電機控制系統設計[D].廣州:廣東工業大學,2008.
[3] 譚建成.永磁直流無刷電機技術[M].北京:機械工業出版社,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].船電技術,2011,31(9):6-10.
[7] 張相軍,陳伯時.無刷直流電機控制系統中PWM調制方式對換相轉矩脈動的影響[J].電機與控制學報,2003,7(2):87-91.
潘安樂(碩士),主要研究方向為嵌入式開發、數字信號處理、智能控制;陳小平(教授),主要研究方向為嵌入式系統應用、智能信息處理、虛擬儀器技術。
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)