邱曉金 陳名松 黃高見(jiàn)
(桂林電子科技大學(xué)信息與通信學(xué)院 桂林 541004)
?
基于Cortex-A8的視頻監(jiān)控跟蹤系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)*
邱曉金陳名松黃高見(jiàn)
(桂林電子科技大學(xué)信息與通信學(xué)院桂林541004)
摘要為降低數(shù)字化視頻監(jiān)控設(shè)備成本、縮短開(kāi)發(fā)周期和解決PC機(jī)上對(duì)視頻運(yùn)動(dòng)目標(biāo)跟蹤時(shí)延較大的問(wèn)題,設(shè)計(jì)了一種基于Cortex-A8的視頻監(jiān)控跟蹤系統(tǒng)。該系統(tǒng)分為嵌入式視頻采集傳輸部分,網(wǎng)絡(luò)視頻流接收部分和視頻監(jiān)控跟蹤部分。嵌入式視頻采集傳輸部分,用具有視頻壓縮功能的攝像頭進(jìn)行視頻采集,通過(guò)構(gòu)建嵌入式視頻流服務(wù)器實(shí)現(xiàn)遠(yuǎn)程監(jiān)控功能。網(wǎng)絡(luò)視頻流接收部分,創(chuàng)新地將視頻流服務(wù)器的網(wǎng)頁(yè)接收代碼與OpenCV的函數(shù)庫(kù)結(jié)合完成網(wǎng)絡(luò)視頻流數(shù)據(jù)的接收,極大地降低開(kāi)發(fā)成本和精力。運(yùn)動(dòng)目標(biāo)跟蹤部分,提出了一種基于Camshift算法和Kalman濾波器結(jié)合的算法,使得系統(tǒng)滿足實(shí)時(shí)性的要求并且跟蹤目標(biāo)在短時(shí)間內(nèi)被遮擋的情況下,仍然可以實(shí)現(xiàn)對(duì)目標(biāo)的有效跟蹤。最終一套形成集視頻的采集、傳輸、監(jiān)控、跟蹤為一體視頻監(jiān)控跟蹤系統(tǒng)。
關(guān)鍵詞Cortex-A8; MJPG-Streamer; OpenCV; Camshift; Kalman
Design and Implementation of Video Surveillance and Tracking System Based on Cortex-A8
QIU XiaojinCHEN MingsongHUANG Gaojian
(School of Information and Communication, Guilin University of Electronic Technology, Guilin541004)
AbstractTo lower the cost and shorten the development period of digital video surveillance device and reduce the latency of moving object detection on PC, an innovative video object detection system based on Cortex-A8 is devised. The system can be divided into three parts, including the embedded video acquisition and transmission subsystem, the video stream receiving subsystem, video monitoring and tracking subsystem. To implement the embedded video acquisition and transmission subsystem, video is captured by camera with the function of video compression and embedded video stream server is constructed for remote monitoring. As for the video stream receiving subsystem, the receiving code of video stream server and the OpenCV function library are combined innovatively to receive video stream via network,which can greatly reduce the development cost. A new algorithm based on Camshift and kalman filter is proposed to implement the video monitoring and tracking subsystem. The algorithm fulfills the requirement of real-time and is even even able to track objects that had been blocked for a short time. After all these work, a video surveillance and tracking system with the function of video acquisition, transmission, monitering and tracking is completed.
Key WordsCortex-A8, MJPG-Streamer, OpenCV, Camshift, Kalman
Class NumberTP391
1引言
在人類(lèi)的感官系統(tǒng)所接收的信息中,視覺(jué)的信息比例是最大的,占到了80%[1]。除了文字和聲音,視覺(jué)是最客觀、最形象、最逼真的描述,是人類(lèi)最重要的信息承載體。由于視頻的信息量大,人工處理速度慢等原因,迫切要求計(jì)算機(jī)對(duì)視頻進(jìn)行編輯、處理。因此,計(jì)算機(jī)對(duì)視頻處理的一個(gè)重要的方向就是視頻監(jiān)控。目前國(guó)內(nèi)的視頻監(jiān)控也已從傳統(tǒng)的模擬,模數(shù)混合監(jiān)控逐步向數(shù)字化、智能化視頻監(jiān)控方向發(fā)展[2],高清視頻監(jiān)控也正逐步進(jìn)入人們的視野。本課題的主要目的是利用嵌入式技術(shù)、網(wǎng)絡(luò)技術(shù)以及視頻傳感技術(shù)的成果來(lái)開(kāi)發(fā)出經(jīng)濟(jì)、可靠、高效的視頻監(jiān)控跟蹤系統(tǒng)。
2系統(tǒng)方案
視頻監(jiān)控跟蹤系統(tǒng)是一種基于ARM+Linux嵌入式平臺(tái)與PC平臺(tái)相結(jié)合視頻監(jiān)控跟蹤系統(tǒng)。嵌入式端搭建視頻流服務(wù)器MJPG-Streamer,將采集到的視頻數(shù)據(jù)通過(guò)網(wǎng)絡(luò)端口進(jìn)行傳輸;PC端巧妙地將MJPG-Streamer的網(wǎng)頁(yè)接收代碼與OpenCV的庫(kù)函數(shù)結(jié)合,完成網(wǎng)絡(luò)視頻流的接收;最后利用PC的強(qiáng)勁處理能力進(jìn)行運(yùn)動(dòng)目標(biāo)跟蹤[3~4],跟蹤算法是基于Camshift算法和Kalman濾波器結(jié)合實(shí)現(xiàn)的[5]。系統(tǒng)方案如圖1所示。

