徐健,劉懷通
(西安工程大學(xué) 電子與信息學(xué)院,西安 710048)
Cortex-A8的遠(yuǎn)程運(yùn)動(dòng)目標(biāo)檢測(cè)系統(tǒng)設(shè)計(jì)*
徐健,劉懷通
(西安工程大學(xué) 電子與信息學(xué)院,西安 710048)
設(shè)計(jì)了一種基于Cortex-A8的遠(yuǎn)程視頻運(yùn)動(dòng)目標(biāo)檢測(cè)系統(tǒng)。系統(tǒng)包含以Cortex-A8為核心的視頻采集端和以VS2015與OpenCV3.2結(jié)合為運(yùn)行環(huán)境的運(yùn)動(dòng)目標(biāo)檢測(cè)端。視頻采集端以S5PV210芯片作為處理器,以USB攝像頭進(jìn)行視頻采集,并搭建了Linux操作系統(tǒng)對(duì)視頻數(shù)據(jù)進(jìn)行H.264編碼,對(duì)編碼后的視頻數(shù)據(jù)進(jìn)行RTP打包和網(wǎng)絡(luò)傳輸;在PC機(jī)上通過FFMPEG對(duì)視頻數(shù)據(jù)進(jìn)行接收解碼,然后以O(shè)penCV函數(shù)庫中的函數(shù)實(shí)現(xiàn)對(duì)ViBe算法的改進(jìn),使用改進(jìn)后的ViBe算法對(duì)運(yùn)動(dòng)運(yùn)動(dòng)目標(biāo)加以檢測(cè)。經(jīng)過測(cè)試,系統(tǒng)能夠有效地減少視頻數(shù)據(jù)量,而且可以得到清晰的運(yùn)動(dòng)目標(biāo)。
Cortex-A8;H.264編碼;OpenCV庫;ViBe算法;運(yùn)動(dòng)目標(biāo)檢測(cè)
隨著基于嵌入式的遠(yuǎn)程視頻監(jiān)控技術(shù)的發(fā)展,視頻監(jiān)控系統(tǒng)已經(jīng)在安防、交通等領(lǐng)域得到了更加廣泛的應(yīng)用。在視頻數(shù)據(jù)的遠(yuǎn)程傳輸過程中,必須要考慮數(shù)據(jù)量的大小以及數(shù)據(jù)的正確性以及完整性。目前比較常用的視頻壓縮算法有MPEG-4和H.264[1],但H.264具有低碼率、圖像高質(zhì)量、容錯(cuò)能力和網(wǎng)絡(luò)適應(yīng)性強(qiáng)等特點(diǎn),更適合于遠(yuǎn)程視頻數(shù)據(jù)傳輸時(shí)的數(shù)據(jù)壓縮。
目前常用的一些背景減除法有GMM算法、CodeBook算法、GMG算法和Vibe算法。ViBe算法采用隨機(jī)聚類技術(shù)從視頻序列第1幀中每一個(gè)像素的8鄰域內(nèi),隨機(jī)采集20個(gè)樣本用于初始化背景模型,背景模型不需要經(jīng)過多幀的訓(xùn)練,從第2幀開始就可以檢測(cè)出運(yùn)動(dòng)目標(biāo)[2]。本系統(tǒng)所采用的是改進(jìn)的ViBe算法對(duì)運(yùn)動(dòng)目標(biāo)進(jìn)行檢測(cè)。
本系統(tǒng)采用天嵌公司生產(chǎn)的TQ210開發(fā)板為硬件開發(fā)核心,其以三星公司生產(chǎn)的S5PV210芯片作為處理器。S5PV210采用了ARM Cortex-A8內(nèi)核,ARMv7指令集,主頻可達(dá)1 GHz,64/32位內(nèi)部總線結(jié)構(gòu),具有32/32 KB的數(shù)據(jù)/指令一級(jí)緩存和512 KB的二級(jí)緩存,可以實(shí)現(xiàn)2 000 DMIPS(每秒運(yùn)算2億條指令集)的高性能運(yùn)算能力[3]。處理器外圍電路包括SDRAM、NAND Flash、網(wǎng)卡DM9000、USB接口、串行通信接口、RJ45網(wǎng)絡(luò)接口、電源模塊、時(shí)鐘模塊等,系統(tǒng)整體結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)整體結(jié)構(gòu)圖
基于Cortex-A8的嵌入式遠(yuǎn)程視頻監(jiān)控及運(yùn)動(dòng)目標(biāo)檢測(cè)系統(tǒng)的軟件設(shè)計(jì)流程包括視頻數(shù)據(jù)采集、視頻數(shù)據(jù)編碼、視頻數(shù)據(jù)傳輸、視頻數(shù)據(jù)解碼、運(yùn)動(dòng)目標(biāo)檢測(cè)。
2.1 視頻數(shù)據(jù)采集
本系統(tǒng)通過OV3660圖像傳感器完成視頻數(shù)據(jù)的采集,該攝像頭支持300萬像素720P高清的每秒30幀的錄像功能,以及4:3的拍照功能,使用戶可以方便地捕獲和共享視頻和靜態(tài)圖像,并支持輸出YUV數(shù)據(jù)。
圖2 視頻數(shù)據(jù)采集流程圖
V4L2(Video For Linux two)是 Linux系統(tǒng)下視頻設(shè)備驅(qū)動(dòng)程序接口規(guī)范,具有使程序發(fā)現(xiàn)設(shè)備和操作設(shè)備的能力。V4L2采集視頻數(shù)據(jù)信息流程如圖2所示。 它主要是用一系列的回調(diào)函數(shù)來實(shí)現(xiàn)這些功能,如設(shè)置攝像頭的頻率、幀頻、視頻壓縮格式和圖像參數(shù)等。
2.2 視頻數(shù)據(jù)編碼
H.264是國際標(biāo)準(zhǔn)化組織(ISO)和國際電信聯(lián)盟(ITU)共同提出的繼MPEG4之后的新一代數(shù)字視頻壓縮格式。H.264標(biāo)準(zhǔn)的主要目標(biāo)是:與其他現(xiàn)有的視頻編碼標(biāo)準(zhǔn)相比,在相同的帶寬下提供更加優(yōu)秀的圖象質(zhì)量。其相比于其他編碼方式,主要優(yōu)點(diǎn)有低碼率(Low Bit Rate)、圖像高質(zhì)量、容錯(cuò)能力強(qiáng)、網(wǎng)絡(luò)適應(yīng)性強(qiáng)[4]。
本設(shè)計(jì)采用H.264編碼標(biāo)準(zhǔn),S5PV210內(nèi)部集成了多格式的視頻編解碼器(MFC),支持H.264的硬件編解碼且速度最高可達(dá)到30 pfs,可以通過硬件編碼模塊MFC的API接口函數(shù)實(shí)現(xiàn)H.264的視頻編碼[5]。編碼流程如圖3所示。
圖3 視頻數(shù)據(jù)編碼流程圖
2.3 視頻數(shù)據(jù)傳輸
常見的網(wǎng)絡(luò)傳輸協(xié)議有TCP/IP、UDP等,本系統(tǒng)采用基于UDP協(xié)議對(duì)視頻數(shù)據(jù)進(jìn)行傳輸。由于H.264對(duì)視頻的編碼數(shù)據(jù)在直接用于網(wǎng)絡(luò)傳輸時(shí),容易造成數(shù)據(jù)包的丟失以及傳輸錯(cuò)誤,因此本系統(tǒng)對(duì)原始的H.264編碼數(shù)據(jù)進(jìn)行了RTP打包,便于網(wǎng)絡(luò)傳輸。視頻數(shù)據(jù)傳輸具體流程如圖4所示。
圖4 視頻數(shù)據(jù)傳輸流程圖
2.4 視頻數(shù)據(jù)解碼
由于OpenCV不能直接對(duì)H.264編碼的視頻數(shù)據(jù)進(jìn)行解碼,因此本系統(tǒng)采用FFMPEG進(jìn)行客戶端的視頻數(shù)據(jù)接收以及解碼[6]。
FFMPEG是一個(gè)開源免費(fèi)跨平臺(tái)的視頻和音頻流方案,屬于自由軟件,采用LGPL或GPL許可證(依據(jù)你選擇的組件),是一個(gè)集錄制、轉(zhuǎn)換音/視頻、編解碼功能為一體的、完整的開源解決方案。FFMPEG的開發(fā)基于Linux操作系統(tǒng),也可在Windows等大多數(shù)操作系統(tǒng)中編譯和使用[7]。
FFMPEG可以采集視頻采集卡或USB攝像頭的圖像,還可以進(jìn)行屏幕錄制,同時(shí)還支持以RTP方式將視頻流傳送給支持RTSP的流媒體服務(wù)器。其解碼流程如圖5所示。
圖5 視頻數(shù)據(jù)解碼流程圖
2.5 運(yùn)動(dòng)目標(biāo)檢測(cè)
運(yùn)動(dòng)目標(biāo)檢測(cè)就是將運(yùn)動(dòng)目標(biāo)從視頻圖像序列的背景中提取出來,是目標(biāo)分類、目標(biāo)跟蹤以及行為理解等處理的基礎(chǔ),它是計(jì)算機(jī)視覺及數(shù)字圖像處理研究領(lǐng)域的一項(xiàng)關(guān)鍵技術(shù)。
運(yùn)動(dòng)目標(biāo)檢測(cè)算法主要有幀間差分法、光流法、背景減除法。背景減除法由于實(shí)時(shí)性較好,是目前應(yīng)用最為廣泛的一種運(yùn)動(dòng)目標(biāo)檢測(cè)算法,它首先要建立一個(gè)合適的背景模型,然后將當(dāng)前幀圖像與該背景模型進(jìn)行差分運(yùn)算來計(jì)算運(yùn)動(dòng)區(qū)域,該類算法能夠相對(duì)完整地提取出運(yùn)動(dòng)目標(biāo),但是對(duì)背景環(huán)境的變化比較敏感[8]。
2.5.1 ViBe算法簡介
ViBe算法是一種比較優(yōu)秀的背景減除算法,是由Olivier Barnich等人在 2011 年提出的,其算法步驟大致分為3步:
① 背景建模及初始化。記錄背景圖像中每一個(gè)像素點(diǎn)x處的像素值為v(x),則該像素點(diǎn)處由N個(gè)背景樣本值組成的背景模型M(x)為:
(1)
從點(diǎn)x的8鄰域中隨機(jī)選取20個(gè)樣本值用于初始化背景模型。
② 運(yùn)動(dòng)目標(biāo)檢測(cè)。對(duì)于當(dāng)前幀的某個(gè)像素點(diǎn)x,在歐氏色彩空間里建立以其像素值v(x)為圓心,R為半徑的一個(gè)圓SR(v(x)),統(tǒng)計(jì)圓SR(v(x))與M(x)交集中的點(diǎn)數(shù)P,同時(shí)設(shè)定一個(gè)閾值Pmin。如果P(SR(v(x)) ∩ M(x))≤ Pmin,則x點(diǎn)將被分類為背景,否則為前景(即運(yùn)動(dòng)目標(biāo))。
③ 背景模型更新。ViBe算法在模型更新時(shí)采用隨機(jī)替換像素原則,同時(shí)運(yùn)用空間傳播機(jī)制使得像素模型與鄰域模型互相更新。對(duì)被判斷為背景的像素點(diǎn),以一定的概率對(duì)像素點(diǎn)以及領(lǐng)域點(diǎn)進(jìn)行更新[9]。
2.5.2 ViBe算法的改進(jìn)
然而ViBe算法仍然存在一些缺陷與不足之處,由于ViBe算法只用第一幀圖像來建立背景模型,如果第一幀中有運(yùn)動(dòng)物體存在,就會(huì)在后續(xù)的檢測(cè)中出現(xiàn)鬼影現(xiàn)象;在檢測(cè)的運(yùn)動(dòng)目標(biāo)有陰影存在時(shí),則在檢測(cè)出來的前景目標(biāo)中同樣含有陰影[10]。針對(duì)這些缺陷與不足,本系統(tǒng)對(duì)ViBe算法做了以下兩點(diǎn)改進(jìn):
① 針對(duì)鬼影現(xiàn)象,本系統(tǒng)采用三幀差分法對(duì)初始幀進(jìn)行處理,用處理后的結(jié)果初始化背景模型。本文采用的三幀差分法基本原理是視頻開始傳輸時(shí)選取視頻圖像中前L幀圖像,并設(shè)定選取步長step,當(dāng)前處理的幀號(hào)為i,背景生成幀號(hào)為b。分別計(jì)算i-step、i、i+step三幀的差分圖像,將差分之后的圖像采用大津法進(jìn)行二值化處理,得到圖像b并將其中運(yùn)動(dòng)目標(biāo)的位置移除。最后進(jìn)行運(yùn)動(dòng)目標(biāo)位置的填充,將填充之后的圖像作為視頻的真實(shí)背景模型輸出[11]。算法的具體流程如圖6所示。
圖6 三幀差分法初始化背景模型流程圖
圖7 陰影去除流程圖
② 陰影去除。目前對(duì)陰影的檢測(cè)與去除算法有基于模型的方法和基于特征的方法兩大類。基于特征的方法首先需要將包含有陰影的運(yùn)動(dòng)前景區(qū)域從背景中提取出來,然后在前景區(qū)域內(nèi)通過圖像的顏色、紋理或梯度等特征來檢測(cè)并確定陰影區(qū)域,再將陰影區(qū)域從真實(shí)的運(yùn)動(dòng)目標(biāo)區(qū)域中去除。
本系統(tǒng)采用基于梯度特征的陰影去除法,其步驟為:①用當(dāng)前幀圖像與建立并初始化之后的背景圖像相減;②進(jìn)行二值化處理,得到二值化圖像;③對(duì)前景二值圖像進(jìn)行形態(tài)學(xué)開、閉運(yùn)算,進(jìn)行去噪和空洞填充;④用LOG算子檢測(cè)前景與背景灰度圖像的梯度信息;⑤對(duì)二者的梯度信息進(jìn)行比較,若梯度信息一致則表明此區(qū)域是陰影,進(jìn)行陰影去除;⑥對(duì)處理后的圖像進(jìn)行形態(tài)學(xué)開、閉運(yùn)算,得到最終的運(yùn)動(dòng)目標(biāo)檢測(cè)圖像[12-13]。算法流程圖如圖7所示。
系統(tǒng)的測(cè)試結(jié)果如圖8所示,其中圖8(a)為視頻的第一幀,圖8(b)為原始ViBe算法對(duì)第一幀運(yùn)動(dòng)目標(biāo)的檢測(cè)結(jié)果,圖8(c)為本文改進(jìn)的ViBe算法對(duì)第一幀運(yùn)動(dòng)目標(biāo)的檢測(cè)結(jié)果。
由于第一幀中有運(yùn)動(dòng)的車輛,所以原始ViBe算法產(chǎn)生了鬼影現(xiàn)象,如圖e所示。圖8(d)為圖8(e)的原始視頻圖像,為視頻中第52幀,圖8(f)為本系統(tǒng)改進(jìn)的ViBe算法對(duì)圖8(d)所示圖像的檢測(cè)。圖8(g)、(h)、(i)分別為視頻中第2 017幀的原始圖像、原ViBe算法和本文改進(jìn)的ViBe算法為運(yùn)動(dòng)檢測(cè)后的圖像。
圖8 運(yùn)動(dòng)目標(biāo)檢測(cè)結(jié)果
本文設(shè)計(jì)了一種基于Cortex-A8的遠(yuǎn)程視頻運(yùn)動(dòng)目標(biāo)檢測(cè)系統(tǒng),系統(tǒng)以S5PV210為嵌入式視頻采集端的處理器,使用USB攝像頭對(duì)視頻數(shù)據(jù)進(jìn)行采集,以H.264為數(shù)據(jù)編碼方法,采用以太網(wǎng)傳輸數(shù)據(jù)。
[1] 齊誼娜,徐海龍,王曉丹.H·264與MPEG-4壓縮編碼標(biāo)準(zhǔn)的分析與比較[J].計(jì)算機(jī)測(cè)量與控制,2006(12):1720-1722.
[2] 余燁,曹明偉,岳峰. EVibe:一種改進(jìn)的Vibe運(yùn)動(dòng)目標(biāo)檢測(cè)算法[J]. 儀器儀表學(xué)報(bào),2014 (4):924-931.
[3] 維基百科.ARMCortex-A8[EB/OL].[2017-03].http: //zh.wikipedia.org /wiki /ARM_Cortex-A8.
[4] 陳續(xù),劉國巍.Cortex-A8和H.264的無線視頻監(jiān)控系統(tǒng)設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2015(3):46-49.
[5] 王孟柳,陳和平,劉夏.基于Cortex-A8的智能視頻傳感器的設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用與軟件,2015 (4):137-140.
[6] 辛長春,婁小平,呂乃光.基于FFmpeg的遠(yuǎn)程視頻監(jiān)控系統(tǒng)編解碼[J].電子技術(shù),2013(1):3-5.
[7] 李芳芳,蘇凱雄.基于FFmpeg的H.264格式轉(zhuǎn)換器的設(shè)計(jì)與實(shí)現(xiàn)[J].電視技術(shù),2016(7):32-35.
[8] 尹凱,魏江,李正.等.改進(jìn)的Vibe運(yùn)動(dòng)目標(biāo)檢測(cè)算法[J]. 電子設(shè)計(jì)工程,2014 (16):178-180.
[9] 潘璠,趙曉杰,文朝舉,等. 一種基于幀差法改進(jìn)的VIBE運(yùn)動(dòng)目標(biāo)檢測(cè)算法[J]. 電子技術(shù)與軟件工程,2016 (13):115-116.
[10] 謝紅,原博,解武. 一種基于改進(jìn)三幀差分和ViBe算法的運(yùn)動(dòng)目標(biāo)檢測(cè)算法[J]. 應(yīng)用科技,2016(6):46-52.
[11] 魏洪濤,李瑾,吳細(xì)秀. 融合幀差和Vibe的運(yùn)動(dòng)目標(biāo)檢測(cè)算法[J]. 計(jì)算機(jī)應(yīng)用研究,2017(5):1-5.
[12] 仇春春,王恬,程海粟.等. 基于改進(jìn)Vibe算法的行人目標(biāo)檢測(cè)[J]. 信息技術(shù),2016(3):6-9,14.
[13] 吳亞順,王平,白朝元,等.一種基于梯度特征的陰影消除方法[J].電腦編程技巧與維護(hù),2014 (17):66-68.
Remote Video Moving Object Detection System Based on Cortex-A8
Xu Jian,Liu Huaitong
(College of Electrics and Information,Xi'an Polytechnic University,Xi'an 710048,China)
In the paper, a remote video moving object detection system based on Cortex-A8 is designed.The system includes video acquisition which takes Cortex-A8 as the core,then it combines with VS2015 and OpenCV3.2 as the moving target detection end of the operating environment.The video capture takes S5pv210 chip as a processor,it takes video capture for USB camera,and it builds a Linux operating system to encode video data with H.264,then the encoded video data is managed for RTP packaging and network transmission.On the PC,the data is
and decoded through the FFMPEG,and then with OpenCV function library algorithm to achieve the improvement of ViBe algorithm and the improved algorithm is used to detect moving targets.After testing,the system can effectively reduce the amount of video data,and can get a clear moving target.
Cortex-A8;H.264 coding;OpenCV library;ViBe algorithm;moving target detection
陜西省科技廳工業(yè)科技攻關(guān)項(xiàng)目(2015GY075)。
TP391.8
A
?迪娜
2017-03-24)