<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 基于FPGA的圖像預(yù)處理系統(tǒng)

          基于FPGA的圖像預(yù)處理系統(tǒng)

          作者: 時(shí)間:2007-01-09 來源:網(wǎng)絡(luò) 收藏

          由于獲取圖像的工具或手段的影響,使獲取圖像無法完全體現(xiàn)原始圖像的全部信息。因此,對(duì)圖像進(jìn)行預(yù)處理就顯得非常重要。預(yù)處理的目的是改善圖像數(shù)據(jù),抑制不需要的變形或者增強(qiáng)某些對(duì)于后續(xù)處理來說比較重要的圖像特征。

          通常根據(jù)預(yù)處理目的的不同,把預(yù)處理技術(shù)歸為圖像增強(qiáng)技術(shù)和圖像分割技術(shù)兩類。圖像對(duì)比度處理是空間域圖像增強(qiáng)的一種方法。由于圖像灰度范圍狹窄會(huì)使圖像的對(duì)比度不理想,可用對(duì)比度增強(qiáng)技術(shù)來調(diào)整圖像灰度值的動(dòng)態(tài)范圍。

          圖像處理通常采用軟件或者DSP(數(shù)字信號(hào)處理器)來實(shí)現(xiàn)。如果利用軟件實(shí)現(xiàn),運(yùn)行時(shí)會(huì)耗費(fèi)較多的PC資源,而且算法越復(fù)雜時(shí)耗費(fèi)的資源就越多,對(duì)于需要高速處理的情況就不適用了;而如果采用DSP來實(shí)現(xiàn),提高并行性的同時(shí)指令執(zhí)行速度必然會(huì)提高,較高的指令速度可能導(dǎo)致設(shè)計(jì)復(fù)雜化,并增加功耗和成本。新一代的集成了CPU或DSP內(nèi)核,可以在一片上進(jìn)行軟硬件協(xié)同設(shè)計(jì),為實(shí)現(xiàn)SOPC提供了強(qiáng)大的硬件支持。本文介紹的是利用并行處理和計(jì)算能力,以Altera FPGA Stratix EP1S40為控制的核心實(shí)現(xiàn)的SOPC。

          硬件平臺(tái)

          采用基于PCI總線的FPGA開發(fā)平臺(tái),結(jié)構(gòu)如圖1所示。板上主要硬件資源有:PCI橋、FPGA、SRAM和SDRAM等其他外設(shè)。

          圖1 基于PCI總線的FPGA開發(fā)平臺(tái)


          PCI橋采用PCI9656橋接芯片實(shí)現(xiàn),用來連接PCI總線與32位/50MHz的板級(jí)局部總線;FPGA包括41 250個(gè)邏輯單元,14個(gè)DSP模塊,112個(gè)嵌入式乘法器,4個(gè)增強(qiáng)型PLL(鎖相環(huán))和4個(gè)快速型PLL等邏輯資源;SDRAM用來存儲(chǔ)圖像數(shù)據(jù)。Avalon總線模塊完成整個(gè)片上可編程系統(tǒng)組件之間的互連。Avalon總線是SOPC設(shè)計(jì)中連接片上處理器和其他IP模塊的一種簡單總線協(xié)議,規(guī)定了主、從構(gòu)件之間的端口連接以及通信時(shí)序關(guān)系,SOPC Builder來完成整個(gè)系統(tǒng)(包括Avalon)模塊的生成和集成。豐富的板級(jí)資源可以滿足圖像的高速預(yù)處理需求。

          系統(tǒng)工作原理

          設(shè)計(jì)采用DMA方式快速傳輸圖像數(shù)據(jù),這樣數(shù)據(jù)的傳輸和處理可以并行起來,使得系統(tǒng)的運(yùn)行效率大為提高。PC與PCI板卡之間建立軟件環(huán)境,在該環(huán)境下利用DMA通道把圖像數(shù)據(jù)從主機(jī)通過PCI總線、PCI橋、板級(jí)局部總線和Avalon總線傳到SDRAM存儲(chǔ)起來,然后送入算法邏輯模塊進(jìn)行處理,處理完成后再把圖像數(shù)據(jù)存儲(chǔ)到SDRAM中,最后再用DMA通道把圖像處理結(jié)果傳送回主機(jī)。

          建立片上系統(tǒng)中的關(guān)鍵模塊

          本文設(shè)計(jì)的圖像對(duì)比度增強(qiáng)系統(tǒng)是建立在Stratix EP1S40基礎(chǔ)上的SOPC。該設(shè)計(jì)在Quartus II 5.0中利用SOPC Builder將系統(tǒng)的工作頻率設(shè)為50MHz,器件系列設(shè)為Stratix,調(diào)用已經(jīng)建立的IP模塊和算法邏輯模塊,并設(shè)置各個(gè)模塊的時(shí)鐘和基地址,配置生成片上系統(tǒng)。根據(jù)任務(wù)要求,SOPC結(jié)構(gòu)框圖如圖2所示。

          圖2 SOPC結(jié)構(gòu)框圖

          圖2中,Avalon總線接口分為主(Master)和從(Slave)兩類,前者具有相接的Avalon總線的控制權(quán),后者是被動(dòng)的。自定制的Avalon從外設(shè)根據(jù)對(duì)Avalon總線操作方式的不同分為兩類:一類是Avalon從(Slave)外設(shè),只是作為Avalon總線的一個(gè)從元件來處理;另一類是Avalon流模式從(Streaming Slave)外設(shè),需要使用Avalon總線的流傳輸模式,外設(shè)的設(shè)計(jì)更復(fù)雜。

          ● 板級(jí)局部總線與Avalon總線橋之間的通信模塊

          在板級(jí)局部總線與FPGA內(nèi)部Avalon總線橋之間建立通信模塊。由于SOPC內(nèi)部各模塊之間的邏輯連接是由Avalon總線完成的,所以可以從主機(jī)通過PCI總線和板級(jí)局部總線訪問SOPC組件。該模塊作為Avalon總線的一個(gè)主控接口,對(duì)其他Avalon從外設(shè)和Avalon流模式從外設(shè)進(jìn)行訪問和控制。

          ● 控制模塊

          控制模塊的工作時(shí)鐘獨(dú)立于系統(tǒng)時(shí)鐘,如圖3所示。包括兩個(gè)模塊的設(shè)計(jì):(1)用于對(duì)SDRAM存儲(chǔ)資源做合理分配的流模式存儲(chǔ)管理器模塊,它作為Avalon流模式從外設(shè),讀寫端口的數(shù)量可配置,這些讀寫端口可以以流傳輸模式把圖像數(shù)據(jù)讀出或?qū)懭隨DRAM。(2)存儲(chǔ)器控制模塊,它作為Avalon總線的另一主控接口,對(duì)作為Avalon總線從控接口的SDRAM控制器進(jìn)行控制。

          圖3 控制模塊


          ● 圖像對(duì)比度增強(qiáng)算法及VHDL實(shí)現(xiàn)

          在圖像對(duì)比度處理方法中,可以設(shè)計(jì)出不同的轉(zhuǎn)換函數(shù)。本系統(tǒng)是針對(duì)鋸齒形函數(shù)轉(zhuǎn)換設(shè)計(jì)的,鋸齒形轉(zhuǎn)換可以把幾段較窄灰度區(qū)間拉伸到較寬的灰度范圍內(nèi),這種處理可以把灰度變化較平緩的區(qū)域也較鮮明地顯示出來,從而增強(qiáng)圖像中感興趣的特征。

          該設(shè)計(jì)對(duì)一幀30082000像素、數(shù)據(jù)寬度為8位的灰度圖像進(jìn)行處理,圖像共有2000行、3008列像素點(diǎn),行和列均從0開始計(jì)起。在系統(tǒng)時(shí)鐘上升沿、行有效信號(hào)與數(shù)據(jù)有效信號(hào)均有效時(shí),把圖像數(shù)據(jù)讀入進(jìn)來,對(duì)其做相應(yīng)處理。每個(gè)系統(tǒng)時(shí)鐘上升沿讀入一個(gè)圖像數(shù)據(jù),在第N行像素點(diǎn)處理完后,第N+1行有效信號(hào)與數(shù)據(jù)有效信號(hào)必須同時(shí)有效才能繼續(xù)處理,在對(duì)第1999行、3007列像素點(diǎn)處理完畢后,行有效信號(hào)與數(shù)據(jù)有效信號(hào)置為無效,此時(shí)整幀圖像處理完畢。算法邏輯模塊中需要幀有效計(jì)數(shù)器和行有效計(jì)數(shù)器各一個(gè),分別用來對(duì)幀和行進(jìn)行計(jì)數(shù),還需要一個(gè)像素計(jì)數(shù)器對(duì)某行像素做計(jì)數(shù)統(tǒng)計(jì)。由于該算法邏輯模塊是基于SOPC技術(shù),能夠在SOPC Builder工具中作為自定制模塊調(diào)用,需設(shè)置兩個(gè)寄存器,分別是幀有效計(jì)數(shù)寄存器和行有效計(jì)數(shù)寄存器,它們根據(jù)Avalon總線地址的不同,同時(shí)作為Avalon總線的讀或?qū)懠拇嫫?,從而使自定義模塊可以和Avalon總線進(jìn)行通信。每輸入一個(gè)像素點(diǎn)判斷其灰度值滿足設(shè)置的哪個(gè)區(qū)間范圍并做相應(yīng)轉(zhuǎn)換,從而實(shí)現(xiàn)一幀圖像的對(duì)比度增強(qiáng)處理。根據(jù)算法需求,采用VHDL語言對(duì)算法邏輯建模,并以Avalon總線從外設(shè)的方式在SOPC Builder 中調(diào)用。VHDL實(shí)現(xiàn)如下。

          entity enhancement is
          port (iLVAL : in std_logic;
          iDVAL : in std_logic;
          iFVAL : in std_logic := '1';
          iCLK : in std_logic;
          iDATA : in std_logic_vector(7 downto 0);
          oLVAL : out std_logic; oDVAL : out std_logic;
          oFVAL : out std_logic;
          oDATA : out std_logic_vector (7 downto 0)
          );
          end enhancement;

          這里iFVAL被置為“1”,說明是對(duì)一幀圖像進(jìn)行處理;iDATA與oDATA是圖像輸入、輸出二進(jìn)制數(shù)據(jù),寬度為8位。

          系統(tǒng)的實(shí)現(xiàn)

          用標(biāo)準(zhǔn)化硬件描述語言VHDL建立FPGA模塊實(shí)現(xiàn)。按照自頂向下的設(shè)計(jì)方法生成各設(shè)計(jì)階層,將設(shè)計(jì)任務(wù)分解為不同的功能元件,每個(gè)元件具有專門定義的輸入輸出端口并執(zhí)行各自的邏輯功能。該SOPC設(shè)計(jì)通過以下步驟實(shí)現(xiàn)。

          (1)利用SOPC Builder工具編譯生成用戶自定制模塊,調(diào)用已建立的IP模塊并設(shè)置參數(shù),配置生成片上系統(tǒng);

          (2)在頂層VHDL文件中調(diào)用模塊并示例化,進(jìn)行信號(hào)連接;

          (3)對(duì)整個(gè)系統(tǒng)進(jìn)行管腳等約束設(shè)置,全編譯并進(jìn)行行為和時(shí)序驗(yàn)證;

          (4)下載和硬件調(diào)試完成。

          結(jié)束語

          該系統(tǒng)對(duì)實(shí)驗(yàn)室在光線較弱情況下所拍的一幀30082000灰度圖像進(jìn)行對(duì)比度增強(qiáng)處理,處理前后如圖4、5所示。在SOPC系統(tǒng)時(shí)鐘為50MHz時(shí),對(duì)于輸入大小為30082000像素點(diǎn)的灰度圖像,每一幀的處理時(shí)間為T=(1/(50106))30082000=0.120 32s。

          圖4 原圖像

          圖5 處理后圖像


          而在3GHz Pentium 4、256MB內(nèi)存的PC上通過Matlab用代碼實(shí)現(xiàn)則需0.9850s。該設(shè)計(jì)采用FPGA實(shí)現(xiàn)系統(tǒng),與利用軟件處理圖像的方法比較起來,可以更快速地實(shí)現(xiàn)對(duì)圖像的預(yù)處理。同時(shí)系統(tǒng)構(gòu)成靈活,設(shè)計(jì)中模塊的可重復(fù)開發(fā)性降低了生產(chǎn)成本、縮短了生產(chǎn)周期,提高了工作效率。



          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();