一種基于FPGA的視頻邊緣檢測(cè)系統(tǒng)設(shè)計(jì)
摘要:對(duì)于視頻圖像檢測(cè)與識(shí)別的需要,提出了一種基于FPGA的視頻邊緣檢測(cè)系統(tǒng)設(shè)計(jì)方案,并完成系統(tǒng)的硬件設(shè)計(jì)。通過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ì)要求。
本文引用地址:http://cafeforensic.com/article/246281.htm隨著科技的發(fā)展,視頻采集系統(tǒng)越來越廣泛的應(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é)。通過有效的邊緣檢測(cè),可以大大簡化后續(xù)圖像處理過程對(duì)圖像信息的分析工作。對(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)。實(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首先通過I2C總線完成對(duì)OV7670的初始化,然后將采集到的數(shù)據(jù)通過視頻數(shù)據(jù)采集模塊轉(zhuǎn)換成RGB565標(biāo)準(zhǔn)的視頻數(shù)據(jù),圖像數(shù)據(jù)通過FIFO_IN模塊在SDRAM中進(jìn)行緩沖,Sobel邊緣檢測(cè)模塊通過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)。通過SCCB(Serial Camera Control Bus)總線對(duì)OV7670的共201個(gè)控制寄存器進(jìn)行配置,來改變輸出數(shù)據(jù)的格式、視頻分辨率、傳輸方式,調(diào)整圖像的白平衡、飽和度、色度、伽瑪曲線等。兩線制的SCCB總線與I2C總線相同,都是雙向兩線制同步串行總線。I2C傳輸時(shí)序如圖2所示,I2C_SCLK就等同于SCCB中的SIOC、I2C_SDAT就等同于SC CB中的SIOD,模塊每次傳輸24位數(shù)據(jù),前8位為從設(shè)備地址(0x42代表寫寄存器,0x43代表度寄存器),中間8位是從設(shè)備寄存器地址,最后8位是對(duì)寄存器進(jìn)行配置的數(shù)據(jù)。
2.2 視頻數(shù)據(jù)采集模塊
視頻數(shù)據(jù)采集模塊,主要是通過FPGA配合CMOS攝像頭OV7670的行、場(chǎng)同步信號(hào)采集圖像數(shù)據(jù)。首先通過配置控制寄存器,控制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讀寫速率是不一樣的,為了匹配這兩個(gè)不同傳輸速率的模塊,其中必須添加一個(gè)FIFO存儲(chǔ)器。其中FIFO不需要單獨(dú)通過語言描述得到,只需要通過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ù)的無縫緩沖工作。
2.4 Sobel邊緣檢測(cè)模塊
圖像邊緣是一幅圖像中灰度變化比較劇烈的區(qū)域,計(jì)算灰度圖像中各區(qū)域的梯度幅值可以用來判定圖像的邊緣信息。設(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ù)還不停的從攝像頭中傳過來,因此就不能像軟件處理那樣先建立一個(gè)二維的數(shù)據(jù)陣列,這樣就必須采用流水線方式進(jìn)行運(yùn)算,流水線數(shù)目和每次參加運(yùn)算的像素?cái)?shù)目相等,這里就總共需要9條流水線。為此我們就專門設(shè)計(jì)了3條Line_Buffer來完成式(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完成。
fpga相關(guān)文章:fpga是什么
攝像頭相關(guān)文章:攝像頭原理
評(píng)論