徐健,劉懷通
(西安工程大學 電子與信息學院,西安 710048)
Cortex-A8的遠程運動目標檢測系統設計*
徐健,劉懷通
(西安工程大學 電子與信息學院,西安 710048)
設計了一種基于Cortex-A8的遠程視頻運動目標檢測系統。系統包含以Cortex-A8為核心的視頻采集端和以VS2015與OpenCV3.2結合為運行環境的運動目標檢測端。視頻采集端以S5PV210芯片作為處理器,以USB攝像頭進行視頻采集,并搭建了Linux操作系統對視頻數據進行H.264編碼,對編碼后的視頻數據進行RTP打包和網絡傳輸;在PC機上通過FFMPEG對視頻數據進行接收解碼,然后以OpenCV函數庫中的函數實現對ViBe算法的改進,使用改進后的ViBe算法對運動運動目標加以檢測。經過測試,系統能夠有效地減少視頻數據量,而且可以得到清晰的運動目標。
Cortex-A8;H.264編碼;OpenCV庫;ViBe算法;運動目標檢測
隨著基于嵌入式的遠程視頻監控技術的發展,視頻監控系統已經在安防、交通等領域得到了更加廣泛的應用。在視頻數據的遠程傳輸過程中,必須要考慮數據量的大小以及數據的正確性以及完整性。目前比較常用的視頻壓縮算法有MPEG-4和H.264[1],但H.264具有低碼率、圖像高質量、容錯能力和網絡適應性強等特點,更適合于遠程視頻數據傳輸時的數據壓縮。
目前常用的一些背景減除法有GMM算法、CodeBook算法、GMG算法和Vibe算法。ViBe算法采用隨機聚類技術從視頻序列第1幀中每一個像素的8鄰域內,隨機采集20個樣本用于初始化背景模型,背景模型不需要經過多幀的訓練,從第2幀開始就可以檢測出運動目標[2]。本系統所采用的是改進的ViBe算法對運動目標進行檢測。
本系統采用天嵌公司生產的TQ210開發板為硬件開發核心,其以三星公司生產的S5PV210芯片作為處理器。S5PV210采用了ARM Cortex-A8內核,ARMv7指令集,主頻可達1 GHz,64/32位內部總線結構,具有32/32 KB的數據/指令一級緩存和512 KB的二級緩存,可以實現2 000 DMIPS(每秒運算2億條指令集)的高性能運算能力[3]。處理器外圍電路包括SDRAM、NAND Flash、網卡DM9000、USB接口、串行通信接口、RJ45網絡接口、電源模塊、時鐘模塊等,系統整體結構如圖1所示。

圖1 系統整體結構圖
基于Cortex-A8的嵌入式遠程視頻監控及運動目標檢測系統的軟件設計流程包括視頻數據采集、視頻數據編碼、視頻數據傳輸、視頻數據解碼、運動目標檢測。
2.1 視頻數據采集
本系統通過OV3660圖像傳感器完成視頻數據的采集,該攝像頭支持300萬像素720P高清的每秒30幀的錄像功能,以及4:3的拍照功能,使用戶可以方便地捕獲和共享視頻和靜態圖像,并支持輸出YUV數據。

圖2 視頻數據采集流程圖
V4L2(Video For Linux two)是 Linux系統下視頻設備驅動程序接口規范,具有使程序發現設備和操作設備的能力。V4L2采集視頻數據信息流程如圖2所示。 它主要是用一系列的回調函數來實現這些功能,如設置攝像頭的頻率、幀頻、視頻壓縮格式和圖像參數等。
2.2 視頻數據編碼
H.264是國際標準化組織(ISO)和國際電信聯盟(ITU)共同提出的繼MPEG4之后的新一代數字視頻壓縮格式。H.264標準的主要目標是:與其他現有的視頻編碼標準相比,在相同的帶寬下提供更加優秀的圖象質量。其相比于其他編碼方式,主要優點有低碼率(Low Bit Rate)、圖像高質量、容錯能力強、網絡適應性強[4]。
本設計采用H.264編碼標準,S5PV210內部集成了多格式的視頻編解碼器(MFC),支持H.264的硬件編解碼且速度最高可達到30 pfs,可以通過硬件編碼模塊MFC的API接口函數實現H.264的視頻編碼[5]。編碼流程如圖3所示。

