劉紫燕, 馮 亮, 祁 佳
(貴州大學(xué) 電子信息學(xué)院,貴州 貴陽 550025)
隨著工業(yè)自動(dòng)化水平和科學(xué)技術(shù)的不斷發(fā)展和提高,人們可以不需要到達(dá)現(xiàn)場而通過視頻跟蹤系統(tǒng)來實(shí)現(xiàn)實(shí)時(shí)了解監(jiān)控對(duì)象的信息,在該系統(tǒng)中間加上圖像處理和控制部分,還可以實(shí)現(xiàn)對(duì)目標(biāo)運(yùn)動(dòng)狀態(tài)的判斷和控制[1]。以機(jī)器視覺技術(shù)為基礎(chǔ)的視頻跟蹤系統(tǒng),目前已經(jīng)廣泛應(yīng)用于人們生產(chǎn)、生活的各個(gè)方面[2],它通過實(shí)時(shí)圖像處理技術(shù)確定視野中是否存在目標(biāo)和目標(biāo)的位置,獲得目標(biāo)參數(shù),對(duì)運(yùn)動(dòng)目標(biāo)進(jìn)行匹配和跟蹤,進(jìn)而獲得目標(biāo)的運(yùn)動(dòng)軌跡,然后通過跟蹤算法實(shí)現(xiàn)對(duì)運(yùn)動(dòng)目標(biāo)的實(shí)時(shí)跟蹤定位,同時(shí)在完成目標(biāo)定位置測(cè)量的基礎(chǔ)上實(shí)現(xiàn)對(duì)云臺(tái)的控制。
目前,在嵌入式平臺(tái)上實(shí)現(xiàn)視頻跟蹤主要有以下3種:ARM,DSP和FPGA平臺(tái)。FPGA是一種半定制電路,既繼承了ASIC高集成度、大規(guī)模等優(yōu)點(diǎn),又具有設(shè)計(jì)靈活等特點(diǎn)??删幊唐舷到y(tǒng) (SOPC)是基于大規(guī)??删幊唐骷﨔PGA芯片的單片系統(tǒng),它把整個(gè)系統(tǒng)利用邏輯編程技術(shù)集成到一個(gè)硅片上,包括硬核、軟核、存儲(chǔ)器、I/O等設(shè)備。SOPC具有開發(fā)設(shè)計(jì)靈活、可移植操作系統(tǒng)、實(shí)時(shí)檢測(cè)、高級(jí)語言編程等優(yōu)點(diǎn)?;贔PGA的SOPC比ARM系統(tǒng)處理速度快,比DSP系統(tǒng)控制能力強(qiáng)[2~4]。
本文提出了一種基于FPGA的實(shí)時(shí)視頻跟蹤系統(tǒng)硬件平臺(tái)的設(shè)計(jì)方法。通過該平臺(tái),可以實(shí)現(xiàn)實(shí)時(shí)圖像采集、緩存、顯示和云臺(tái)驅(qū)動(dòng);在Nios II軟核處理器中加入目標(biāo)檢測(cè)跟蹤控制代碼,可以實(shí)現(xiàn)運(yùn)動(dòng)目標(biāo)跟蹤、定位以及產(chǎn)生云臺(tái)PWM控制信號(hào),使得攝像頭隨著運(yùn)動(dòng)目標(biāo)的移動(dòng)而改變轉(zhuǎn)動(dòng)方向,從而實(shí)現(xiàn)自主跟蹤。
基于FPGA的視頻跟蹤系統(tǒng)主要包括視頻圖像的采集、圖像的緩存與處理、圖像的跟蹤定位、圖像的傳輸顯示和云臺(tái)的控制等幾部分。視頻圖像的處理對(duì)于系統(tǒng)主芯片的處理能力有很高要求,如果所有的視頻圖像處理工作都由Nios II軟核處理器來完成,將會(huì)造成Nios II軟核處理器負(fù)擔(dān)過重,從而無法得到很好處理效果。因此,本文將視頻圖像的采集、圖像傳感器的配置、圖像轉(zhuǎn)換、圖像的幀緩存、圖像VGA顯示控制等部分全部由FPGA硬件邏輯實(shí)現(xiàn),只將視頻圖像處理跟蹤算法、云臺(tái)控制等其它少部分工作交給Nios II軟核處理器來完成,這樣可以減少Nios II軟核的處理壓力,從而提高系統(tǒng)的整體性能[1]。視頻跟蹤系統(tǒng)的設(shè)計(jì)框圖如圖1所示[1,5,6]。