圖1 系統(tǒng)方案框圖
3嵌入式平臺(tái)硬件設(shè)計(jì)
為保證視頻監(jiān)控跟蹤系統(tǒng)具備低延遲性且具有較好的處理效率,采用Cortex-A8為嵌入式系統(tǒng)的處理器。外圍器件由NAND Flash、網(wǎng)卡DM9000、網(wǎng)絡(luò)接口RJ45、USB接口等組成。嵌入式平臺(tái)的硬件框圖,如圖2所示。

圖2 嵌入式平臺(tái)硬件框圖
為了降低視頻的延遲,保證實(shí)時(shí)性,系統(tǒng)使用的是支持UVC(USB Video Class)協(xié)議并且可以以MJPEG模式輸出的攝像頭進(jìn)行視頻圖像的采集。這種攝像頭得到主流操作系統(tǒng)的支持,不需要對(duì)USB驅(qū)動(dòng)進(jìn)行修改[6],極大降低開(kāi)發(fā)的成本以及精力。
4軟件設(shè)計(jì)
基于Cortex-A8的視頻監(jiān)控跟蹤系統(tǒng)的軟件設(shè)計(jì)包括嵌入式平臺(tái)的搭建、視頻流服務(wù)器移植、網(wǎng)絡(luò)視頻流接收顯示和運(yùn)動(dòng)目標(biāo)跟蹤四個(gè)部分。
4.1ARM+Linux嵌入式平臺(tái)搭建
為保證嵌入式平臺(tái)穩(wěn)定且高效工作,在Cortex-A8平臺(tái)上移植Linux系統(tǒng)[7]。攝像頭采集是基于V4L2接口實(shí)現(xiàn),需要添加UVC免驅(qū)接口協(xié)議。步驟如下:
1) 移植2012.04.01版本的U-Boot進(jìn)行系統(tǒng)的引導(dǎo)啟動(dòng);
2) 移植與裁剪Linux 3.4.2版本的內(nèi)核作為系統(tǒng)內(nèi)核;
3) 使用Busybox構(gòu)建根文件系統(tǒng);
4) 添加UVC以及OHCI(Open Host Controller Interface)驅(qū)動(dòng)。
4.2視頻流服務(wù)器移植
MJPG-Streamer是一款開(kāi)源的視頻流服務(wù)器,采用的是V4L2視頻設(shè)備開(kāi)發(fā)架構(gòu)[8]。MJPG-Streamer可以將采集到的實(shí)時(shí)視頻數(shù)據(jù)通過(guò)網(wǎng)絡(luò)傳輸[9]。首先需要添加JPEG(Joint Photographic Experts Group)庫(kù),同時(shí)指定交叉編譯。
tar zxf mjpg-streamer-r63.tar.gz
cd mjpg-streamer-r63
1) 修改所有Makefile文件的編譯器指定。由于架構(gòu)上的差異,因此必須將所有Makefile文件指定的編譯器指定為:arm-linux-gcc;
2) 給plugins/input_uvc指定libjpeg的include文件:MJPG-Streamer需要JPEG庫(kù)進(jìn)行聯(lián)合編譯,并將編譯的include目錄指定為libjpeg的庫(kù)目錄;
3) 給plugins/input_uvc指定libjpeg的lib文件,將MJPG-Streamer編譯的lib目錄指定目錄。將編譯生成的相關(guān)可執(zhí)行文件和庫(kù)文件拷貝到嵌入式的文件系統(tǒng)。
4.3網(wǎng)絡(luò)視頻流的接收
在Window7 64位操作系統(tǒng)、VS2010(Visual Studio)編譯環(huán)境下完成網(wǎng)絡(luò)視頻流的接收。
視頻流服務(wù)器傳輸?shù)木W(wǎng)絡(luò)視頻流,可以通過(guò)網(wǎng)頁(yè)上指定服務(wù)器IP地址的方式(http://202.193.53.83:8080/?action=stream)實(shí)現(xiàn)視頻流接收功能。但是并不能夠使之在OpenCV進(jìn)行接收。而OpenCV提供的VideoCapture類(lèi)則實(shí)現(xiàn)了讀取本地視頻文件功能。系統(tǒng)巧妙地將MJPG-Streamer的網(wǎng)頁(yè)接收代碼與OpenCV函數(shù)庫(kù)相結(jié)合,代碼如下:
// 打開(kāi)指定地址,需要對(duì)接收視頻流的 // 類(lèi)型指定為JPEG類(lèi)型
const string address = "http://202.193.53.83:8080/?action=stream?dummy=param.mjpg";
if( !vcap.open( address ) )
{
cout << "Error opening video stream" << endl;
return -1;
}
Mat src;
while( vcap.read( src ))
{
// Mat 轉(zhuǎn) IplImage類(lèi)型
IplImage temp = src;
IplImage*frame=cvCloneImage( &temp ;
cvShowImage( "camshift", frame);
}
OpenCV接收的網(wǎng)絡(luò)視頻流數(shù)據(jù),如圖3所示。

圖3 OpenCV接收的網(wǎng)絡(luò)視頻流數(shù)據(jù)
address不僅指定了MJPG-Streamer的URL(Uniform Resource Locator)和視頻流傳輸?shù)姆绞?而且偽造了“param.mjpg”視頻流是MJPEG類(lèi)型。由于OpenCV支持的視頻圖像格式限制,所以必須偽造為MJPEG類(lèi)型。結(jié)合使用了VideoCapture類(lèi)和MJPG-Streamer的網(wǎng)頁(yè)接收代碼,實(shí)時(shí)地獲取視頻數(shù)據(jù),以完成網(wǎng)絡(luò)視頻流的接收。
4.4運(yùn)動(dòng)目標(biāo)跟蹤
運(yùn)動(dòng)目標(biāo)跟蹤使用是Camshift算法與Kalman濾波相結(jié)合的方法,來(lái)進(jìn)行運(yùn)動(dòng)目標(biāo)跟蹤。目標(biāo)跟蹤的前提是獲取到運(yùn)動(dòng)目標(biāo),系統(tǒng)啟動(dòng)的時(shí)候,使用鼠標(biāo)選取運(yùn)動(dòng)目標(biāo)進(jìn)行跟蹤。
Camshift算法(Continuously Adaptive MeanShift)算法的中心思想就是來(lái)源于Mean-Shift算法[10],是利用目標(biāo)顏色的直方圖模型將圖像轉(zhuǎn)換為顏色概率分布圖,從而實(shí)現(xiàn)運(yùn)動(dòng)目標(biāo)的跟蹤。Camshift流程圖如圖4所示。
為了減少光線變化帶來(lái)的影響,需要將獲得的圖像從RGB空間轉(zhuǎn)為HSV空間[11]。再用圖像的H分量計(jì)算出直方圖,直方圖中代表了不同的H分量出現(xiàn)的概率或者像素的個(gè)數(shù),得到了顏色概率分布圖。迭代調(diào)用MeanShift算法,得到質(zhì)心的位置。最后,將得到的質(zhì)心的位置作為下一幀搜索窗口的初始值的中心和大小,重新進(jìn)行搜索。

圖4 Camshift算法流程圖
當(dāng)運(yùn)動(dòng)目標(biāo)與背景沒(méi)有形成較大的連通區(qū)域的時(shí)候,即使存在噪聲,Camshift算法也可以較好地完成目標(biāo)的跟蹤。但是當(dāng)目標(biāo)與背景出現(xiàn)較為嚴(yán)重的連通區(qū)域或者目標(biāo)被嚴(yán)重遮擋時(shí)候,Camshift算法失效,就采用Kalman濾波器的預(yù)測(cè)值來(lái)代替Camshift計(jì)算出來(lái)的最優(yōu)位置值。
Kalman濾波器是一種基于最小方差的最佳線性遞歸濾波算法,它能夠?qū)ο乱粠瑓^(qū)域的中心的位置進(jìn)行預(yù)測(cè)。
利用Camshift算法與Kalman濾波器的結(jié)合對(duì)運(yùn)動(dòng)目標(biāo)進(jìn)行跟蹤,算法框圖如圖5所示。

