基于FPGA的視頻實(shí)時(shí)邊緣檢測(cè)系統(tǒng)
摘要:對(duì)于視頻圖像檢測(cè)與識(shí)別的需要,提出了一種基于FPGA的視頻邊緣檢測(cè)系統(tǒng)設(shè)計(jì)方案,并完成系統(tǒng)的硬件設(shè)計(jì)。通過(guò)FPGA控制攝像頭進(jìn)行視頻采集,雙端口SDRAM對(duì)圖像數(shù)據(jù)進(jìn)行緩存,FPGA再對(duì)數(shù)據(jù)進(jìn)行實(shí)時(shí)處理。實(shí)際采用DE2-115開(kāi)發(fā)板和CMOS攝像頭OV7670為硬件平臺(tái)進(jìn)行驗(yàn)證。結(jié)果表明,該系統(tǒng)具有實(shí)時(shí)性高,檢測(cè)準(zhǔn)確的特點(diǎn),達(dá)到了設(shè)計(jì)要求。
本文引用地址:http://cafeforensic.com/article/201610/308525.htm隨著科技的發(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)是車(chē)牌識(shí)別、車(chē)流量監(jiān)控、自動(dòng)導(dǎo)航等技術(shù)中的重要環(huán)節(jié)。通過(guò)有效的邊緣檢測(cè),可以大大簡(jiǎn)化后續(xù)圖像處理過(guò)程對(duì)圖像信息的分析工作。對(duì)于視頻圖像的邊緣檢測(cè),若采用軟件方式實(shí)現(xiàn)由于受到系統(tǒng)處理速度的限制,容易出現(xiàn)斷幀現(xiàn)象,這對(duì)于要求實(shí)時(shí)處理的情況下將是一個(gè)很大的缺陷。硬件實(shí)現(xiàn)主要有基于專(zhuān)用芯片,基于DSP和基于FPGA的3種處理方式?;趯?zhuān)用芯片方式并不適合前期產(chǎn)品的開(kāi)發(fā)?;贒SP方式在運(yùn)算速度、數(shù)據(jù)吞吐量等方面有限制。本設(shè)計(jì)基于FPGA實(shí)現(xiàn),邊緣檢測(cè)采用流水線(xiàn)結(jié)構(gòu)。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)十分適合視頻數(shù)據(jù)的處理。
1 系統(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總線(xiàn)完成對(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顯示。
2 視頻采集與邊緣檢測(cè)子模塊
2.1 I2C配置模塊
本系統(tǒng)采用OmniVision公司的OV7670這一款CMOS傳感器,為系統(tǒng)提供視頻信號(hào)。通過(guò)SCCB(Serial Camera Control Bus)總線(xiàn)對(duì)OV7670的共201個(gè)控制寄存器進(jìn)行配置,來(lái)改變輸出數(shù)據(jù)的格式、視頻分辨率、傳輸方式,調(diào)整圖像的白平衡、飽和度、色度、伽瑪曲線(xiàn)等。兩線(xiàn)制的SCCB總線(xiàn)與I2C總線(xiàn)相同,都是雙向兩線(xiàn)制同步串行總線(xiàn)。I2C傳輸時(shí)序如圖2所示,I2C_SCLK就等同于SCCB中的SIOC、I2C_SDAT就等同于SC CB中的SIOD,模塊每次傳輸24位數(shù)據(jù),前8位為從設(shè)備地址(0x42代表寫(xiě)寄存器,0x43代表度寄存器),中間8位是從設(shè)備寄存器地址,最后8位是對(duì)寄存器進(jìn)行配置的數(shù)據(jù)。
2.2 視頻數(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í)序仿真圖。
2.3 SDRAM控制模塊
SDRAM模塊主要有FIFO和片外SDRAM兩部分組成,因?yàn)镃MOS攝像頭OV7670采集的數(shù)據(jù)速率和SDRAM讀寫(xiě)速率是不一樣的,為了匹配這兩個(gè)不同傳輸速率的模塊,其中必須添加一個(gè)FIFO存儲(chǔ)器。其中FIFO不需要單獨(dú)通過(guò)語(yǔ)言描述得到,只需要通過(guò)MegaWizard工具配置得到。本設(shè)計(jì)中用到的SDRAM為DE2-115開(kāi)發(fā)板上的兩個(gè)64M字節(jié)SDRAM,其中每個(gè)SDRAM又包含4個(gè)BANK。SDRAM行地址線(xiàn)和列地址線(xiàn)是復(fù)用13位的地址總線(xiàn),在讀寫(xiě)時(shí),先要激活某個(gè)BANK,接著鎖存行地址,最后在讀寫(xiě)指令有效時(shí)鎖存列地址。SDRAM的最高讀寫(xiě)速率可達(dá)到166 MHz,本系統(tǒng)中應(yīng)用為100 MHz,同時(shí)每個(gè)時(shí)鐘上升沿又可讀寫(xiě)16 bit數(shù)據(jù),因此SDRAM完全可以實(shí)現(xiàn)數(shù)據(jù)的無(wú)縫緩沖工作。
2.4 Sobel邊緣檢測(cè)模塊
圖像邊緣是一幅圖像中灰度變化比較劇烈的區(qū)域,計(jì)算灰度圖像中各區(qū)域的梯度幅值可以用來(lái)判定圖像的邊緣信息。設(shè)圖像的亮度為f(x,y),則梯度可以定義如下:
Sobel邊緣檢測(cè)便是是基于梯度的檢測(cè),其利用Sobel算子如圖4所示Gx與Gy,在3×3的圖像鄰域內(nèi)和亮度數(shù)據(jù)做卷積運(yùn)算,表達(dá)式如下:
用硬件左邊緣檢測(cè),由于是實(shí)時(shí)處理,SDRAM中緩存的數(shù)據(jù)只是連續(xù)視頻圖像中一幀圖像,而且視頻數(shù)據(jù)還不停的從攝像頭中傳過(guò)來(lái),因此就不能像軟件處理那樣先建立一個(gè)二維的數(shù)據(jù)陣列,這樣就必須采用流水線(xiàn)方式進(jìn)行運(yùn)算,流水線(xiàn)數(shù)目和每次參加運(yùn)算的像素?cái)?shù)目相等,這里就總共需要9條流水線(xiàn)。為此我們就專(zhuān)門(mén)設(shè)計(jì)了3條Line_Buffer來(lái)完成式(4)與式(5)的運(yùn)算,3條Line_Buffer由MegaWizard中配置的alts hift_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完成。
2.5 VGA顯示模塊
VGA顯示器的顯示采用逐行掃描,從屏幕左上方開(kāi)始,從左到右,從上到下掃描。每一行的現(xiàn)實(shí)受到行同步信號(hào)(HREF)控制,每一幀的信號(hào)受到場(chǎng)同步信號(hào)(VSYNC)控制。本系統(tǒng)中CMOS攝像頭采集圖像分辨率為640×480像素,VGA(640×480)的工業(yè)標(biāo)準(zhǔn)為行掃描: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ì)。
3 實(shí)驗(yàn)結(jié)果
由QuartusII軟件綜合仿真后可知,系統(tǒng)最高工作頻率為100MHz,片上資源使用情況如表1所示。通過(guò)DE2-115開(kāi)發(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è)圖像完整順暢,并沒(méi)有斷禎現(xiàn)象發(fā)生。
4 結(jié)論
設(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)域。
評(píng)論