圖3 視頻數據編碼流程圖
2.3 視頻數據傳輸
常見的網絡傳輸協議有TCP/IP、UDP等,本系統采用基于UDP協議對視頻數據進行傳輸。由于H.264對視頻的編碼數據在直接用于網絡傳輸時,容易造成數據包的丟失以及傳輸錯誤,因此本系統對原始的H.264編碼數據進行了RTP打包,便于網絡傳輸。視頻數據傳輸具體流程如圖4所示。

圖4 視頻數據傳輸流程圖
2.4 視頻數據解碼
由于OpenCV不能直接對H.264編碼的視頻數據進行解碼,因此本系統采用FFMPEG進行客戶端的視頻數據接收以及解碼[6]。
FFMPEG是一個開源免費跨平臺的視頻和音頻流方案,屬于自由軟件,采用LGPL或GPL許可證(依據你選擇的組件),是一個集錄制、轉換音/視頻、編解碼功能為一體的、完整的開源解決方案。FFMPEG的開發基于Linux操作系統,也可在Windows等大多數操作系統中編譯和使用[7]。
FFMPEG可以采集視頻采集卡或USB攝像頭的圖像,還可以進行屏幕錄制,同時還支持以RTP方式將視頻流傳送給支持RTSP的流媒體服務器。其解碼流程如圖5所示。

圖5 視頻數據解碼流程圖
2.5 運動目標檢測
運動目標檢測就是將運動目標從視頻圖像序列的背景中提取出來,是目標分類、目標跟蹤以及行為理解等處理的基礎,它是計算機視覺及數字圖像處理研究領域的一項關鍵技術。
運動目標檢測算法主要有幀間差分法、光流法、背景減除法。背景減除法由于實時性較好,是目前應用最為廣泛的一種運動目標檢測算法,它首先要建立一個合適的背景模型,然后將當前幀圖像與該背景模型進行差分運算來計算運動區域,該類算法能夠相對完整地提取出運動目標,但是對背景環境的變化比較敏感[8]。
2.5.1 ViBe算法簡介
ViBe算法是一種比較優秀的背景減除算法,是由Olivier Barnich等人在 2011 年提出的,其算法步驟大致分為3步:
① 背景建模及初始化。記錄背景圖像中每一個像素點x處的像素值為v(x),則該像素點處由N個背景樣本值組成的背景模型M(x)為:
(1)
從點x的8鄰域中隨機選取20個樣本值用于初始化背景模型。
② 運動目標檢測。對于當前幀的某個像素點x,在歐氏色彩空間里建立以其像素值v(x)為圓心,R為半徑的一個圓SR(v(x)),統計圓SR(v(x))與M(x)交集中的點數P,同時設定一個閾值Pmin。如果P(SR(v(x)) ∩ M(x))≤ Pmin,則x點將被分類為背景,否則為前景(即運動目標)。
③ 背景模型更新。ViBe算法在模型更新時采用隨機替換像素原則,同時運用空間傳播機制使得像素模型與鄰域模型互相更新。對被判斷為背景的像素點,以一定的概率對像素點以及領域點進行更新[9]。
2.5.2 ViBe算法的改進
然而ViBe算法仍然存在一些缺陷與不足之處,由于ViBe算法只用第一幀圖像來建立背景模型,如果第一幀中有運動物體存在,就會在后續的檢測中出現鬼影現象;在檢測的運動目標有陰影存在時,則在檢測出來的前景目標中同樣含有陰影[10]。針對這些缺陷與不足,本系統對ViBe算法做了以下兩點改進:
① 針對鬼影現象,本系統采用三幀差分法對初始幀進行處理,用處理后的結果初始化背景模型。本文采用的三幀差分法基本原理是視頻開始傳輸時選取視頻圖像中前L幀圖像,并設定選取步長step,當前處理的幀號為i,背景生成幀號為b。分別計算i-step、i、i+step三幀的差分圖像,將差分之后的圖像采用大津法進行二值化處理,得到圖像b并將其中運動目標的位置移除。最后進行運動目標位置的填充,將填充之后的圖像作為視頻的真實背景模型輸出[11]。算法的具體流程如圖6所示。

