郭 琪,劉昌華
(武漢輕工大學 數學與計算機學院,湖北 武漢 430023)
基于ARM的移動目標跟蹤系統設計
郭 琪,劉昌華
(武漢輕工大學 數學與計算機學院,湖北 武漢 430023)
基于ARM9-S3C2440AL處理器提出一種移動目標跟蹤設計方案。研究如何將嵌入式平臺與移動目標跟蹤結合起來,并對系統關鍵技術和方法進行描述。系統包括軟硬件平臺設計,主要完成了Bootloader向導移植、Linux內核制作、USB攝像頭驅動程序編寫、聲卡驅動設計、移動目標跟蹤系統應用程序設計。在MATLAB軟件平臺上研究了基于卡曼濾波的單目標和數學形態連通區域的多目標移動跟蹤算法,實現了移動目標跟蹤,結果達到預期目標;將在MATLAB平臺上運行的程序轉化為適合開發板運行的C程序,實現ARM開發板采集圖像并存儲,可通過客戶端Web瀏覽器對存儲的圖像和視頻進行查看。
ARM9-S3C2440AL;移動目標跟蹤;卡曼濾波;數學形態連通區域
近年來,伴隨著社會的快速發展,移動設備需求量不斷加大,對其性能要求也愈加嚴格。移動目標識別和跟蹤技術[1]是現代化視頻監控領域一項非常重要的技術,發展十分迅猛,得到了社會各界的廣泛關注。然而面向應用的目標跟蹤系統[2]卻不盡如人意,其指標性能不能很好地滿足應用要求。移動目標跟蹤系統基于PC機僅僅對視頻進行采集、存儲和回看,考慮到實時性的要求,傳統的移動目標跟蹤系統越來越不能滿足實際需要,結合嵌入式技術可靠性高、成本低、體積小、實時性強等特點,基于ARM的移動目標跟蹤系統具有廣泛的應用前景。
該移動目標跟蹤系統整體結構主要由USB攝像頭、嵌入式軟硬件平臺和移動目標跟蹤系統的應用程序組成。USB攝像頭用來采集視頻信號,硬件部分以ARM9-S3C2440AL為核心,并擴展了SDRAM內存、Flash閃存等開發板外設,嵌入式軟件平臺為底層硬件提供驅動支持、內存管理、中斷管理以及移動目標跟蹤處理,應用程序主要實現移動目標跟蹤系統所需的算法,保證移動目標跟蹤系統的實現。
2.1 系統硬件總體設計
該系統硬件部分主體結構如圖1所示,主要由ARM9處理器S3C2440AL、SDRAM、Nand Flash、Nor Flash、RTC電路,復位電路、USB攝像頭和蜂鳴器等構成,客戶端Web瀏覽器作為系統查看平臺。

圖1 系統硬件結構
2.2 S3C2440AL處理器
該移動目標跟蹤系統采用S3C2440AL處理器,該處理器采用ARM9內核,ARM V4指令集,主頻可達400MHZ,核心開發板配64MB內存、256MB Nand-Flash和2MB Nor-Flash。微處理器性能穩定、功能強大且支持多種操作系統,可以適應處理能力要求較高的應用。
2.3 USB攝像頭
攝像頭選用羅技720p高清USB攝像頭,采用CMOS成像元件獲取圖像,最高速度可達30f/s,支持USB2.0接口。該USB攝像頭不需要安裝驅動,是一種支持UVC(USB Video Class,視頻設備類)標準協議的攝像頭,將這種攝像頭連接到支持該標準的操作系統,系統會自動為其配置、安裝驅動。
3.1 軟件主體結構
該系統軟件主體結構如圖2所示,主要包括Linux操作系統、內核驅動程序和應用程序3個部分。