圖5 算法框圖
Camshift算法與Kalman濾波器的結(jié)合,保證了較低幀率的時(shí)候,也可以順利地跟蹤到運(yùn)動(dòng)目標(biāo),跟蹤效果圖6所示。

圖6 跟蹤效果
5結(jié)語(yǔ)
經(jīng)測(cè)試,本文設(shè)計(jì)的基于Cortex-A8視頻監(jiān)控跟蹤系統(tǒng)可以有效且高效地實(shí)現(xiàn)視頻監(jiān)控及跟蹤功能。系統(tǒng)充分結(jié)合了開(kāi)源軟件MJPG-Streamer和OpenCV,保證了視頻數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性與運(yùn)動(dòng)目標(biāo)跟蹤的可靠性,同時(shí)降低了視頻監(jiān)控設(shè)備的成本。結(jié)合了嵌入式平臺(tái)與PC端,大大降低了視頻監(jiān)控系統(tǒng)的開(kāi)發(fā)成本并縮短了開(kāi)發(fā)周期,同時(shí)又提供了足夠的性能應(yīng)付圖像處理帶來(lái)的開(kāi)銷(xiāo)。Camshift算法與Kalman濾波器的相結(jié)合,保證了在短時(shí)間內(nèi)運(yùn)動(dòng)目標(biāo)被遮擋時(shí)候,系統(tǒng)仍然可以實(shí)現(xiàn)對(duì)目標(biāo)的有效跟蹤。系統(tǒng)相比傳統(tǒng)的視頻監(jiān)控系統(tǒng),具備開(kāi)發(fā)成本低、開(kāi)發(fā)周期短、延遲較低等優(yōu)點(diǎn),具有廣闊的市場(chǎng)應(yīng)用前景。
參 考 文 獻(xiàn)
[1] 賈云得.機(jī)器視覺(jué)[M].北京:科學(xué)出版社,2000.
JIA Yunde. Machine Vision[M]. Beijing: Science Press,2000.
[2] 梁永恩,萬(wàn)世明.基于S3C6410的智能家居控制系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)與數(shù)字工程,2014(6):1104-1107.
LIANG Yongen, WAN Shiming. Intelligent Home Control System Based on S3C6410[J]. Computer & Digital Engineering,2014(6):1104-1107.
[3] 袁敏,張仁杰,邵娜,等.基于Linux的ARM9多路視頻監(jiān)控系統(tǒng)設(shè)計(jì)[J].國(guó)外電子測(cè)量技術(shù),2009(1):42-44.
YUAN Min, ZHANG Renjie, SHAO Na, et al. ARM9 Multi-channel Video Monitoring System Design Base on Linux[J]. Foreign Electronic Measurement Technology,2009(1):42-44.
[4] 喬榮愛(ài),李相海.基于嵌入式Linux平臺(tái)的多路視頻監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)與數(shù)字工程,2015:1360-1364.
QIAO Rongain, LI Xianghai. Design and Dmplementation of Multi-channel Video Monitoring System Based on Embeded Linux Platform[J]. Computer & Digital Engineering,2015(7):1360-1364.
[5] 樂(lè)應(yīng)英,仲濤.適用于遮擋和目標(biāo)尺度變化的改進(jìn)Camshift算法[J].計(jì)算機(jī)與數(shù)字工程,2015(6):1018-1022.
YUE Yingying, ZHONG Tao. An Improved Camshift Algorithm Based on Occlusion and Scale Variation[J]. Computer & Digital Engineering,2015(6):1018-1022.
[6] 殷開(kāi)亮.基于UVC協(xié)議的USB3.0圖像采集系統(tǒng)設(shè)計(jì)[D].蘇州:蘇州大學(xué),2014.
YIN Kailiang. Design of USB3.0 Based on Image Acquisition System with UVC Supported[D]. Suzhou: Soochow University,2014.
[7] 韋東山.嵌入式Linux應(yīng)用開(kāi)發(fā)完全手冊(cè)[M].北京:人民郵電出版社,2008:240-360.
WEI Dongshan. Application Development of Embeded Linux[M]. Beijing: Posts & Telecom Press,2008:240-360.
[8] 徐家,陳奇.基于V4L2的視頻設(shè)備驅(qū)動(dòng)開(kāi)發(fā)[J].計(jì)算機(jī)工程與設(shè)計(jì),2010(16):3569-3572.
XU Jia, CHEN Qi. Video Driver Development Based on V4L2[J]. Computer Engineering and Design,2010(16):3569-3572.
[9] 楊宏,張志文.基于Web的嵌入式遠(yuǎn)程監(jiān)控系統(tǒng)的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)與數(shù)字工程,2012(10):70-72.
YANG Hong, ZHANG Zhiwen. Research and Implementation of Remote Video Monitoring System Based on Embeded Web[J]. Computer & Digital Engineering,2012(10):70-72.
[10] Zhang L, Chen J, Xiao S, et al. IR Blob Target Tracking Based on Improved Mean Shift Method[C]//Computational and Information Sciences (ICCIS), 2010 International Conference on, 2010:17-19.
[11] Chi-Juang H, Kai-Yew L. Automated image tracking based on the CAMSHIFT algorithm with adaboost and target trajectory and size estimation[C]//Control & Automation (ICCA), 11th IEEE International Conference on, Taichung,2014:18-20.
中圖分類(lèi)號(hào)TP391
DOI:10.3969/j.issn.1672-9722.2016.03.035
作者簡(jiǎn)介:邱曉金,男,碩士研究生,研究方向:嵌入式、光通信。陳名松,男,教授,研究方向:教授光通信、光電子技術(shù)、寬帶通信網(wǎng)絡(luò)。黃高見(jiàn),男,碩士研究生,研究方向:嵌入式、光通信。
基金項(xiàng)目:廣西科技公關(guān)開(kāi)發(fā)項(xiàng)目(編號(hào):桂科攻1348014-9);廣西研究生創(chuàng)新項(xiàng)目(編號(hào):YCSZ2015145)資助。
收稿日期:2015年9月13日,修回日期:2015年10月28日