圖1 視頻跟蹤系統(tǒng)框圖
整個(gè)視頻跟蹤系統(tǒng)的設(shè)計(jì)以FPGA作為核心,圖1上部分為在FPGA中搭建的SOPC,其中,嵌入了Nios II軟核處理器,各個(gè)模塊通過Avalon總線與Nios II處理器進(jìn)行互聯(lián)通信;圖1下部分為跟蹤系統(tǒng)實(shí)時(shí)圖像的采集、緩存以及VGA顯示等功能,各個(gè)功能模塊是用硬件描述語言實(shí)現(xiàn)的。視頻跟蹤系統(tǒng)中的多端口SDRAM控制模塊是視頻跟蹤系統(tǒng)的一個(gè)重要部分,它將圖像傳感器采集過來的幀圖像進(jìn)行緩存,然后一個(gè)端口送給VGA顯示器進(jìn)行顯示,另一個(gè)端口送給SOPC中的Nios II軟核處理器進(jìn)行視頻圖像處理和運(yùn)動(dòng)目標(biāo)的跟蹤控制算法的實(shí)現(xiàn)等。
視頻跟蹤系統(tǒng)上電后,首先對(duì)CMOS圖像傳感器初始化,再進(jìn)行視頻圖像的數(shù)據(jù)采集。然后將采集來的視頻圖像進(jìn)行格式變換輸出30位RGB圖像數(shù)據(jù),并通過多端口SDRAM將圖像數(shù)據(jù)輸入2片SDRAM進(jìn)行幀緩存。同時(shí),多端口SDRAM控制器的一個(gè)輸出端口將緩存的數(shù)據(jù)送給VGA顯示器進(jìn)行圖像顯示,另一個(gè)輸出端口送給SOPC中的Nios II軟核處理器進(jìn)行視頻圖像處理和運(yùn)動(dòng)目標(biāo)的跟蹤定位。圖2為視頻跟蹤系統(tǒng)的工作流程圖。

圖2 視頻跟蹤系統(tǒng)工作流程
系統(tǒng)硬件平臺(tái)設(shè)計(jì)包括CMOS圖像的采集、圖像傳感器的配置、圖像轉(zhuǎn)換、多端口SDROM控制器設(shè)計(jì)、圖像的幀緩存、圖像的VGA顯示、SOPC系統(tǒng)搭建和硬件外設(shè)電路設(shè)計(jì)等。
視頻圖像采集模塊是實(shí)時(shí)視頻跟蹤系統(tǒng)重要的組成環(huán)節(jié),圖像采集質(zhì)量的好壞不僅影響后端運(yùn)動(dòng)目標(biāo)跟蹤的準(zhǔn)確率,而且也決定實(shí)時(shí)視頻預(yù)處理難度。
本平臺(tái)設(shè)計(jì)中視頻圖像采集設(shè)備采用Terasic公司提供的TRDB—D5M攝像頭。TRDB—D5M攝像頭具有500萬像素,可通過GPIO與FPGA相連。此外,TRDM—D5M支持手動(dòng)調(diào)焦,可以避免在不同距離下圖像質(zhì)量出現(xiàn)較大的差別。
圖3為視頻圖像采集結(jié)構(gòu)圖,虛線框代表的是FPGA體系結(jié)構(gòu),其它為外部元件。系統(tǒng)啟動(dòng)后,F(xiàn)PGA內(nèi)部的I2C傳感器配置模塊初始化CMOS圖像傳感器。然后CMOS傳感器數(shù)據(jù)采集模塊捕獲來自CMOS圖像傳感器的圖像幀。接著CMOS傳感器采集的數(shù)據(jù)進(jìn)行簡單的轉(zhuǎn)換可以變?yōu)镽GB顏色空間格式。最后,多端口SDRAM控制器將轉(zhuǎn)換后的圖像數(shù)據(jù)保存到SDRAM中[7]。

