郭 龍,段哲民,陳 洋,李 茸,田志海
(西北工業(yè)大學(xué) 電子信息學(xué)院,陜西 西安 710129)
基于FPGA的視頻實時邊緣檢測系統(tǒng)
郭 龍,段哲民,陳 洋,李 茸,田志海
(西北工業(yè)大學(xué) 電子信息學(xué)院,陜西 西安 710129)
于對視頻圖像檢測與識別的需要,提出了一種基于FPGA的視頻邊緣檢測系統(tǒng)設(shè)計方案,并完成系統(tǒng)的硬件設(shè)計。通過FPGA控制攝像頭進(jìn)行視頻采集,雙端口SDRAM對圖像數(shù)據(jù)進(jìn)行緩存,F(xiàn)PGA再對數(shù)據(jù)進(jìn)行實時處理。實際采用DE2-115開發(fā)板和CMOS攝像頭OV7670為硬件平臺進(jìn)行驗證。結(jié)果表明,該系統(tǒng)具有實時性高,檢測準(zhǔn)確的特點,達(dá)到了設(shè)計要求。
FPGA;OV7670;視頻采集;邊緣檢測;VGA
隨著科技的發(fā)展,視頻采集系統(tǒng)越來越廣泛的應(yīng)用于各個領(lǐng)域,如體育直播,視頻會議,導(dǎo)彈的電視制導(dǎo)等等。而圖像邊緣是圖像的基本特征之一,其中包含了很重要的邊界信息,這些信息是圖像分析、目標(biāo)識別的基礎(chǔ)。在交通信息控制應(yīng)用領(lǐng)域中,邊緣檢測已經(jīng)是車牌識別、車流量監(jiān)控、自動導(dǎo)航等技術(shù)中的重要環(huán)節(jié)。通過有效的邊緣檢測,可以大大簡化后續(xù)圖像處理過程對圖像信息的分析工作[3]。對于視頻圖像的邊緣檢測,若采用軟件方式實現(xiàn)由于受到系統(tǒng)處理速度的限制,容易出現(xiàn)斷 幀現(xiàn)象,這對于要求實時處理的情況下將是一個很大的缺陷。硬件實現(xiàn)主要有基于專用芯片,基于DSP和基于FPGA的3種處理方式?;趯S眯酒绞讲⒉贿m合前期產(chǎn)品的開發(fā)?;贒SP方式在運算速度、數(shù)據(jù)吞吐量等方面有限制。本設(shè)計基于FPGA實現(xiàn),邊緣檢測采用流水線結(jié)構(gòu)[1]。實驗結(jié)果表明,該系統(tǒng)十分適合視頻數(shù)據(jù)的處理。
本系統(tǒng)基于一片Altera公司的Cyclone IV系列的EP4CE115F29CN7主控FPGA,系統(tǒng)的整體結(jié)構(gòu)框圖如圖1所示。主要包括:攝像頭I2C配置模塊、視頻數(shù)據(jù)采集模塊、SDRAM控制模塊、Sobel邊緣檢測模塊和VGA控制模塊。
FPGA首先通過I2C總線完成對OV7670的初始化,然后將采集到的數(shù)據(jù)通過視頻數(shù)據(jù)采集模塊轉(zhuǎn)換成RGB565標(biāo)準(zhǔn)的視頻數(shù)據(jù),圖像數(shù)據(jù)通過FIFO_IN模塊在SDRAM中進(jìn)行緩沖,Sobel邊緣檢測模塊通過FIFO_OUT模塊讀取數(shù)據(jù)并進(jìn)行處理,VGA控制模塊控制VGA接口的行同步和場同步信號完成VGA顯示。
圖1 系統(tǒng)整體結(jié)構(gòu)框圖Fig. 1 Structure diagram of the system
圖2 I2C傳輸時序圖Fig. 2 I2C timing diagram
本系統(tǒng)采用OmniVision公司的OV7670這一款CMOS傳感器,為系統(tǒng)提供視頻信號。通過SCCB(Serial Camera Control Bus)總線[7]對OV7670的共201個控制寄存器進(jìn)行配置,來改變輸出數(shù)據(jù)的格式、視頻分辨率、傳輸方式,調(diào)整圖像的白平衡、飽和度、色度、伽瑪曲線等。兩線制的SCCB總線與I2C總線相同,都是雙向兩線制同步串行總線。I2C傳輸時序如圖2所示,I2C_SCLK就等同于SCCB中的SIOC、I2C_SDAT就等同于SCCB中的SIOD,模塊每次傳輸24位數(shù)據(jù),前8位為從設(shè)備地址(0x42代表寫寄存器,0x43代表度寄存器),中間8位是從設(shè)備寄存器地址,最后8位是對寄存器進(jìn)行配置的數(shù)據(jù)。
視頻數(shù)據(jù)采集模塊,主要是通過FPGA配合CMOS攝像頭OV7670的行、場同步信號采集圖像數(shù)據(jù)。首先通過配置控制寄存器,控制OV7670輸出視頻數(shù)據(jù)為RGB565格式。因為OV7670數(shù)據(jù)位寬為8,視頻數(shù)據(jù)采集模塊主要是將采集到的前后2個8位數(shù)據(jù)合并成一個16位數(shù)據(jù),以方便數(shù)據(jù)在SDRAM中的緩存以及后續(xù)模塊的處理。如圖3所示為數(shù)據(jù)采集ModelSim時序仿真圖。
圖3 數(shù)據(jù)采集時序仿真Fig. 3 Data acquisition timing simulation
SDRAM模塊主要有FIFO和片外SDRAM兩部分組成,因為CMOS攝像頭OV7670采集的數(shù)據(jù)速率和SDRAM讀寫速率是不一樣的,為了匹配這兩個不同傳輸速率的模塊,其中必須添加一個FIFO存儲器。其中FIFO不需要單獨通過語言描述得到,只需要通過MegaWizard工具配置得到。本設(shè)計中用到的SDRAM為DE2-115開發(fā)板上的兩個64M字節(jié)SDRAM,其中每個SDRAM又包含4個BANK。SDRAM行地址線和列地址線是復(fù)用13位的地址總線,在讀寫時,先要激活某個BANK,接著鎖存行地址,最后在讀寫指令有效時鎖存列地址。SDRAM的最高讀寫速率可達(dá)到166 MHz,本系統(tǒng)中應(yīng)用為100 MHz,同時每個時鐘上升沿又可讀寫16 bit數(shù)據(jù),因此SDRAM完全可以實現(xiàn)數(shù)據(jù)的無縫緩沖工作。
圖像邊緣是一幅圖像中灰度變化比較劇烈的區(qū)域,計算灰度圖像中各區(qū)域的梯度幅值可以用來判定圖像的邊緣信息。設(shè)圖像的亮度為f (x , y),則梯度可以定義如下[2]:
Sobel邊緣檢測便是是基于梯度的檢測,其利用Sobel算子如圖4所示Gx與Gy,在3×3的圖像鄰域內(nèi)和亮度數(shù)據(jù)做卷積運算,表達(dá)式如下[6]:
圖4 Sobel梯度算子Fig. 4 Sobel gradient operator
用硬件左邊緣檢測,由于是實時處理,SDRAM中緩存的數(shù)據(jù)只是連續(xù)視頻圖像中一幀圖像,而且視頻數(shù)據(jù)還不停的從攝像頭中傳過來,因此就不能像軟件處理那樣先建立一個二維的數(shù)據(jù)陣列,這樣就必須采用流水線方式進(jìn)行運算,流水線數(shù)目和每次參加運算的像素數(shù)目相等,這里就總共需要9條流水線。為此我們就專門設(shè)計了3條Line_Buffer來完成式(4)與式(5)的運算,3條Line_Buffer由MegaWizard中配置的altshift_tab完成,altshift_tab實際上就是一個移位寄存器,因為視頻分辨率為640×480像素,所以每條Line_Buffer實際是向后移位一整行,也就是640個像素值。這樣就等同于3條Line_Buffer中的數(shù)據(jù)視頻圖像中相毗鄰的三行圖像數(shù)據(jù),這3行數(shù)據(jù)再與Sobel算子做卷積。如圖5所示為卷積運算硬件結(jié)構(gòu)圖,其中P9—P1為像素數(shù)據(jù),X9—X1為Sobel梯度算子。乘法與并行加法部分分別有MegaWizard配置的altmult_add和parallel_add完成。
VGA顯示器的顯示采用逐行掃描,從屏幕左上方開始,從左到右,從上到下掃描。每一行的現(xiàn)實受到行同步信號
圖5 卷積硬件結(jié)構(gòu)圖Fig. 5 Hardware structure of convolution
(HREF)控制,每一幀的信號受到場同步信號(VSYNC)控制。本系統(tǒng)中CMOS攝像頭采集圖像分辨率為640×480像素,VGA(640×480)的工業(yè)標(biāo)準(zhǔn)為[4,8]行掃描:Ta(同步脈沖)=96,Tb (行消隱后肩)=40,Tc=8,Td (有效時序)=640,Te=80,Tf(行消隱前肩)=8,Tg(行周期)=800;場掃描:Ta(同步脈沖)=2,Tb(場消隱后肩)=25,Tc=8,Td(有效時序)=480,Te=8,Tf(場消隱前肩)=2,Tg(場周期)=525。圖6為由SignalTapII抓取的VGA時序圖,其中最后一行數(shù)據(jù)為當(dāng)前一幀視頻所顯示的行數(shù)統(tǒng)計。
圖6 SignaltapII抓取VGA時序圖Fig. 6 SignaltapII capture VGA timing diagram完整順暢,并沒有斷禎現(xiàn)象發(fā)生。
由QuartusII軟件綜合仿真后可知,系統(tǒng)最高工作頻率為100 MHz,片上資源使用情況如表1所示。通過DE2-115開發(fā)板為驗證平臺,對上述系統(tǒng)進(jìn)行測驗,結(jié)果如圖7所示。其中,圖7(a)為對所采集到的視頻直接通過液晶顯示器顯示的彩色圖像,圖7(b)為對采集的視頻進(jìn)行處理得到的灰度圖像,圖7(c)灰度圖像經(jīng)過Sobel邊緣檢測算法處理后的圖像。實際液晶顯示彩色圖像、灰度圖像、邊緣檢測圖像
表1 片上資源使用情況Tab.1 Device utilization summary
圖7 系統(tǒng)實際顯示效果圖Fig. 7 System actual display figure
設(shè)計了一個基于FPGA的的視頻實時邊緣檢測系統(tǒng),利用FPGA良好的并行結(jié)構(gòu),使計算速率得到了很大提升,達(dá)到了系統(tǒng)的實時性要求。實現(xiàn)了VGA分辨率視頻在液晶屏上的彩色顯示、灰度顯示、邊緣檢測圖像顯示,在圖像紋理復(fù)雜的情況下也能較好的提取圖像邊緣。實驗結(jié)果表明,該系統(tǒng)具有速度快、精度高等優(yōu)點,能夠很好的應(yīng)用在目標(biāo)識別、目標(biāo)跟蹤、智能視頻監(jiān)控等領(lǐng)域。
[1] 吳繼華,蔡海寧,王誠.Altera FPGA/CPLD設(shè)計(高級篇)[M].北京:人民郵電出版社,2011.
[2] 楊杰,黃朝兵.數(shù)字圖像處理及MATLAB實現(xiàn)[M].北京:電子工業(yè)出版社,2010.
[3] 蔡立晶,蔡立娟,楊立.基于指紋圖像邊緣檢測算法的比較研究[J].中國新技術(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 顯示模式識別 [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硬件實現(xiàn)的圖像邊緣檢測及仿真[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的圖像分塊實時邊緣檢測系統(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 稿件編號:201305290
郭 龍(1989—),男,陜西咸陽人,碩士研究生。研究方向:數(shù)?;旌霞呻娐吩O(shè)計。