,,
(蘭州理工大學(xué) 機(jī)電工程學(xué)院,蘭州730000)
用ARM9實(shí)現(xiàn)移動(dòng)目標(biāo)跟蹤的視頻監(jiān)控系統(tǒng)
劉磊,余淑榮,吳明亮
(蘭州理工大學(xué) 機(jī)電工程學(xué)院,蘭州730000)
提出了一種基于ARM的無線視頻監(jiān)控系統(tǒng),該監(jiān)控系統(tǒng)使用S3C2440處理器作為主控制器,并使用UVC攝像頭進(jìn)行視頻數(shù)據(jù)的采集,最后利用WiFi網(wǎng)卡發(fā)送視頻數(shù)據(jù)。搭載Linux操作系統(tǒng)并利用Mjpg_streamer視頻服務(wù)器發(fā)送視頻數(shù)據(jù),然后通過自己設(shè)計(jì)的客戶端接收視頻數(shù)據(jù)。最后在基于Mean-shift算法的基礎(chǔ)之上,使用Opencv 2.4.12和VS 2010開發(fā)平臺(tái)以及C/C++編程語(yǔ)言實(shí)現(xiàn)了運(yùn)動(dòng)目標(biāo)跟蹤。實(shí)驗(yàn)結(jié)果表明,該監(jiān)控系統(tǒng)可以為用戶提供實(shí)時(shí)的、穩(wěn)定的、清晰的視頻圖像,并且成功實(shí)現(xiàn)了在運(yùn)動(dòng)背景不太復(fù)雜,運(yùn)動(dòng)目標(biāo)慢速移動(dòng)情況下的運(yùn)動(dòng)目標(biāo)的跟蹤。
視頻監(jiān)控;ARM;Linux操作系統(tǒng);Mjpg_streamer;Mean-shift算法
隨著計(jì)算機(jī)技術(shù)、互聯(lián)網(wǎng)技術(shù)和通信技術(shù)的不斷發(fā)展,視頻監(jiān)控應(yīng)用也取得了巨大的進(jìn)步與發(fā)展。目前嵌入式技術(shù)與圖像處理技術(shù)的結(jié)合已經(jīng)成為視頻監(jiān)控的主流研究方向。視頻監(jiān)控系統(tǒng)目前已被廣泛應(yīng)用諸多場(chǎng)合。早期的監(jiān)控系統(tǒng)由于體積大、操作不方便、價(jià)格昂貴、功能單一而無法滿足現(xiàn)代社會(huì)的需求,因此人們開始研究新一代的視頻監(jiān)控系統(tǒng),數(shù)字化的視頻監(jiān)控系統(tǒng)逐步進(jìn)入人們的視野。這種新型的視頻監(jiān)控技術(shù)以嵌入式技術(shù)為核心并結(jié)合熱成像、云存儲(chǔ)、人臉識(shí)別等先進(jìn)技術(shù),尤其是將圖像處理技術(shù)應(yīng)用在監(jiān)控系統(tǒng)中來實(shí)現(xiàn)運(yùn)動(dòng)目標(biāo)跟蹤更加受到人們的青睞?;谇度胧郊夹g(shù)的智能圖像監(jiān)控系統(tǒng)必將有良好的應(yīng)用與發(fā)展前景,由它代替當(dāng)前普遍應(yīng)用的基于PC的遠(yuǎn)程監(jiān)控系統(tǒng)將成為必然趨勢(shì)[1]。
本文所設(shè)計(jì)的視頻監(jiān)控系統(tǒng)的整體方案包括硬件和軟件設(shè)計(jì)方案。系統(tǒng)的總體結(jié)構(gòu)框架如圖1所示。
圖1 系統(tǒng)總體結(jié)構(gòu)框架
本視頻監(jiān)控系統(tǒng)使用JZ2440開發(fā)板作為控制器。CPU使用三星S3C2440A,該處理器擁有獨(dú)立的16 KB指令Cache和16 KB數(shù)據(jù)Cache MMU,非常適合低功耗的場(chǎng)合;SDRAM存儲(chǔ)器為64 MB,頻率為133 MHz,用于Linux系統(tǒng)的加載以及應(yīng)用程序中相關(guān)數(shù)據(jù)的存儲(chǔ)。NAND Flash芯片為K9F1208,大小為256 MB,具有非易失性、電可擦除性、可重復(fù)編程以及高密度、低功耗等特點(diǎn),用于存儲(chǔ)操作系統(tǒng)的固有程序。有線網(wǎng)卡采用100 Mbps低功耗以太網(wǎng)DM9000A芯片,該芯片具有標(biāo)準(zhǔn)的RJ45插口,并集成了網(wǎng)絡(luò)變壓器。
由于該視頻監(jiān)控系統(tǒng)是基于Linux操作系統(tǒng)設(shè)計(jì)的,而該操作系統(tǒng)中提供了視頻設(shè)備的內(nèi)核驅(qū)動(dòng)框架(即V4L2框架),因此在硬件上必須使用符合UVC規(guī)范的攝像頭,最終選用環(huán)宇飛揚(yáng)6160攝像頭作為視頻采集模塊。該攝像頭的感光元件類型為CMOS,支持的最大分辨率是640×480,視頻數(shù)據(jù)的輸出格式為原始的YUV格式。
該視頻監(jiān)控系統(tǒng)中利用WiFi模塊將UVC攝像頭采集到的視頻數(shù)據(jù)通過Mjpg_streamer視頻服務(wù)器發(fā)送到個(gè)人電腦或者手機(jī)終端,真正實(shí)現(xiàn)了無線監(jiān)控的目的。其中所使用的WiFi模塊采用RT3070芯片,該模塊具有150 Mbps無線傳輸速率,具備強(qiáng)大的 WPA/WPA2、WPAPSK/WPA2PSK 安全機(jī)制。其工作原理為:系統(tǒng)需要發(fā)送數(shù)據(jù)包時(shí),首先對(duì)網(wǎng)絡(luò)進(jìn)行偵聽,如果網(wǎng)絡(luò)繁忙,則進(jìn)入等待狀態(tài),等到網(wǎng)絡(luò)空閑時(shí),立即發(fā)送數(shù)據(jù)。在接收數(shù)據(jù)的過程中,先對(duì)接收到的數(shù)據(jù)幀進(jìn)行解碼、去幀頭、地址檢驗(yàn),然后將數(shù)據(jù)緩存到芯片內(nèi),等待CRC校驗(yàn)[2],通過校驗(yàn)后會(huì)將接收到的數(shù)據(jù)幀傳送到系統(tǒng)存儲(chǔ)器中。RT3070芯片與S3C2440的連接電路圖如圖2所示。
圖2 RT3070芯片與S3C2440的連接電路圖
嵌入式開發(fā)平臺(tái)的搭建包括引導(dǎo)加載程序的移植、Linux內(nèi)核的移植以及文件系統(tǒng)的燒寫[3]。首先移植Bootloader引導(dǎo)加載程序,其作用是初始化硬件設(shè)備、分配內(nèi)存空間,從而使系統(tǒng)的軟硬件環(huán)境達(dá)到合適狀態(tài),為調(diào)用操作系統(tǒng)內(nèi)核做好準(zhǔn)備[4]。
本文的內(nèi)核選用Linux-3.4.2版本,由于本監(jiān)控系統(tǒng)中需要使用UVC攝像頭和WiFi無線網(wǎng)卡,因此需要配置相應(yīng)的內(nèi)核驅(qū)動(dòng)程序。要使內(nèi)核支持UVC驅(qū)動(dòng),只需將MEDIA_USB_SUPPORT、USB_VIDEO_CLASS、USB_VIDEO_CLASS_INPUT_EVDEV、MEDIA_SUPPORT這4個(gè)配置項(xiàng)都配置為“Y”,即可將UVC驅(qū)動(dòng)編進(jìn)內(nèi)核。要使內(nèi)核支持WiFi網(wǎng)卡驅(qū)動(dòng),只需將RT2800USB、USB等配置項(xiàng)配置為“Y”,即可將WiFi網(wǎng)卡驅(qū)動(dòng)編進(jìn)內(nèi)核。因此,首先使用 “make menuconfig”命令按照如上配置項(xiàng)進(jìn)行內(nèi)核的配置,其次使用“make uImage”命令來編譯內(nèi)核,最終就可以編譯出支持相應(yīng)驅(qū)動(dòng)的內(nèi)核。
最后使用BusyBox工具包制作文件系統(tǒng)fs_video_monitor。該文件系統(tǒng)中已經(jīng)安裝有l(wèi)ibjpeg庫(kù)、Mjpg_streamer服務(wù)器、hostapd應(yīng)用程序和dhcpd 應(yīng)用程序。dhcpd是Linux下的一個(gè)DHCP服務(wù)器,它的作用是使得WiFi網(wǎng)卡動(dòng)態(tài)獲取IP。hostapd 是一個(gè)用戶態(tài)用于AP和認(rèn)證服務(wù)器的守護(hù)進(jìn)程,其作用是提供WiFi網(wǎng)卡的AP功能。
圖3 Mjpg_streamer的 主函數(shù)處理流程圖
Mjpg_streamer是一款輕量級(jí)的視頻流服務(wù)器軟件,該軟件有多個(gè)輸入/輸出組件,可根據(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ù)并進(jìn)行處理,然后寫入framebuffer中,最后刷新到LCD上顯示出來。其主函數(shù)的流程分為四步。
第1步是做初始化工作,調(diào)用函數(shù)Init_display()注冊(cè)framebuffer顯示設(shè)備。緊接著調(diào)用Init_Video_channel()函數(shù),該函數(shù)的作用是初始化視頻獲取的通道,隨后繼續(xù)調(diào)用Get_Video()函數(shù),該函數(shù)的參數(shù)為"http" 字符串,意思是根據(jù)名字"http" 獲得視頻獲取的通道。
第2步是啟動(dòng)攝像頭設(shè)備并創(chuàng)建獲取攝像頭數(shù)據(jù)的線程。首先調(diào)用函數(shù)Connect_To_Server()來連接服務(wù)器并啟動(dòng)攝像頭設(shè)備,緊接著調(diào)用pthread_mutex_init()函數(shù),該函數(shù)的第一個(gè)參數(shù)是&global.db,其作用是初始化 global.db 成員,然后又調(diào)用pthread_cond_init( )函數(shù),該函數(shù)的第一個(gè)參數(shù)為&global.db_update,其作用是初始化 global.db_update成員。最后調(diào)用函數(shù)pthread_create()來創(chuàng)建VideoThread 線程,該線程的作用是從服務(wù)器中獲得一幀數(shù)據(jù)。
第3步是使用循環(huán)的方式從輸入組件中不斷獲取一幀的視頻數(shù)據(jù)并進(jìn)行格式轉(zhuǎn)換,最后寫入framebuffer。當(dāng)輸入組件從UVC攝像頭中獲取一幀數(shù)據(jù)并存放在buf中之后,會(huì)調(diào)用 pthread_cond_broadcast()函數(shù)發(fā)送一個(gè)信號(hào)給輸出組件來通知輸出組件獲取數(shù)據(jù),當(dāng)信號(hào)發(fā)出之后會(huì)調(diào)用函數(shù)pthread_cond_wait()來等待接收該信號(hào)。當(dāng)接收到信號(hào)之后,會(huì)調(diào)用Convert()函數(shù)將接收到的原視頻數(shù)據(jù)轉(zhuǎn)換為RGB 格式的數(shù)據(jù)并存入ConvertBuf中,隨后調(diào)用Merge_video()函數(shù)把新的視頻數(shù)據(jù)合并進(jìn)framebuffer中。緊接著調(diào)用video_save()函數(shù)錄制視頻。最后調(diào)用Disp_lcd()函數(shù),該函數(shù)的作用是把framebuffer中的數(shù)據(jù)刷新到LCD上并顯示出來。
第4步是等待線程結(jié)束,并回收它的資源,該功能由pthread_detach()函數(shù)完成。
本文將圖像處理技術(shù)中的運(yùn)動(dòng)目標(biāo)跟蹤應(yīng)用在視頻監(jiān)控系統(tǒng)中,使得該系統(tǒng)的功能更加完善,應(yīng)用也更加廣泛。目標(biāo)跟蹤的算法大致可以分為均值漂移算法(Mean-shift算法)、Kalman濾波算法、基于粒子濾波的目標(biāo)跟蹤、基于對(duì)運(yùn)動(dòng)目標(biāo)建模的方法這4類。由于Mean-shift算法具有很強(qiáng)的魯棒性,并且計(jì)算量不是很大,因此本文選擇Mean-shift算法作為運(yùn)動(dòng)目標(biāo)跟蹤算法。
對(duì)第一幀圖像中運(yùn)動(dòng)目標(biāo)區(qū)域內(nèi)的每個(gè)像素點(diǎn)計(jì)算其特征值的概率,這個(gè)過程即為目標(biāo)模型的描述。設(shè)目標(biāo)區(qū)域的中心為x0,假設(shè)其中有n個(gè)像素用{z}i=1,2,…,n表示,特征值的個(gè)數(shù)為m,則目標(biāo)模型中的特征值u=1,2,…,m的概率密度函數(shù)為:
其中:
候選區(qū)域即為運(yùn)動(dòng)目標(biāo)在第二幀及以后的每一幀中可能包含目標(biāo)的區(qū)域。在第s幀時(shí),可以由前一幀的目標(biāo)中心的位置f0得出候選目標(biāo)的中心位置坐標(biāo)是f,然后計(jì)算出當(dāng)前幀的候選目標(biāo)區(qū)域直方圖,該區(qū)域的像素可以用{w}i=1,2,…,m來表示,因此可以求得候選模型的概率密度函數(shù)為:
相似性函數(shù)用來描述目標(biāo)模型與候選模型的相似程度,在本文的算法中使用Bhattacharyya系數(shù)作為相似性函數(shù),該函數(shù)為:
該函數(shù)值在0到1之間,其值越大表示兩個(gè)模型越相似,通過對(duì)當(dāng)前幀中不同候選區(qū)域的計(jì)算得到候選模型,在眾多區(qū)域中相似函數(shù)值最大的候選區(qū)域即為目標(biāo)區(qū)域。
為了使得相似函數(shù)的函數(shù)值最大,對(duì)相似函數(shù)進(jìn)行泰勒展開,即可得到Bhattacharyya系數(shù)的近似表達(dá)式為:
該函數(shù)的極大化過程可以用下列的Mean-shift迭代方程完成:
(其中, gx=-K′(x) )
Mean-shift迭代方法的核心就是從fk開始向兩個(gè)模型相比顏色變化最大的方向不斷移動(dòng),直至移動(dòng)距離小于閾值時(shí)即找到了目標(biāo)位置,并以此作為下一幀的起始搜索窗口中心,如此不斷循環(huán)進(jìn)行。
首先在開發(fā)板的USB口依次接入U(xiǎn)VC攝像頭和USB WiFi網(wǎng)卡,然后成功接入網(wǎng)線,最后通過USB線和電腦主機(jī)進(jìn)行通信。其次在PC中安裝SecureCRT 8.0.4 終端仿真軟件,并在虛擬機(jī)中安裝Ubuntu 9.10。當(dāng)測(cè)試平臺(tái)搭建完之后即可啟動(dòng)開發(fā)板,然后通過命令來開啟Mjpg_streamer服務(wù)器,最后在Ubuntu的文本模式下進(jìn)入相應(yīng)的目錄中,通過命令來啟動(dòng)客戶端,隨后即可觀看視頻圖像,運(yùn)行效果如圖4所示。視頻監(jiān)控系統(tǒng)實(shí)物圖如圖5所示,其可以很好地滿足各種場(chǎng)合的視頻監(jiān)控需求。
圖4 客戶端效果圖
圖5 視頻監(jiān)控系統(tǒng)實(shí)物圖
本文獲取之前錄制的一段視頻進(jìn)行測(cè)試運(yùn)動(dòng)目標(biāo)跟蹤的效果,該測(cè)試在CPU為Intel(R) Core(TM)2 Duo,運(yùn)行內(nèi)存為2 GB的Windows系統(tǒng)上進(jìn)行,并在Opencv 2.4.10和VS 2010的開發(fā)平臺(tái)上利用C/C++編程語(yǔ)言實(shí)現(xiàn)。視頻序列中每幀圖片的大小為320×240,視頻中的運(yùn)動(dòng)目標(biāo)水杯緩慢向左移動(dòng)。測(cè)試發(fā)現(xiàn),當(dāng)運(yùn)動(dòng)目標(biāo)緩慢移動(dòng)并無明顯尺寸變化以及無遮擋情況發(fā)生時(shí),采用經(jīng)典的Mean-shift算法對(duì)運(yùn)動(dòng)目標(biāo)進(jìn)行跟蹤還是比較理想的。獲取其中的第5幀、第20幀、第30幀的測(cè)試效果圖如圖6所示。
圖6 運(yùn)動(dòng)目標(biāo)跟蹤測(cè)試效果圖
[1] 楊勇.基于ARM的嵌入式遠(yuǎn)程視頻監(jiān)控系統(tǒng)的設(shè)計(jì)[J].微計(jì)算機(jī)信息,2008,24(11-2):1-2.
[2] 劉塵塵.基于ARM的遠(yuǎn)程視頻監(jiān)控系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2012,20(8):1.
[3] 周鵬飛.基于MJPG-Streamer的移動(dòng)視頻監(jiān)控系統(tǒng)的設(shè)計(jì)與研究[D].合肥:安徽理工大學(xué),2013.
[4] 何少佳,史劍清.基于ARM的家居遠(yuǎn)程視頻監(jiān)控平臺(tái)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2014,23(9):1-2.
[5] 陳宗成,鄧華秋.基于ARM11的嵌入式視頻傳輸系統(tǒng)的實(shí)現(xiàn)[J].電視技術(shù),2013(9):2-3.
劉磊(碩士研究生),主要研究方向?yàn)榍度胧接?jì)算機(jī)及其應(yīng)用、 物聯(lián)網(wǎng)技術(shù);余淑榮(教授), 主要研究方向?yàn)橛?jì)算機(jī)控制、機(jī)械制造;吳明亮(教授), 主要研究方向?yàn)槿斯ぶ悄堋⒂?jì)算機(jī)控制和復(fù)雜工藝過程制。
參考文獻(xiàn)
[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] 孫心華.三相直流無刷電機(jī)控制系統(tǒng)設(shè)計(jì)[D].廣州:廣東工業(yè)大學(xué),2008.
[3] 譚建成.永磁直流無刷電機(jī)技術(shù)[M].北京:機(jī)械工業(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] 吳強(qiáng),熊浩,孟光偉,等.三相永磁無刷電機(jī)起動(dòng)控制研究[J].船電技術(shù),2011,31(9):6-10.
[7] 張相軍,陳伯時(shí).無刷直流電機(jī)控制系統(tǒng)中PWM調(diào)制方式對(duì)換相轉(zhuǎn)矩脈動(dòng)的影響[J].電機(jī)與控制學(xué)報(bào),2003,7(2):87-91.
潘安樂(碩士),主要研究方向?yàn)榍度胧介_發(fā)、數(shù)字信號(hào)處理、智能控制;陳小平(教授),主要研究方向?yàn)榍度胧较到y(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)