圖3 圖像采集結(jié)構(gòu)圖
實(shí)時(shí)視頻跟蹤系統(tǒng)中,F(xiàn)PGA除了要完成跟蹤等任務(wù)外,還要實(shí)現(xiàn)對(duì)VGA顯示的接口控制,完成視頻圖像數(shù)據(jù)的視頻顯示。
在DE2—70開發(fā)板中,集成了一個(gè)支持VGA輸出的16針腳D—SUB連接器。Cyclone II FPGA直接提供給VGA同步信號(hào),同時(shí)模擬信號(hào)設(shè)備ADV7123中的3個(gè)10位高速視頻芯片DAC被用作模擬數(shù)據(jù)信號(hào)(紅、綠和藍(lán))發(fā)生器,這些電路組合最高能支持像素為1 600×1 200的分辨率。
圖4為圖像VGA顯示結(jié)構(gòu)圖,多端口SDRAM控制器從SDRAM存儲(chǔ)芯片中讀出的圖像數(shù)據(jù),并且將圖像數(shù)據(jù)傳遞到VGA控制器,用于VGA顯示實(shí)時(shí)圖像。圖像VGA顯示的能否正常工作,VGA控制器起著關(guān)鍵作用。

圖4 圖像VGA顯示結(jié)構(gòu)圖
多端口SDRAM的設(shè)計(jì)是本實(shí)時(shí)視頻跟蹤系統(tǒng)硬件平臺(tái)的設(shè)計(jì)重點(diǎn)和難點(diǎn),利用FPGA的片上資源開辟了多個(gè)先進(jìn)先出(first in first out,F(xiàn)IFO)作為視頻圖像數(shù)據(jù)讀寫的緩存,從而實(shí)現(xiàn)多端口SDRAM控制,使其能夠從多個(gè)緩存向SDRAM芯片進(jìn)行圖像數(shù)據(jù)的存取。
圖5是4_Port SDRAM控制器結(jié)構(gòu)框圖[1],通過分析SDRAM存取芯片的各個(gè)接口信號(hào)、時(shí)序要求和工作模式,將該模塊內(nèi)部進(jìn)一步細(xì)化為系統(tǒng)控制接口模塊、數(shù)據(jù)通路模塊、CMD命令解析模塊、命令響應(yīng)模塊。系統(tǒng)控制接口模塊用于接收視頻跟蹤系統(tǒng)的控制信號(hào),并進(jìn)行產(chǎn)生不同的CMD命令組合;數(shù)據(jù)通路模塊用于控制視頻圖像數(shù)據(jù)的輸入和輸出;CMD命令解析模塊用于接收來自系統(tǒng)控制接口模塊的CMD命令并解析成操作指令;命令響應(yīng)模塊用于接收來自CMD命令解析模塊的操作指令,進(jìn)而產(chǎn)生SDRAM的操作。

圖5 4_Port SDRAM控制器結(jié)構(gòu)框圖
由于本平臺(tái)既要將采集到的實(shí)時(shí)視頻圖像數(shù)據(jù)送給VGA顯示器進(jìn)行顯示,還要送給SOPC的Nios II軟核處理器進(jìn)行視頻圖像的處理,完成實(shí)時(shí)視頻中運(yùn)動(dòng)目標(biāo)跟蹤算法的實(shí)現(xiàn)。本系統(tǒng)平臺(tái)設(shè)計(jì)用2塊SDRAM和2個(gè)4_Port SDRAM控制模塊來完成視頻圖像顯示和視頻圖像處理功能。具體而言,將CMOS圖像傳感器采集到的實(shí)時(shí)視頻圖像數(shù)據(jù)分成2部分:一部分通過4_Port SDRAM控制模塊1的寫FIFO1寫入10位R數(shù)據(jù)和高5位的G數(shù)據(jù)到SDRAM1存儲(chǔ)芯片中;另一部分通過4_Port SDRAM控制模塊2的寫FIFO1寫入低5位G數(shù)據(jù)和10位B數(shù)據(jù)到SDRAM2存儲(chǔ)芯片中。VGA顯示器通過讀4_Port SDRAM控制模塊l的讀FIFO1和4_Port SDRAM控制模塊2的讀FIFO1來進(jìn)行圖像的顯示。Nios II軟核處理器系統(tǒng)通過讀4_Port SDRAM控制模塊1的讀FIF02和4_Port SDRAM控制模塊2的讀FIF02來完成實(shí)時(shí)視頻圖像處理算法。圖6為雙4_Port SDRAM控制模塊設(shè)計(jì)框圖。