圖6 三幀差分法初始化背景模型流程圖

圖7 陰影去除流程圖
② 陰影去除。目前對陰影的檢測與去除算法有基于模型的方法和基于特征的方法兩大類。基于特征的方法首先需要將包含有陰影的運動前景區域從背景中提取出來,然后在前景區域內通過圖像的顏色、紋理或梯度等特征來檢測并確定陰影區域,再將陰影區域從真實的運動目標區域中去除。
本系統采用基于梯度特征的陰影去除法,其步驟為:①用當前幀圖像與建立并初始化之后的背景圖像相減;②進行二值化處理,得到二值化圖像;③對前景二值圖像進行形態學開、閉運算,進行去噪和空洞填充;④用LOG算子檢測前景與背景灰度圖像的梯度信息;⑤對二者的梯度信息進行比較,若梯度信息一致則表明此區域是陰影,進行陰影去除;⑥對處理后的圖像進行形態學開、閉運算,得到最終的運動目標檢測圖像[12-13]。算法流程圖如圖7所示。
系統的測試結果如圖8所示,其中圖8(a)為視頻的第一幀,圖8(b)為原始ViBe算法對第一幀運動目標的檢測結果,圖8(c)為本文改進的ViBe算法對第一幀運動目標的檢測結果。
由于第一幀中有運動的車輛,所以原始ViBe算法產生了鬼影現象,如圖e所示。圖8(d)為圖8(e)的原始視頻圖像,為視頻中第52幀,圖8(f)為本系統改進的ViBe算法對圖8(d)所示圖像的檢測。圖8(g)、(h)、(i)分別為視頻中第2 017幀的原始圖像、原ViBe算法和本文改進的ViBe算法為運動檢測后的圖像。

圖8 運動目標檢測結果
本文設計了一種基于Cortex-A8的遠程視頻運動目標檢測系統,系統以S5PV210為嵌入式視頻采集端的處理器,使用USB攝像頭對視頻數據進行采集,以H.264為數據編碼方法,采用以太網傳輸數據。

[1] 齊誼娜,徐海龍,王曉丹.H·264與MPEG-4壓縮編碼標準的分析與比較[J].計算機測量與控制,2006(12):1720-1722.
[2] 余燁,曹明偉,岳峰. EVibe:一種改進的Vibe運動目標檢測算法[J]. 儀器儀表學報,2014 (4):924-931.
[3] 維基百科.ARMCortex-A8[EB/OL].[2017-03].http: //zh.wikipedia.org /wiki /ARM_Cortex-A8.
[4] 陳續,劉國巍.Cortex-A8和H.264的無線視頻監控系統設計[J].單片機與嵌入式系統應用,2015(3):46-49.
[5] 王孟柳,陳和平,劉夏.基于Cortex-A8的智能視頻傳感器的設計[J].計算機應用與軟件,2015 (4):137-140.
[6] 辛長春,婁小平,呂乃光.基于FFmpeg的遠程視頻監控系統編解碼[J].電子技術,2013(1):3-5.
[7] 李芳芳,蘇凱雄.基于FFmpeg的H.264格式轉換器的設計與實現[J].電視技術,2016(7):32-35.
[8] 尹凱,魏江,李正.等.改進的Vibe運動目標檢測算法[J]. 電子設計工程,2014 (16):178-180.
[9] 潘璠,趙曉杰,文朝舉,等. 一種基于幀差法改進的VIBE運動目標檢測算法[J]. 電子技術與軟件工程,2016 (13):115-116.
[10] 謝紅,原博,解武. 一種基于改進三幀差分和ViBe算法的運動目標檢測算法[J]. 應用科技,2016(6):46-52.
[11] 魏洪濤,李瑾,吳細秀. 融合幀差和Vibe的運動目標檢測算法[J]. 計算機應用研究,2017(5):1-5.
[12] 仇春春,王恬,程海粟.等. 基于改進Vibe算法的行人目標檢測[J]. 信息技術,2016(3):6-9,14.
[13] 吳亞順,王平,白朝元,等.一種基于梯度特征的陰影消除方法[J].電腦編程技巧與維護,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
陜西省科技廳工業科技攻關項目(2015GY075)。
TP391.8
A
?迪娜
2017-03-24)