摘 "要: 設計了一種基于PandaBoard的運動物體檢測系統。該系統的主要組成模塊及其功能簡要描述如下:利用USB攝像頭進行視頻幀的采集,基于嵌入式的PandaBoard開發板運行運動物體檢測的視頻幀處理算法,采用USB無線鼠鍵進行檢測系統的啟動或關閉,最終通過HDMI顯示器進行檢測結果的顯示。其中,嵌入式PandaBoard開發板上運行的幀間差分運動物體檢測算法基于上位機Simulink進行設計,設計完成后直接下載到PandaBoard開發板上運行。該系統可以脫離上位機及Simulink開發環境獨立運行,具有設備簡單、成本低、算法可拓展性強等特點,具有良好的應用前景。
關鍵詞: 運動物體檢測; PandaBoard; Simulink; 視頻幀采集
中圖分類號: TN98?34 " " " " " " " " " " 文獻標識碼: A " " " " " " " " " " " " " "文章編號: 1004?373X(2015)02?0104?04
Design of a moving object detection system based on PandaBoard
SUN Wen?jian1, XIAO Bo?tao1, LUO Chun?bo2, SONG Hua?jun1, REN Peng1
1. College of Information and Control Engineering, China University of Petroleum (East China), Qingdao 266580, China;
2. School of Engineering and Computing, University of The West of Scotland, Paisley PA12BE, UK)
Abstract: Development of a moving object detection system based on PandaBoard is described in this paper. The main modules along with their functions are presented as follows: (a) one USB camera is used for capturing video frames, (b) the embedded PandaBoard is exploited as the core on which the video frame processing algorithm for detecting moving object is implemented, (c) a wireless USB control board integrating both mouse and keyboard is used for switching on/off the detection system, and (d) a HDMI monitor is employed to demonstrate the detection results. Specifically, the frame difference moving object detection algorithm running on the embedded PandaBoard is designed by means of PC Simulink. The designed algorithm is downloaded to the PandaBoard for execution. The moving object detection system can operate independently of PC and Simulink development environment. It has many merits, i.e. simple construction, low cost and strong scalability to more complex algorithms. It thus has a potential for vaster applications.
Keywords: moving object detection; PandaBoard; Simulink; video frame acquisition
0 "引 "言
目前基于視頻的運動物體檢測系統可粗略劃分為兩類[1?3]——視頻采集裝置內嵌處理器的檢測系統和視頻采集終端搭配上位機構建的檢測系統。在前一類檢測系統中,處理器(例如DSP芯片)嵌入在視頻采集設備上,采集到的視頻幀直接在采集設備上進行處理,處理的結果發送到監控設備上顯示。嵌入式的檢測系統通常采用高級語言(比如C語言)進行程序的設計與開發,程序的調試較為復雜,工程開發周期較長。在后一類檢測系統中,視頻采集設備將采集到的視頻幀傳送至上位機,由上位機對視頻幀進行處理。在上位機上可以采用Matlab或者Simulink[4?6]進行程序的設計與開發,但是將視頻幀從視頻采集設備傳送到上位機的過程中會產生延時,影響運動物體檢測系統的實時性。
PandaBoard[7]作為一種低成本、低功耗的嵌入式數字信號處理平臺,可以直接運行在Simulink開發環境下創建的模型。PandaBoard的出現解決了嵌入式檢測系統程序調試困難以及工程開發周期長的問題,同時也解決了依賴上位機的檢測系統實時性差的問題,為了在嵌入式設備上用Simulink開發復雜的運動物體檢測算法找到了突破口。
本文提出一種將Simulink上位機程序設計方式與PandaBoard嵌入式處理機制相結合的運動物體檢測系統。首先在上位機的Simulink開發環境中進行視頻幀間差法的設計,然后以PandaBoard作為嵌入式平臺執行Simulink的設計方案,對視頻進行處理。這種方式充分利用了Simulink的設計方式簡易的特點,將Simulink程序下載到PandaBoard開發板上運行時能夠達到嵌入式實時處理效果,降低了運動物體檢測系統的設計成本,同時保證了系統的運行效率。
1 "系統整體設計方案
本系統由上位機子系統和下位機子系統組成,整體系統框圖如圖1所示。
lt;E:\王芳\現代電子技術201502\Image\43T1.tifgt;
圖1 系統框架
上位機子系統主要包括PC機以及其上運行的Simulink開發環境。PC機主要負責PandaBoard系統參數的設置以及與PandaBoard進行通信,Simulink開發環境負責視頻幀間差法的設計并將其下載到PandaBoard開發板運行。下位機子系統包括USB攝像頭(圖1中模塊1)、PandaBoard開發板(圖1中模塊2)、HDMI顯示器(圖1中模塊3)和USB無線鼠鍵(圖1中模塊4)。USB攝像頭到PandaBoard開發板的箭頭表示觀測視頻幀由攝像頭采集發送至PandaBoard進行處理。PandaBoard開發板到HDMI顯示器的箭頭表示視頻幀經過PandaBoard上運行的程序處理所得的檢測結果發送至HDMI顯示器進行顯示。USB無線鼠鍵到PandaBoard開發板的箭頭表示可以通過USB無線鼠鍵對Pandaboard處理板發送操作指令,包括啟動或者停止等指令。
由上述描述可知,本系統的上位機僅負責下位機中處理方案設計以及下位機參數設置,不參與下位機的視頻處理過程。下位機系統可以脫離上位機系統獨立運行。因此,圖1中上位機系統與下位機系統(位于圖1中左側大方框中)用虛線相連,表示二者在運行過程中的獨立性。
2 "系統硬件裝配
除PC機之外,配置本系統所需的器材包括:USB攝像頭;PandaBoard(含有8 G內存卡);帶有HDMI接口的顯示器;USB無線鼠鍵;5 V電源適配器;USB轉RS 232串口線;HDMI高清線;網線。
上述器材如圖2所示。
lt;E:\王芳\現代電子技術201502\Image\43T2.tifgt;
圖2 系統模塊實物圖
本系統的構建方式如下所述:
(1) 用USB轉RS 232串口線(圖2中器件6)將PandaBoard和PC機連接,RS 232端口接到PandaBoard上,USB端口接到PC機上,USB轉RS 232串口線主要負責傳輸控制命令。
(2) 用網線(圖2中器件8)將PandaBoard和PC機的網口連接,網線負責傳輸數據。
(3) 將USB攝像頭(圖2中器件1)連接到PandaBoard的USB接口,負責圖像采集并將其傳輸到PandaBoard。
(4) 用HDMI高清線(圖2中器件7)將PandaBoard和帶有HDMI接口的顯示器連接起來顯示檢測的結果。
(5) 將USB無線鼠鍵(圖2中器件4)的USB無線接收器插到PandaBoard的USB接口上,負責打開或者關閉該檢測系統。
(6) 接通5 V電源(圖2中器件5)。
在系統構建過程中需要注意的是:第(1)步和第(2)步僅在下載上位機程序到下位機以及通過上位機對下位機進行配置的過程中起作用。當下位機獨立運行時,第(1)步和第(2)步中所述的PandaBoard和PC機的各種連接均可斷開。
在上位機程序已經下載到下位機的情況下,檢測系統即可脫離上位機獨立運行。此時,利用圖2中裝置器材構建出的系統的運行狀態如圖3所示。
3 "幀間差分法
本系統采用幀間差分法[8?9]進行運動物體檢測,其原理是利用第k幀和第k-1幀圖像的照度信息差的絕對值(差分圖像)來分析圖像序列中有無運動物體。采用[fk(x,y)]表示第k幀在(x,y)位置上的像素的照度值,用[fk-1(x,y)]表示第k-1幀在(x,y)位置上的像素的照度值,計算第k幀和第k-1幀差的絕對值,得到差分圖像在(x,y)位置上的像素值[Dk(x,y)]:
[Dk(x,y)=fk(x,y)-fk-1(x,y)] (1)
在前后幀之間,若(x,y)位置所表示的場景中的點靜止不動,則[fk(x,y)=fk-1(x,y)],此時[Dk(x,y)=0],表示(x,y)位于靜止的前景或背景。在前后幀之間,若(x, y)位置所表示的場景中的點發生運動,則[fk(x,y)≠fk-1(x,y)] ,此時[Dk(x,y)gt;0], 表示在(x,y)位置檢測到運動物體的邊緣。
lt;E:\王芳\現代電子技術201502\Image\43T3.tifgt;
圖3 運動物體檢測系統
4 "程序設計
本系統在上位機上的Simulink開發環境設計中設計并實現幀間差分法,然后將設計好的程序下載到PandaBoard上運行。在Simulink開發環境下實現幀間差法,信號流圖如圖4所示。
lt;E:\王芳\現代電子技術201502\Image\43T4.tifgt;
圖4 幀間差法信號流圖
實現幀間差法要求采集時間上連續的前后兩幀視頻,因此采集的視頻幀分成兩個支路,其中一個支路經過延時處理,另一個支路不做任何處理,兩路視頻幀送到相減模塊進行幀間差法操作,即得到第3節中原理所描述的運動物體檢測結果。
在Simulink環境下實現圖4描述的處理過程如圖5所示。
lt;E:\王芳\現代電子技術201502\Image\43T5.tifgt;
圖5 幀間差法Simulink模型
V4L2 Video Capture模塊是Simulink為PandaBoard開發的工具箱里的視頻幀采集模塊,對應于連接到PandaBoard上的USB攝像頭,負責視頻幀的采集;Delay模塊是常用工具箱里的延遲模塊;Matlab Function模塊是用戶自定義的函數模塊,可以在其中編輯代碼對輸入變量進行簡單的操作,我們在其中編寫程序對輸入變量也就是視頻幀進行相減的操作;V4L2 Video Display模塊是Simulink為PandaBoard開發的工具箱里的視頻幀顯示模塊。
本系統對圖5中模型進行以下設置。將V4L2 Video Capture模塊采集的視頻幀設置成YCbCr 4∶2∶2格式,其中Y代表照度信息,Cb和Cr代表色度信息。本系統只對照度信息Y進行處理并將色度信息Cb和Cr忽略。 將Delay模塊的延遲時間設置成延遲1幀。在Matlab Function模塊中編寫代碼對兩個變量進行相減的操作,其主要代碼為y=u-du。V4L2 Video Display模塊的輸入圖像像素格式也要設置成YCbCr 4∶2∶2格式。在本系統的運動物體檢測結果顯示中,運動物體的邊緣將顯示為白顏色,前景和背景中的靜止區域將顯示為黑顏色。
5 "測試過程
5.1 "系統配置
確保PandaBoard與PC機連接,在Matlab命令窗口中輸入targetupdate進行PandaBoard板上系統的安裝,安裝的中間過程可以在MATHWORKS官網上查詢[10]。在安裝的最后需要配置PandaBoard信息,比如系統名稱、IP地址、網關等,需要注意的是PandaBoard與PC機必須處在同一個子網下。系統安裝完成之后需要測試PandaBoard與PC機的連接狀態,其過程如下:
關閉PC機防火墻,防止防火墻阻斷PC機與PandaBoard的連接;
在PC機上打開開始,輸入cmd打開命令提示符;
輸入ping+“PandaBoard IP”,查看PC機到PandaBoard是否連通;
在Matlab命令窗口輸入:h = panda;h.openShell(‘serial’);
上述兩個命令可以打開如圖6所示的PuTTY的配置窗口,通過該窗口配置串口信息,如圖7所示,點擊serial可以查看配置信息;
串口配置完成之后點擊‘Open’可以通過串口在PC機上打開終端客戶端,對PandaBoard遠程執行Linux命令;
在終端客戶端中輸入ping+“PC機 IP”,查看PandaBoard到PC機是否連通。
lt;E:\王芳\現代電子技術201502\Image\43T6.tifgt;
圖6 PuTTY配置窗口
lt;E:\王芳\現代電子技術201502\Image\43T7.tifgt;
圖7 串口配置信息
確定PC機與PandaBoard連通之后即可將Simulink模型下載到PandaBoard上運行,下載過程如下:
在模型上選擇Tools→Run on Target Hardware→Options,運行硬件選擇PandaBoard同時檢查PandaBoard配置信息是否正確;
點擊Deploy To Hardware運行模型。
5.2 "系統測試
程序下載到PandaBoard之后即可斷開與PC機的連接獨立運行。用USB無線鼠鍵在PandaBoard開發板上運行的Ubuntu系統上打開一個終端,通過命令行的形式即可運行程序,進行運動物體檢測,檢測結果如圖8所示。
圖8(a)顯示了系統對運動人體的檢測結果,圖8(b)顯示了對運動手掌的檢測結果。其中,白色像素表示運動物體(人體、手掌),黑色像素表示靜止的前景或背景。
lt;E:\王芳\現代電子技術201502\Image\43T8.tifgt;
圖8 檢測結果
6 "結 "語
本文提出一種基于Simulink平臺和嵌入式PandaBoard開發板綜合設計的運動物體檢測系統。本系統同時利用Simulink開發簡易和嵌入式PandaBoard實時處理的優點,相比于其他的視頻監控設備,本系統的構建成本更低,算法的設計更加靈活,程序的調試也更加方便。以本系統為基礎可以構建出各種更加復雜的實時視頻處理系統。因此,本文的方案通用性和可拓展性強,將會在更多場景中體現出實際的應用價值。
參考文獻
[1] 王寶珠,劉偉.基于ARM11的視頻圖像中運動物體監測跟蹤系統[J].電子設計工程,2012,20(24):168?169.
[2] 陳元枝,李強,廖正湘.運動物體檢測監控系統設計[J].大眾科技,2011(11):11?13.
[3] 紀運紅,張穎,吳慶紅.基于灰度圖像的自適應背景模型運動物體檢測算法比較研究[J].現代電子技術,2007,30(5):123?127.
[4] 張德豐.Matlab/Simulink建模與仿真實例精講[M].北京:機械工業出版社,2010.
[5] 葛成良,范國濱,梁正.基于Simulink的紅外圖像處理算法仿真平臺[J].紅外與激光工程,2006(z4):83?88.
[6] 趙建春,李文舉,王新年.基于Simulink的車牌識別系統仿真平臺[J].計算機工程與設計,2009,30(5):1154?1156.
[7] Anon. PandaBoard [EB/OL]. [2012?09?20]. http:// www.oschina.net.
[8] 陳景濤,楊志剛,程力,等.運動車輛的視頻動態目標檢測[J].汽車工程學報,2014(1):74?78.
[9] 李建,藍金輝,李杰.一種新型快速運動目標檢測算法[J].中南大學學報:自然科學版,2013,44(3):978?984.
[10] MathWorks. PandaBoard support from Simulink [EB/OL]. [2013?05?16]. http://www. cn.mathworks.com/hardw.