圖6 雙4_Port SDRAM控制模塊設(shè)計(jì)框圖
本視頻跟蹤系統(tǒng)硬件平臺(tái)設(shè)計(jì)中SOPC完成的功能是通過多端口SDRAM控制器從SDRAM存儲(chǔ)芯片中讀取采集到的實(shí)時(shí)視頻幀圖像數(shù)據(jù),并對(duì)視頻幀圖像信息進(jìn)行預(yù)處理,進(jìn)而完成運(yùn)動(dòng)目標(biāo)的檢測(cè)、定位跟蹤算法,并通知云臺(tái)控制模塊驅(qū)動(dòng)云臺(tái)步進(jìn)電機(jī)對(duì)運(yùn)動(dòng)目標(biāo)進(jìn)行跟蹤,從而使攝像頭隨著跟蹤目標(biāo)的移動(dòng)而轉(zhuǎn)動(dòng)。圖7為SOPC系統(tǒng)圖像處理流程。

圖7 SOPC系統(tǒng)圖像處理流程
一個(gè)SOPC的搭建由CPU、用戶自定義的外設(shè)、標(biāo)準(zhǔn)外設(shè)、存儲(chǔ)器接口等部分組成。SOPC Builder可以選擇和自定義系統(tǒng)模塊的各個(gè)組件和接口,用戶可以簡單方便地利用SOPC Builder將處理器、存儲(chǔ)器以及其它外設(shè)模塊連接在一起,構(gòu)成完整的系統(tǒng)。其中已經(jīng)包含了Nios II軟核處理器和一些常用的外設(shè)接口模塊,用戶也可以根據(jù)需要設(shè)計(jì)自己專用的接口模塊。構(gòu)建SOPC系統(tǒng)的主要步驟如下[1]:
1)首先,對(duì)目標(biāo)FPGA和系統(tǒng)時(shí)鐘進(jìn)行設(shè)置,本視頻跟蹤系統(tǒng)設(shè)計(jì)采輸入時(shí)鐘為50 MHz,通過內(nèi)部鎖相環(huán)產(chǎn)生100 MHz的SOPC時(shí)鐘;
2)根據(jù)實(shí)際應(yīng)用要求和目標(biāo)FPGA中的器件約束(邏輯資源)條件,在SOPC Builder可用元件類表中雙擊Nios II Process添加Nios II軟核處理器;
3)添加SRAM控制器和片內(nèi)存儲(chǔ)器,處理器系統(tǒng)至少要有一個(gè)存儲(chǔ)器用于數(shù)據(jù)和指令;
4)添加JTAG_UART和PLL,JTAG_UART用于PC機(jī)與Nios II系統(tǒng)串行通信,PLL用于時(shí)鐘倍頻;
5)添加PIO和系統(tǒng)ID,通過PIO輸出有序的矩形脈沖,控制2個(gè)步進(jìn)電機(jī)實(shí)現(xiàn)正轉(zhuǎn)和反轉(zhuǎn)功能;
6)分配外設(shè)基地址和中斷優(yōu)先級(jí);
7)生成Nios II系統(tǒng)。
云臺(tái)是視頻跟蹤系統(tǒng)的重要組成部分,是固定攝像機(jī)的支撐設(shè)備。本平臺(tái)系統(tǒng)中,云臺(tái)由2臺(tái)57型兩相4線混合式步進(jìn)電機(jī)構(gòu)成,分別實(shí)現(xiàn)水平和垂直方向的轉(zhuǎn)動(dòng),以確保被跟蹤目標(biāo)始終處于監(jiān)控畫面的中心。步進(jìn)電機(jī)的運(yùn)行需要有脈沖信號(hào)和驅(qū)動(dòng)器,SOPC輸出的PWM控制信號(hào)通過驅(qū)動(dòng)電路送達(dá)步進(jìn)電機(jī)的每一相繞組,即可驅(qū)動(dòng)步進(jìn)電機(jī)運(yùn)行。圖8為云臺(tái)電機(jī)系統(tǒng)工作框圖。

圖8 云臺(tái)控制電路系統(tǒng)框圖
驅(qū)動(dòng)器設(shè)計(jì)的好壞關(guān)系到步進(jìn)電機(jī)能否正常穩(wěn)定工作,THB7128是一種專業(yè)的兩相步進(jìn)電機(jī)驅(qū)動(dòng)芯片,它內(nèi)部集成了細(xì)分、電流調(diào)節(jié)、CMOS功率放大等電路,配合簡單的外圍電路即可實(shí)現(xiàn)高性能、多細(xì)分、大電流驅(qū)動(dòng)。適合驅(qū)動(dòng)42,57型兩相、四相混合式步進(jìn)電機(jī)。圖9為驅(qū)動(dòng)器電路結(jié)構(gòu)圖。

