劉紫燕, 馮 亮, 祁 佳
(貴州大學 電子信息學院,貴州 貴陽 550025)
隨著工業(yè)自動化水平和科學技術(shù)的不斷發(fā)展和提高,人們可以不需要到達現(xiàn)場而通過視頻跟蹤系統(tǒng)來實現(xiàn)實時了解監(jiān)控對象的信息,在該系統(tǒng)中間加上圖像處理和控制部分,還可以實現(xiàn)對目標運動狀態(tài)的判斷和控制[1]。以機器視覺技術(shù)為基礎的視頻跟蹤系統(tǒng),目前已經(jīng)廣泛應用于人們生產(chǎn)、生活的各個方面[2],它通過實時圖像處理技術(shù)確定視野中是否存在目標和目標的位置,獲得目標參數(shù),對運動目標進行匹配和跟蹤,進而獲得目標的運動軌跡,然后通過跟蹤算法實現(xiàn)對運動目標的實時跟蹤定位,同時在完成目標定位置測量的基礎上實現(xiàn)對云臺的控制。
目前,在嵌入式平臺上實現(xiàn)視頻跟蹤主要有以下3種:ARM,DSP和FPGA平臺。FPGA是一種半定制電路,既繼承了ASIC高集成度、大規(guī)模等優(yōu)點,又具有設計靈活等特點。可編程片上系統(tǒng) (SOPC)是基于大規(guī)??删幊唐骷﨔PGA芯片的單片系統(tǒng),它把整個系統(tǒng)利用邏輯編程技術(shù)集成到一個硅片上,包括硬核、軟核、存儲器、I/O等設備。SOPC具有開發(fā)設計靈活、可移植操作系統(tǒng)、實時檢測、高級語言編程等優(yōu)點?;贔PGA的SOPC比ARM系統(tǒng)處理速度快,比DSP系統(tǒng)控制能力強[2~4]。
本文提出了一種基于FPGA的實時視頻跟蹤系統(tǒng)硬件平臺的設計方法。通過該平臺,可以實現(xiàn)實時圖像采集、緩存、顯示和云臺驅(qū)動;在Nios II軟核處理器中加入目標檢測跟蹤控制代碼,可以實現(xiàn)運動目標跟蹤、定位以及產(chǎn)生云臺PWM控制信號,使得攝像頭隨著運動目標的移動而改變轉(zhuǎn)動方向,從而實現(xiàn)自主跟蹤。
基于FPGA的視頻跟蹤系統(tǒng)主要包括視頻圖像的采集、圖像的緩存與處理、圖像的跟蹤定位、圖像的傳輸顯示和云臺的控制等幾部分。視頻圖像的處理對于系統(tǒng)主芯片的處理能力有很高要求,如果所有的視頻圖像處理工作都由Nios II軟核處理器來完成,將會造成Nios II軟核處理器負擔過重,從而無法得到很好處理效果。因此,本文將視頻圖像的采集、圖像傳感器的配置、圖像轉(zhuǎn)換、圖像的幀緩存、圖像VGA顯示控制等部分全部由FPGA硬件邏輯實現(xiàn),只將視頻圖像處理跟蹤算法、云臺控制等其它少部分工作交給Nios II軟核處理器來完成,這樣可以減少Nios II軟核的處理壓力,從而提高系統(tǒng)的整體性能[1]。視頻跟蹤系統(tǒng)的設計框圖如圖1所示[1,5,6]。
圖1 視頻跟蹤系統(tǒng)框圖
整個視頻跟蹤系統(tǒng)的設計以FPGA作為核心,圖1上部分為在FPGA中搭建的SOPC,其中,嵌入了Nios II軟核處理器,各個模塊通過Avalon總線與Nios II處理器進行互聯(lián)通信;圖1下部分為跟蹤系統(tǒng)實時圖像的采集、緩存以及VGA顯示等功能,各個功能模塊是用硬件描述語言實現(xiàn)的。視頻跟蹤系統(tǒng)中的多端口SDRAM控制模塊是視頻跟蹤系統(tǒng)的一個重要部分,它將圖像傳感器采集過來的幀圖像進行緩存,然后一個端口送給VGA顯示器進行顯示,另一個端口送給SOPC中的Nios II軟核處理器進行視頻圖像處理和運動目標的跟蹤控制算法的實現(xiàn)等。
視頻跟蹤系統(tǒng)上電后,首先對CMOS圖像傳感器初始化,再進行視頻圖像的數(shù)據(jù)采集。然后將采集來的視頻圖像進行格式變換輸出30位RGB圖像數(shù)據(jù),并通過多端口SDRAM將圖像數(shù)據(jù)輸入2片SDRAM進行幀緩存。同時,多端口SDRAM控制器的一個輸出端口將緩存的數(shù)據(jù)送給VGA顯示器進行圖像顯示,另一個輸出端口送給SOPC中的Nios II軟核處理器進行視頻圖像處理和運動目標的跟蹤定位。圖2為視頻跟蹤系統(tǒng)的工作流程圖。
圖2 視頻跟蹤系統(tǒng)工作流程
系統(tǒng)硬件平臺設計包括CMOS圖像的采集、圖像傳感器的配置、圖像轉(zhuǎn)換、多端口SDROM控制器設計、圖像的幀緩存、圖像的VGA顯示、SOPC系統(tǒng)搭建和硬件外設電路設計等。
視頻圖像采集模塊是實時視頻跟蹤系統(tǒng)重要的組成環(huán)節(jié),圖像采集質(zhì)量的好壞不僅影響后端運動目標跟蹤的準確率,而且也決定實時視頻預處理難度。
本平臺設計中視頻圖像采集設備采用Terasic公司提供的TRDB—D5M攝像頭。TRDB—D5M攝像頭具有500萬像素,可通過GPIO與FPGA相連。此外,TRDM—D5M支持手動調(diào)焦,可以避免在不同距離下圖像質(zhì)量出現(xiàn)較大的差別。
圖3為視頻圖像采集結(jié)構(gòu)圖,虛線框代表的是FPGA體系結(jié)構(gòu),其它為外部元件。系統(tǒng)啟動后,F(xiàn)PGA內(nèi)部的I2C傳感器配置模塊初始化CMOS圖像傳感器。然后CMOS傳感器數(shù)據(jù)采集模塊捕獲來自CMOS圖像傳感器的圖像幀。接著CMOS傳感器采集的數(shù)據(jù)進行簡單的轉(zhuǎn)換可以變?yōu)镽GB顏色空間格式。最后,多端口SDRAM控制器將轉(zhuǎn)換后的圖像數(shù)據(jù)保存到SDRAM中[7]。
圖3 圖像采集結(jié)構(gòu)圖
實時視頻跟蹤系統(tǒng)中,F(xiàn)PGA除了要完成跟蹤等任務外,還要實現(xiàn)對VGA顯示的接口控制,完成視頻圖像數(shù)據(jù)的視頻顯示。
在DE2—70開發(fā)板中,集成了一個支持VGA輸出的16針腳D—SUB連接器。Cyclone II FPGA直接提供給VGA同步信號,同時模擬信號設備ADV7123中的3個10位高速視頻芯片DAC被用作模擬數(shù)據(jù)信號(紅、綠和藍)發(fā)生器,這些電路組合最高能支持像素為1 600×1 200的分辨率。
圖4為圖像VGA顯示結(jié)構(gòu)圖,多端口SDRAM控制器從SDRAM存儲芯片中讀出的圖像數(shù)據(jù),并且將圖像數(shù)據(jù)傳遞到VGA控制器,用于VGA顯示實時圖像。圖像VGA顯示的能否正常工作,VGA控制器起著關(guān)鍵作用。
圖4 圖像VGA顯示結(jié)構(gòu)圖
多端口SDRAM的設計是本實時視頻跟蹤系統(tǒng)硬件平臺的設計重點和難點,利用FPGA的片上資源開辟了多個先進先出(first in first out,F(xiàn)IFO)作為視頻圖像數(shù)據(jù)讀寫的緩存,從而實現(xiàn)多端口SDRAM控制,使其能夠從多個緩存向SDRAM芯片進行圖像數(shù)據(jù)的存取。
圖5是4_Port SDRAM控制器結(jié)構(gòu)框圖[1],通過分析SDRAM存取芯片的各個接口信號、時序要求和工作模式,將該模塊內(nèi)部進一步細化為系統(tǒng)控制接口模塊、數(shù)據(jù)通路模塊、CMD命令解析模塊、命令響應模塊。系統(tǒng)控制接口模塊用于接收視頻跟蹤系統(tǒng)的控制信號,并進行產(chǎn)生不同的CMD命令組合;數(shù)據(jù)通路模塊用于控制視頻圖像數(shù)據(jù)的輸入和輸出;CMD命令解析模塊用于接收來自系統(tǒng)控制接口模塊的CMD命令并解析成操作指令;命令響應模塊用于接收來自CMD命令解析模塊的操作指令,進而產(chǎn)生SDRAM的操作。
圖5 4_Port SDRAM控制器結(jié)構(gòu)框圖
由于本平臺既要將采集到的實時視頻圖像數(shù)據(jù)送給VGA顯示器進行顯示,還要送給SOPC的Nios II軟核處理器進行視頻圖像的處理,完成實時視頻中運動目標跟蹤算法的實現(xiàn)。本系統(tǒng)平臺設計用2塊SDRAM和2個4_Port SDRAM控制模塊來完成視頻圖像顯示和視頻圖像處理功能。具體而言,將CMOS圖像傳感器采集到的實時視頻圖像數(shù)據(jù)分成2部分:一部分通過4_Port SDRAM控制模塊1的寫FIFO1寫入10位R數(shù)據(jù)和高5位的G數(shù)據(jù)到SDRAM1存儲芯片中;另一部分通過4_Port SDRAM控制模塊2的寫FIFO1寫入低5位G數(shù)據(jù)和10位B數(shù)據(jù)到SDRAM2存儲芯片中。VGA顯示器通過讀4_Port SDRAM控制模塊l的讀FIFO1和4_Port SDRAM控制模塊2的讀FIFO1來進行圖像的顯示。Nios II軟核處理器系統(tǒng)通過讀4_Port SDRAM控制模塊1的讀FIF02和4_Port SDRAM控制模塊2的讀FIF02來完成實時視頻圖像處理算法。圖6為雙4_Port SDRAM控制模塊設計框圖。
圖6 雙4_Port SDRAM控制模塊設計框圖
本視頻跟蹤系統(tǒng)硬件平臺設計中SOPC完成的功能是通過多端口SDRAM控制器從SDRAM存儲芯片中讀取采集到的實時視頻幀圖像數(shù)據(jù),并對視頻幀圖像信息進行預處理,進而完成運動目標的檢測、定位跟蹤算法,并通知云臺控制模塊驅(qū)動云臺步進電機對運動目標進行跟蹤,從而使攝像頭隨著跟蹤目標的移動而轉(zhuǎn)動。圖7為SOPC系統(tǒng)圖像處理流程。
圖7 SOPC系統(tǒng)圖像處理流程
一個SOPC的搭建由CPU、用戶自定義的外設、標準外設、存儲器接口等部分組成。SOPC Builder可以選擇和自定義系統(tǒng)模塊的各個組件和接口,用戶可以簡單方便地利用SOPC Builder將處理器、存儲器以及其它外設模塊連接在一起,構(gòu)成完整的系統(tǒng)。其中已經(jīng)包含了Nios II軟核處理器和一些常用的外設接口模塊,用戶也可以根據(jù)需要設計自己專用的接口模塊。構(gòu)建SOPC系統(tǒng)的主要步驟如下[1]:
1)首先,對目標FPGA和系統(tǒng)時鐘進行設置,本視頻跟蹤系統(tǒng)設計采輸入時鐘為50 MHz,通過內(nèi)部鎖相環(huán)產(chǎn)生100 MHz的SOPC時鐘;
2)根據(jù)實際應用要求和目標FPGA中的器件約束(邏輯資源)條件,在SOPC Builder可用元件類表中雙擊Nios II Process添加Nios II軟核處理器;
3)添加SRAM控制器和片內(nèi)存儲器,處理器系統(tǒng)至少要有一個存儲器用于數(shù)據(jù)和指令;
4)添加JTAG_UART和PLL,JTAG_UART用于PC機與Nios II系統(tǒng)串行通信,PLL用于時鐘倍頻;
5)添加PIO和系統(tǒng)ID,通過PIO輸出有序的矩形脈沖,控制2個步進電機實現(xiàn)正轉(zhuǎn)和反轉(zhuǎn)功能;
6)分配外設基地址和中斷優(yōu)先級;
7)生成Nios II系統(tǒng)。
云臺是視頻跟蹤系統(tǒng)的重要組成部分,是固定攝像機的支撐設備。本平臺系統(tǒng)中,云臺由2臺57型兩相4線混合式步進電機構(gòu)成,分別實現(xiàn)水平和垂直方向的轉(zhuǎn)動,以確保被跟蹤目標始終處于監(jiān)控畫面的中心。步進電機的運行需要有脈沖信號和驅(qū)動器,SOPC輸出的PWM控制信號通過驅(qū)動電路送達步進電機的每一相繞組,即可驅(qū)動步進電機運行。圖8為云臺電機系統(tǒng)工作框圖。
圖8 云臺控制電路系統(tǒng)框圖
驅(qū)動器設計的好壞關(guān)系到步進電機能否正常穩(wěn)定工作,THB7128是一種專業(yè)的兩相步進電機驅(qū)動芯片,它內(nèi)部集成了細分、電流調(diào)節(jié)、CMOS功率放大等電路,配合簡單的外圍電路即可實現(xiàn)高性能、多細分、大電流驅(qū)動。適合驅(qū)動42,57型兩相、四相混合式步進電機。圖9為驅(qū)動器電路結(jié)構(gòu)圖。
圖9 驅(qū)動器電路結(jié)構(gòu)圖
該平臺在Altera EP2C70 FPGA開發(fā)板上實現(xiàn),視頻圖像由外部CMOS圖像傳感器采集,處理完的圖像數(shù)據(jù)由VGA實時顯示,最高支持像素為1 600×1200的分辨率(100 MHz),云臺驅(qū)動器采用THB7128芯片。圖10為該系統(tǒng)FPGA硬件資源使用情況。
圖10 系統(tǒng)平臺FPGA硬件資源使用情況
為驗證該平臺Nios II軟核處理器的正常工作,在Nios II 8.1 IDE 軟件開發(fā)工具中編寫了一段測試LCD顯示程序,代碼如下所示:
void task1(void* pdata)
{
while (1)
{
printf("Hello uCOS-II/n");
OSTimeDlyHMSM(0,0,3,0);
}
}
系統(tǒng)平臺執(zhí)行完上述代碼后,EP2C70 FPGA開發(fā)板LCD顯示器上有如圖11所示的軟核LCD顯示測試結(jié)果,可以證明Nios II軟核代碼成功在FPGA上執(zhí)行。
圖11 軟核LCD顯示測試
為驗證平臺Nios II軟核處理器能控制CMOS圖像傳感器對視頻圖像的實時采集,使用C語言編寫了一段測試圖像采集和顯示程序,其中CMOS初始化代碼主要如下:
∥setup CMOS
IOWR(CMOS_IF_0_BASE,4,0x00800860);
maxaddr=(640*512—128)*4;
IOWR(CMOS_IF_0_BASE,7,maxaddr);
IOWR(CMOS_IF_0_BASE,1,0x00800880);
IOWR(CMOS_IF_0_BASE,2,&buffer1);
length=128*4;
IOWR(CMOS_IF_0_BASE,3,length);
IOWR(CMOS_IF_0_BASE,6,0x0001);
軟硬協(xié)同編譯完成并且下載至FPGA開發(fā)板后,實時圖像采集與顯示結(jié)果如圖12所示。
圖12 實時圖像的采集與顯示
以上驗證實驗成功證明了視頻跟蹤系統(tǒng)硬件平臺中純硬件邏輯模塊和SOPC系統(tǒng)的正常運行,為接下來Nios II軟核處理器大型跟蹤控制算法的移植打下了堅實基礎。
實時視頻跟蹤因其數(shù)據(jù)量大、算法復雜、穩(wěn)定性要求高等因素而成為一個難題,目前嵌入式平臺一般由ARM,DSP實現(xiàn),隨著各種視頻質(zhì)量的不斷提高和壓縮格式的不斷改進,對圖像處理系統(tǒng)運算速度的要求也不斷提高,其實時性、并行性、穩(wěn)定性都很難滿足。本文提出的基于FPGA實時視頻跟蹤系統(tǒng)硬件平臺,具有速度快、開發(fā)難度低、可重構(gòu)性好、成本低等優(yōu)勢,必將成為未來視頻跟蹤系統(tǒng)開發(fā)的理想平臺。
參考文獻:
[1] 姚運城.基于FPGA的嵌入式視頻監(jiān)控跟蹤系統(tǒng)研究[D].大連:大連海事大學,2011.
[2] 李月靜.基于視頻的實時運動目標檢測與跟蹤系統(tǒng)研究[D].成都:西華大學,2012.
[3] 王 鵬.基于FPGA的實時視覺跟蹤系統(tǒng)的研究[D].太原:中北大學,2013.
[4] 劉曉偉.基于FPGA機器視覺的運動目標檢測跟蹤系統(tǒng)[D].武漢:湖北工業(yè)大學,2012.
[5] 吳長江,趙不賄,鄭 博,等.基于FPGA的動態(tài)目標跟蹤系統(tǒng)設計[J].電子技術(shù)應用,2010(3):45-50.
[6] 朱建武,李 榕,凌 云.基于FPGA 的目標跟蹤系統(tǒng)設計與實現(xiàn)[J].計算機工程,2012,38(5):243-246.
[7] Hsu Yuan Pao,Miao Hsiao Chun,Tsai Ching Chih.FPGA implementation of a real-time image tracking system[C]∥SICE Annual Conference,2010:2878-2884.