新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 一種基于FPGA的視頻邊緣檢測系統(tǒng)設(shè)計

一種基于FPGA的視頻邊緣檢測系統(tǒng)設(shè)計

作者: 時間:2014-05-03 來源:網(wǎng)絡(luò) 收藏

摘要:對于視頻圖像檢測與識別的需要,提出了一種基于FPGA的視頻邊緣檢測系統(tǒng)設(shè)計方案,并完成系統(tǒng)的硬件設(shè)計。通過FPGA控制攝像頭進行視頻采集,雙端口SDRAM對圖像數(shù)據(jù)進行緩存,F(xiàn)PGA再對數(shù)據(jù)進行實時處理。實際采用DE2-115開發(fā)板和CMOS攝像頭OV7670為硬件平臺進行驗證。結(jié)果表明,該系統(tǒng)具有實時性高,檢測準(zhǔn)確的特點,達(dá)到了設(shè)計要求。

本文引用地址:http://m.butianyuan.cn/article/246281.htm

隨著科技的發(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ù)圖像處理過程對圖像信息的分析工作。對于視頻圖像的邊緣檢測,若采用軟件方式實現(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)。實驗結(jié)果表明,該系統(tǒng)十分適合視頻數(shù)據(jù)的處理。

1 系統(tǒng)總體設(shè)計

本系統(tǒng)基于一片公司的系列的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中進行緩沖,Sobel邊緣檢測模塊通過FIFO _OUT模塊讀取數(shù)據(jù)并進行處理,VGA控制模塊控制VGA接口的行同步和場同步信號完成VGA顯示。

 

 

2 視頻采集與邊緣檢測子模塊

2.1 I2C配置模塊

本系統(tǒng)采用OmniVision公司的OV7670這一款CMOS傳感器,為系統(tǒng)提供視頻信號。通過SCCB(Serial Camera Control Bus)總線對OV7670的共201個控制寄存器進行配置,來改變輸出數(shù)據(jù)的格式、視頻分辨率、傳輸方式,調(diào)整圖像的白平衡、飽和度、色度、伽瑪曲線等。兩線制的SCCB總線與I2C總線相同,都是雙向兩線制同步串行總線。I2C傳輸時序如圖2所示,I2C_SCLK就等同于SCCB中的SIOC、I2C_SDAT就等同于SC CB中的SIOD,模塊每次傳輸24位數(shù)據(jù),前8位為從設(shè)備地址(0x42代表寫寄存器,0x43代表度寄存器),中間8位是從設(shè)備寄存器地址,最后8位是對寄存器進行配置的數(shù)據(jù)。

 

 

2.2 視頻數(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時序仿真圖。

 

 

2.3 SDRAM控制模塊

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ù)的無縫緩沖工作。

2.4 Sobel邊緣檢測模塊

圖像邊緣是一幅圖像中灰度變化比較劇烈的區(qū)域,計算灰度圖像中各區(qū)域的梯度幅值可以用來判定圖像的邊緣信息。設(shè)圖像的亮度為f(x,y),則梯度可以定義如下:

 

 

Sobel邊緣檢測便是是基于梯度的檢測,其利用Sobel算子如圖4所示Gx與Gy,在3×3的圖像鄰域內(nèi)和亮度數(shù)據(jù)做卷積運算,表達(dá)式如下:

 

 

 

 

用硬件左邊緣檢測,由于是實時處理,SDRAM中緩存的數(shù)據(jù)只是連續(xù)視頻圖像中一幀圖像,而且視頻數(shù)據(jù)還不停的從攝像頭中傳過來,因此就不能像軟件處理那樣先建立一個二維的數(shù)據(jù)陣列,這樣就必須采用流水線方式進行運算,流水線數(shù)目和每次參加運算的像素數(shù)目相等,這里就總共需要9條流水線。為此我們就專門設(shè)計了3條Line_Buffer來完成式(4)與式(5)的運算,3條Line_Buffer由MegaWizard中配置的alts hift_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完成。

fpga相關(guān)文章:fpga是什么


攝像頭相關(guān)文章:攝像頭原理

上一頁 1 2 下一頁

關(guān)鍵詞: Altera Cyclone IV

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