圖9 驅(qū)動(dòng)器電路結(jié)構(gòu)圖
該平臺(tái)在Altera EP2C70 FPGA開發(fā)板上實(shí)現(xiàn),視頻圖像由外部CMOS圖像傳感器采集,處理完的圖像數(shù)據(jù)由VGA實(shí)時(shí)顯示,最高支持像素為1 600×1200的分辨率(100 MHz),云臺(tái)驅(qū)動(dòng)器采用THB7128芯片。圖10為該系統(tǒng)FPGA硬件資源使用情況。

圖10 系統(tǒng)平臺(tái)FPGA硬件資源使用情況
為驗(yàn)證該平臺(tái)Nios II軟核處理器的正常工作,在Nios II 8.1 IDE 軟件開發(fā)工具中編寫了一段測(cè)試LCD顯示程序,代碼如下所示:
void task1(void* pdata)
{
while (1)
{
printf("Hello uCOS-II/n");
OSTimeDlyHMSM(0,0,3,0);
}
}
系統(tǒng)平臺(tái)執(zhí)行完上述代碼后,EP2C70 FPGA開發(fā)板LCD顯示器上有如圖11所示的軟核LCD顯示測(cè)試結(jié)果,可以證明Nios II軟核代碼成功在FPGA上執(zhí)行。

圖11 軟核LCD顯示測(cè)試
為驗(yàn)證平臺(tái)Nios II軟核處理器能控制CMOS圖像傳感器對(duì)視頻圖像的實(shí)時(shí)采集,使用C語言編寫了一段測(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ā)板后,實(shí)時(shí)圖像采集與顯示結(jié)果如圖12所示。

圖12 實(shí)時(shí)圖像的采集與顯示
以上驗(yàn)證實(shí)驗(yàn)成功證明了視頻跟蹤系統(tǒng)硬件平臺(tái)中純硬件邏輯模塊和SOPC系統(tǒng)的正常運(yùn)行,為接下來Nios II軟核處理器大型跟蹤控制算法的移植打下了堅(jiān)實(shí)基礎(chǔ)。
實(shí)時(shí)視頻跟蹤因其數(shù)據(jù)量大、算法復(fù)雜、穩(wěn)定性要求高等因素而成為一個(gè)難題,目前嵌入式平臺(tái)一般由ARM,DSP實(shí)現(xiàn),隨著各種視頻質(zhì)量的不斷提高和壓縮格式的不斷改進(jìn),對(duì)圖像處理系統(tǒng)運(yùn)算速度的要求也不斷提高,其實(shí)時(shí)性、并行性、穩(wěn)定性都很難滿足。本文提出的基于FPGA實(shí)時(shí)視頻跟蹤系統(tǒng)硬件平臺(tái),具有速度快、開發(fā)難度低、可重構(gòu)性好、成本低等優(yōu)勢(shì),必將成為未來視頻跟蹤系統(tǒng)開發(fā)的理想平臺(tái)。
參考文獻(xiàn):
[1] 姚運(yùn)城.基于FPGA的嵌入式視頻監(jiān)控跟蹤系統(tǒng)研究[D].大連:大連海事大學(xué),2011.
[2] 李月靜.基于視頻的實(shí)時(shí)運(yùn)動(dòng)目標(biāo)檢測(cè)與跟蹤系統(tǒng)研究[D].成都:西華大學(xué),2012.
[3] 王 鵬.基于FPGA的實(shí)時(shí)視覺跟蹤系統(tǒng)的研究[D].太原:中北大學(xué),2013.
[4] 劉曉偉.基于FPGA機(jī)器視覺的運(yùn)動(dòng)目標(biāo)檢測(cè)跟蹤系統(tǒng)[D].武漢:湖北工業(yè)大學(xué),2012.
[5] 吳長江,趙不賄,鄭 博,等.基于FPGA的動(dòng)態(tài)目標(biāo)跟蹤系統(tǒng)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2010(3):45-50.
[6] 朱建武,李 榕,凌 云.基于FPGA 的目標(biāo)跟蹤系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(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.