圖2 Linux系統架構
3.2 Linux操作系統移植
Linux操作系統移植主要包括Bootloader移植、Linux內核配置和根文件系統制作3個部分。系統使用Linux發行版紅帽RHEL6.3作為軟件開發平臺,采用交叉編譯方式,交叉編譯器版本為arm-linux-gcc_4.3.2。
(1)Bootloader移植。Bootloader遵循GPL公約,支持ARM處理器和Linux操作系統,具有較高的可靠性和穩定性,是Linux執行前的一段初始化程序。將編寫好的Bootloader文件移植NANDflash中,啟動后配置環境變量,確定Linux系統啟動方式。
(2)Linux內核配置、編譯及下載。本系統選用Linux2.6.3版本的內核,執行make menuconfig ARCH=arm命令,通過菜單選項對Linux的功能進行選擇和配置,配置完后,保存退出,執行make uImage命令進行編譯,生成內核鏡像文件uImage,就可移植到開發板運行。
(3)構建Linux根文件系統。
3.3 移動目標跟蹤系統搭建
在MATLAB平臺上搭建移動目標跟蹤的基本框架,對圖像目標的背景進行提取,將傳統幀差法加以改進后,對視頻圖像中的移動區域進行檢測,實現了移動目標的檢測以及移動目標的位置提取。對單目標的移動,運用卡曼濾波[3]實現了其跟蹤算法,能對單目標的移動路線進行跟蹤,針對多目標的跟蹤,基于數學形態連通區域的特征[4]實現其跟蹤算法。跟蹤效果可以用矩形框跟蹤的形式進行演示,實驗結果驗證了該算法的有效性,結果也達到了預期目標。
嵌入式平臺移動目標跟蹤系統搭建如下:
(1)聲音報警子系統開發。包括聲卡驅動開發,聲卡驅動架構采用ALSA-OSS封裝[5],聲卡驅動集成通過make menuconfig ARCH=arm進入配置菜單Device Drivers ---><*>Sound card support ---><*> Advanced Linux Sound Architecture ---><*> OSS Mixer API<*> OSS PCM (digital audio) API[*] OSS PCM (digital audio) API - Include plugin system后,移植madplay應用程序。
(2)攝像頭子系統開發。包括攝像頭驅動開發,攝像頭軟件架構是當前最流行的V4L2架構[6],進入配置菜單中配置攝像頭驅動使能Device Drivers --->Multimedia devices --->[*] Video capture adapters --->[*] V4L USB devices ---><*> GSPCA based webcams ---><*> ZC3XX USB Camera Driver,保存配置并編譯內核后,進行攝像頭驅動測試。
(3)移動監控主系統設計。將攝像頭采集的視頻轉換成avi格式的文件進行存儲,首先進行Ffmpeg移植[7],然后進行Motion主程序移植[8],Motion是一個開源的移動圖像監控程序,配置motion參數使motion能使用Ffmpeg錄制視頻的功能,配置成功后通過命令motion -c /etc/motion.conf開啟motion直至成功啟動,通過samba進入開發板的根文件系統目錄中發現有攝像頭采集的圖像,當有物體在攝像頭前移動時會報警。
(4)嵌入式Web服務器開發。包括BOA嵌入式服務器[9]移植,首先編譯解壓源代碼,配置boa.conf文件,配置選項Port、User、Group、ErrorLog等,復制已經存在的Web目錄到開發板根文件系統目錄中,之后啟動boa程序,在PC瀏覽器輸入開發板的IP地址就可看到存儲的圖像;然后是CGIC庫移植,CGI就是通用網關接口,實際上是一個應用程序,運行在Web服務器上,可通過瀏覽器端的用戶輸入而觸發,提供與客戶端HTML頁面的接口。它能讓網絡用戶訪問和運行遠程服務器系統所在主機的應用程序,進一步控制相關硬件,并將結果格式化輸出為HTML格式,最終反饋到瀏覽器端。這樣就完成了HTML靜態頁面和WEB服務器的動態交互,boa和CGIC移植成功后,接下來就是CGIC程序的編寫,CGI程序在瀏覽器能被調用,是通過表單來完成的,表單中標識著表單的開始和結束,C語言編寫CGI程序時不能用main函數作為主函數,因為main函數在CGIC的庫文件中已經被定義了,基于前面所述的C語言編寫CGI程序的知識,可以很快編寫出顯示圖片的CGI程序。實際上,顯示圖片的還是HTML頁面文件,只不過通過CGI將HTML頁面的內容輸出而已,其基本格式如下:
首先添加必要的頭文件,然后int cgiMain()
{ cgiHeaderContentType("text/html");fprintf(cgiOut,"
");fprintf(cgiOut," ");fprintf(cgiOut,"
");fprintf(cgiOut,"");fprintf(cgiOut," ");
fprintf(cgiOut," ");return 0;}
將編譯好的CGI程序放到開發板根文件系統目錄中,修改該目錄下的.html文件。這里主要是修改“查看圖片”菜單,,讓其索引到一個超鏈接,也即.cgi,這樣在點擊查看圖片時就可以執行.cgi程序,在cgi程序中還可以嵌入視頻,在HTML頁面中嵌入多媒體可以通過embed標簽實現,與之前顯示圖片的實現原理一樣,參考前面代碼修改即可,將編寫好的顯示視頻的.c文件編譯成cgi文件后,還需要修改相應的.html文件,給“顯示視頻”菜單加上超鏈接以訪問該cgi文件,顯示存儲目錄下的所有視頻,最終整個移動目標跟蹤系統搭建完成。
在MATLAB平臺上,對單目標圖3和多目標圖4跟蹤基本實現預期效果。完成Linux系統搭建和移動目標跟蹤系統搭建后,啟動開發板,攝像頭把采集到的圖像和視頻進行存儲,給顯示視頻和圖像菜單加上超鏈接以訪問該cgi文件,顯示了存儲目錄下的所有視頻和圖片,查看存儲的視頻和圖像沒有明顯的失真和抖動,畫質清晰流暢。總體而言存儲效果良好。

圖3 卡曼濾波后的結果

圖4 多目標連通區域結果
在MATLAB代碼設計中,對于單目標跟蹤和多目標跟蹤采取了不同的設計,單目標識別是基于卡曼濾波實現,多目標跟蹤是采用數學形態學實現的,遺憾的是沒能利用卡曼濾波算法實現多目標識別跟蹤,需后期進一步完善。該移動目標跟蹤系統具有實時性高、成本低、體積小,且運行穩定、可靠等高特點,在Linux-arm平臺上,通過PC瀏覽器可以看到存儲的圖像和視頻,但是界面不太美觀,一些后期功能也需繼續完善。
[1] 余靜,游志勝.自動目標識別與跟蹤技術研究綜述[J].計算機應用研究,2005(1):12-15.
[2] 潘廣林,梁彥,劉寶霆,等.目標跟蹤系統性能評估研究[J].系統仿真學報,2007,19(24):5773-5777.
[3] 王寶榮,楊華,王一程,等.基于卡曼濾波與均值偏移算法的目標跟蹤[J].激光與紅外,2009,39(11):1233-1236.
[4] 譚偉,方超,杜建洪,等.基于數學形態學的集裝箱箱號分割改進算法[J].計算機工程與應用,2011,47(13):174-177.
[5] 胡偉.Android系統架構及其驅動研究[J].廣州廣播電視大學學報,2010(4):96-101.
[6] 曹占中,周余,王自強,等.基于s3c2440的Linux攝像頭驅動開發[J].電子測量技術,2009,32(2):108-111.
[7] 劉紅,盧程.FFmpeg開源項目移植到Android的研究[J].價值工程,2016(4):166-169.
[8] 康樂.基于ARM11的移動圖像檢測與監控系統的研究[J].電視技術,2013,37(15):52-56.
[9] 陸永健,王萍.嵌入式Web服務器Boa的移植及其應用[J].河海大學常州分校學報,2005,19(4):44-47.
(責任編輯:孫 娟)
郭琪(1992-),男,湖北仙桃人,碩士,武漢輕工大學數學與計算機學院碩士研究生,研究方向為嵌入式技術;劉昌華(1963-),男,湖北武漢人,武漢輕工大學數學與計算機學院副教授、碩士生導師,研究方向為計算機網絡及應用、嵌入式FPGA設計。
10.11907/rjdk.162644
TP319
A
1672-7800(2017)003-0094-03