郭 龍,段哲民,陳 洋,李 茸,田志海
(西北工業(yè)大學(xué) 電子信息學(xué)院,陜西 西安 710129)
基于FPGA的視頻實(shí)時(shí)邊緣檢測(cè)系統(tǒng)
郭 龍,段哲民,陳 洋,李 茸,田志海
(西北工業(yè)大學(xué) 電子信息學(xué)院,陜西 西安 710129)
于對(duì)視頻圖像檢測(cè)與識(shí)別的需要,提出了一種基于FPGA的視頻邊緣檢測(cè)系統(tǒng)設(shè)計(jì)方案,并完成系統(tǒng)的硬件設(shè)計(jì)。通過(guò)FPGA控制攝像頭進(jìn)行視頻采集,雙端口SDRAM對(duì)圖像數(shù)據(jù)進(jìn)行緩存,F(xiàn)PGA再對(duì)數(shù)據(jù)進(jìn)行實(shí)時(shí)處理。實(shí)際采用DE2-115開發(fā)板和CMOS攝像頭OV7670為硬件平臺(tái)進(jìn)行驗(yàn)證。結(jié)果表明,該系統(tǒng)具有實(shí)時(shí)性高,檢測(cè)準(zhǔn)確的特點(diǎn),達(dá)到了設(shè)計(jì)要求。
FPGA;OV7670;視頻采集;邊緣檢測(cè);VGA
隨著科技的發(fā)展,視頻采集系統(tǒng)越來(lái)越廣泛的應(yīng)用于各個(gè)領(lǐng)域,如體育直播,視頻會(huì)議,導(dǎo)彈的電視制導(dǎo)等等。而圖像邊緣是圖像的基本特征之一,其中包含了很重要的邊界信息,這些信息是圖像分析、目標(biāo)識(shí)別的基礎(chǔ)。在交通信息控制應(yīng)用領(lǐng)域中,邊緣檢測(cè)已經(jīng)是車牌識(shí)別、車流量監(jiān)控、自動(dòng)導(dǎo)航等技術(shù)中的重要環(huán)節(jié)。通過(guò)有效的邊緣檢測(cè),可以大大簡(jiǎn)化后續(xù)圖像處理過(guò)程對(duì)圖像信息的分析工作[3]。對(duì)于視頻圖像的邊緣檢測(cè),若采用軟件方式實(shí)現(xiàn)由于受到系統(tǒng)處理速度的限制,容易出現(xiàn)斷 幀現(xiàn)象,這對(duì)于要求實(shí)時(shí)處理的情況下將是一個(gè)很大的缺陷。硬件實(shí)現(xiàn)主要有基于專用芯片,基于DSP和基于FPGA的3種處理方式?;趯S眯酒绞讲⒉贿m合前期產(chǎn)品的開發(fā)?;贒SP方式在運(yùn)算速度、數(shù)據(jù)吞吐量等方面有限制。本設(shè)計(jì)基于FPGA實(shí)現(xiàn),邊緣檢測(cè)采用流水線結(jié)構(gòu)[1]。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)十分適合視頻數(shù)據(jù)的處理。
本系統(tǒng)基于一片Altera公司的Cyclone IV系列的EP4CE115F29CN7主控FPGA,系統(tǒng)的整體結(jié)構(gòu)框圖如圖1所示。主要包括:攝像頭I2C配置模塊、視頻數(shù)據(jù)采集模塊、SDRAM控制模塊、Sobel邊緣檢測(cè)模塊和VGA控制模塊。
FPGA首先通過(guò)I2C總線完成對(duì)OV7670的初始化,然后將采集到的數(shù)據(jù)通過(guò)視頻數(shù)據(jù)采集模塊轉(zhuǎn)換成RGB565標(biāo)準(zhǔn)的視頻數(shù)據(jù),圖像數(shù)據(jù)通過(guò)FIFO_IN模塊在SDRAM中進(jìn)行緩沖,Sobel邊緣檢測(cè)模塊通過(guò)FIFO_OUT模塊讀取數(shù)據(jù)并進(jìn)行處理,VGA控制模塊控制VGA接口的行同步和場(chǎng)同步信號(hào)完成VGA顯示。
圖1 系統(tǒng)整體結(jié)構(gòu)框圖Fig. 1 Structure diagram of the system
圖2 I2C傳輸時(shí)序圖Fig. 2 I2C timing diagram
本系統(tǒng)采用OmniVision公司的OV7670這一款CMOS傳感器,為系統(tǒng)提供視頻信號(hào)。通過(guò)SCCB(Serial Camera Control Bus)總線[7]對(duì)OV7670的共201個(gè)控制寄存器進(jìn)行配置,來(lái)改變輸出數(shù)據(jù)的格式、視頻分辨率、傳輸方式,調(diào)整圖像的白平衡、飽和度、色度、伽瑪曲線等。兩線制的SCCB總線與I2C總線相同,都是雙向兩線制同步串行總線。I2C傳輸時(shí)序如圖2所示,I2C_SCLK就等同于SCCB中的SIOC、I2C_SDAT就等同于SCCB中的SIOD,模塊每次傳輸24位數(shù)據(jù),前8位為從設(shè)備地址(0x42代表寫寄存器,0x43代表度寄存器),中間8位是從設(shè)備寄存器地址,最后8位是對(duì)寄存器進(jìn)行配置的數(shù)據(jù)。
視頻數(shù)據(jù)采集模塊,主要是通過(guò)FPGA配合CMOS攝像頭OV7670的行、場(chǎng)同步信號(hào)采集圖像數(shù)據(jù)。首先通過(guò)配置控制寄存器,控制OV7670輸出視頻數(shù)據(jù)為RGB565格式。因?yàn)镺V7670數(shù)據(jù)位寬為8,視頻數(shù)據(jù)采集模塊主要是將采集到的前后2個(gè)8位數(shù)據(jù)合并成一個(gè)16位數(shù)據(jù),以方便數(shù)據(jù)在SDRAM中的緩存以及后續(xù)模塊的處理。如圖3所示為數(shù)據(jù)采集ModelSim時(shí)序仿真圖。
圖3 數(shù)據(jù)采集時(shí)序仿真Fig. 3 Data acquisition timing simulation
SDRAM模塊主要有FIFO和片外SDRAM兩部分組成,因?yàn)镃MOS攝像頭OV7670采集的數(shù)據(jù)速率和SDRAM讀寫速率是不一樣的,為了匹配這兩個(gè)不同傳輸速率的模塊,其中必須添加一個(gè)FIFO存儲(chǔ)器。其中FIFO不需要單獨(dú)通過(guò)語(yǔ)言描述得到,只需要通過(guò)MegaWizard工具配置得到。本設(shè)計(jì)中用到的SDRAM為DE2-115開發(fā)板上的兩個(gè)64M字節(jié)SDRAM,其中每個(gè)SDRAM又包含4個(gè)BANK。SDRAM行地址線和列地址線是復(fù)用13位的地址總線,在讀寫時(shí),先要激活某個(gè)BANK,接著鎖存行地址,最后在讀寫指令有效時(shí)鎖存列地址。SDRAM的最高讀寫速率可達(dá)到166 MHz,本系統(tǒng)中應(yīng)用為100 MHz,同時(shí)每個(gè)時(shí)鐘上升沿又可讀寫16 bit數(shù)據(jù),因此SDRAM完全可以實(shí)現(xiàn)數(shù)據(jù)的無(wú)縫緩沖工作。
圖像邊緣是一幅圖像中灰度變化比較劇烈的區(qū)域,計(jì)算灰度圖像中各區(qū)域的梯度幅值可以用來(lái)判定圖像的邊緣信息。設(shè)圖像的亮度為f (x , y),則梯度可以定義如下[2]:
Sobel邊緣檢測(cè)便是是基于梯度的檢測(cè),其利用Sobel算子如圖4所示Gx與Gy,在3×3的圖像鄰域內(nèi)和亮度數(shù)據(jù)做卷積運(yùn)算,表達(dá)式如下[6]:
圖4 Sobel梯度算子Fig. 4 Sobel gradient operator
用硬件左邊緣檢測(cè),由于是實(shí)時(shí)處理,SDRAM中緩存的數(shù)據(jù)只是連續(xù)視頻圖像中一幀圖像,而且視頻數(shù)據(jù)還不停的從攝像頭中傳過(guò)來(lái),因此就不能像軟件處理那樣先建立一個(gè)二維的數(shù)據(jù)陣列,這樣就必須采用流水線方式進(jìn)行運(yùn)算,流水線數(shù)目和每次參加運(yùn)算的像素?cái)?shù)目相等,這里就總共需要9條流水線。為此我們就專門設(shè)計(jì)了3條Line_Buffer來(lái)完成式(4)與式(5)的運(yùn)算,3條Line_Buffer由MegaWizard中配置的altshift_tab完成,altshift_tab實(shí)際上就是一個(gè)移位寄存器,因?yàn)橐曨l分辨率為640×480像素,所以每條Line_Buffer實(shí)際是向后移位一整行,也就是640個(gè)像素值。這樣就等同于3條Line_Buffer中的數(shù)據(jù)視頻圖像中相毗鄰的三行圖像數(shù)據(jù),這3行數(shù)據(jù)再與Sobel算子做卷積。如圖5所示為卷積運(yùn)算硬件結(jié)構(gòu)圖,其中P9—P1為像素?cái)?shù)據(jù),X9—X1為Sobel梯度算子。乘法與并行加法部分分別有MegaWizard配置的altmult_add和parallel_add完成。
VGA顯示器的顯示采用逐行掃描,從屏幕左上方開始,從左到右,從上到下掃描。每一行的現(xiàn)實(shí)受到行同步信號(hào)
圖5 卷積硬件結(jié)構(gòu)圖Fig. 5 Hardware structure of convolution
(HREF)控制,每一幀的信號(hào)受到場(chǎng)同步信號(hào)(VSYNC)控制。本系統(tǒng)中CMOS攝像頭采集圖像分辨率為640×480像素,VGA(640×480)的工業(yè)標(biāo)準(zhǔn)為[4,8]行掃描:Ta(同步脈沖)=96,Tb (行消隱后肩)=40,Tc=8,Td (有效時(shí)序)=640,Te=80,Tf(行消隱前肩)=8,Tg(行周期)=800;場(chǎng)掃描:Ta(同步脈沖)=2,Tb(場(chǎng)消隱后肩)=25,Tc=8,Td(有效時(shí)序)=480,Te=8,Tf(場(chǎng)消隱前肩)=2,Tg(場(chǎng)周期)=525。圖6為由SignalTapII抓取的VGA時(shí)序圖,其中最后一行數(shù)據(jù)為當(dāng)前一幀視頻所顯示的行數(shù)統(tǒng)計(jì)。
圖6 SignaltapII抓取VGA時(shí)序圖Fig. 6 SignaltapII capture VGA timing diagram完整順暢,并沒(méi)有斷禎現(xiàn)象發(fā)生。
由QuartusII軟件綜合仿真后可知,系統(tǒng)最高工作頻率為100 MHz,片上資源使用情況如表1所示。通過(guò)DE2-115開發(fā)板為驗(yàn)證平臺(tái),對(duì)上述系統(tǒng)進(jìn)行測(cè)驗(yàn),結(jié)果如圖7所示。其中,圖7(a)為對(duì)所采集到的視頻直接通過(guò)液晶顯示器顯示的彩色圖像,圖7(b)為對(duì)采集的視頻進(jìn)行處理得到的灰度圖像,圖7(c)灰度圖像經(jīng)過(guò)Sobel邊緣檢測(cè)算法處理后的圖像。實(shí)際液晶顯示彩色圖像、灰度圖像、邊緣檢測(cè)圖像
表1 片上資源使用情況Tab.1 Device utilization summary
圖7 系統(tǒng)實(shí)際顯示效果圖Fig. 7 System actual display figure
設(shè)計(jì)了一個(gè)基于FPGA的的視頻實(shí)時(shí)邊緣檢測(cè)系統(tǒng),利用FPGA良好的并行結(jié)構(gòu),使計(jì)算速率得到了很大提升,達(dá)到了系統(tǒng)的實(shí)時(shí)性要求。實(shí)現(xiàn)了VGA分辨率視頻在液晶屏上的彩色顯示、灰度顯示、邊緣檢測(cè)圖像顯示,在圖像紋理復(fù)雜的情況下也能較好的提取圖像邊緣。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)具有速度快、精度高等優(yōu)點(diǎn),能夠很好的應(yīng)用在目標(biāo)識(shí)別、目標(biāo)跟蹤、智能視頻監(jiān)控等領(lǐng)域。
[1] 吳繼華,蔡海寧,王誠(chéng).Altera FPGA/CPLD設(shè)計(jì)(高級(jí)篇)[M].北京:人民郵電出版社,2011.
[2] 楊杰,黃朝兵.數(shù)字圖像處理及MATLAB實(shí)現(xiàn)[M].北京:電子工業(yè)出版社,2010.
[3] 蔡立晶,蔡立娟,楊立.基于指紋圖像邊緣檢測(cè)算法的比較研究[J].中國(guó)新技術(shù)新產(chǎn)品, 2009(01):3-4.
CAI Li-jing,CAI Li-juan,YANG Li. A comparative study of image edge detection algorithm based on fingerprint[J].China New Technologies and Products,2009(01):3-4.
[4] 劉威,石彥杰,高博.基于FPGA 的VGA 顯示模式識(shí)別 [J].計(jì)算機(jī)工程與科學(xué),2008(4):152-155.
LIU Wei,SHI Yan-hao,GAO Bo.FPGA-Based VGA Display Mode Recogniton[J].Computer Engineering & Science,2008(4):152-155.
[5] 張輝,曲士茹.基于FPGA硬件實(shí)現(xiàn)的圖像邊緣檢測(cè)及仿真[J].計(jì)算機(jī)仿真,2010(3):232-236.
ZHANG Hui,QU Shi-ru.Image edge detection and simulation based on FPGA[J].Computer Simulation,2010(3):232-236.
[6] 陸小峰,張俊豪,陸曉成.基于FPGA的圖像分塊實(shí)時(shí)邊緣檢測(cè)系統(tǒng)[J].電視技術(shù),2012(21):51-54.
LU Xiao-feng,ZHANG Jun-hao,LU Xiao-cheng. Real-time edge detection system based on image partition using FPGA[J].Video Engineering,2012(21):51-54.
[7] Omni Vision Technologies Inc.OV7670 Datasheet V1.4[S.l.]:Omni Vision Technologies Inc,2006:8.
[8] 宋海吒,唐立軍,謝新輝.基于FPGA 和OV7620 的圖像采集及VGA 顯示[J].電視技術(shù),2011(5):45-61.
SONG Hai-tuo,TANG Li-jun,XIE Xin-hui. Image acquisition and VGA display based on OV7620 and FPGA[J].Video Engineering,2011(5):45-61.
FPGA-based real-time video edge detection system
GUO Long, DUAN Zhe-min, CHEN Yang, LI Rong, TIAN Zhi-hai
( College of Electronic Information, Northwestern Polytechnic University, Xi’an 710129, China)
Based on the requirement of the video image detection and identification, the design of the video edge detection system based on FPGA is proposed in this paper. Camera is controlled by FPGA for video capture, dual-port SDRAM cache image data, FPGA complete the real-time data processing. Actual use DE2-115 development board and CMOS camera OV7670 as the hardware platform for verification. The experiment and application show that this system has good performance, and achieve the design requirement.
FPGA; OV7670; video capture; edge detection; VGA
TN83
A
1674-6236(2014)03-0183-03
2013–05–29 稿件編號(hào):201305290
郭 龍(1989—),男,陜西咸陽(yáng)人,碩士研究生。研究方向:數(shù)?;旌霞呻娐吩O(shè)計(jì)。