《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的灰度形態(tài)學(xué)濾波器實(shí)現(xiàn)
基于FPGA的灰度形態(tài)學(xué)濾波器實(shí)現(xiàn)
柳國普 張桂林 張 寧
摘要: 闡述了灰度形態(tài)學(xué)濾波的原理和基本操作,給出了3×3結(jié)構(gòu)元素灰度形態(tài)學(xué)濾波器的硬件結(jié)構(gòu),詳細(xì)描述了該濾波器在Xilinx公司的XC2S400E芯片上實(shí)現(xiàn)的過程和仿真的方法,并說明了需要注意的問題。
關(guān)鍵詞: FPGA 圖像處理 賽靈思
Abstract:
Key words :

  摘  要: 闡述了灰度形態(tài)學(xué)濾波的原理和基本操作,給出了3×3結(jié)構(gòu)元素灰度形態(tài)學(xué)濾波器的硬件結(jié)構(gòu),詳細(xì)描述了該濾波器在Xilinx公司的XC2S400E芯片上實(shí)現(xiàn)的過程和仿真的方法,并說明了需要注意的問題。

  關(guān)鍵詞: 圖像處理  形態(tài)學(xué)濾波  FPGA

   數(shù)學(xué)形態(tài)學(xué)濾波是數(shù)字圖像處理和計(jì)算機(jī)視覺研究中的一種新方法,已廣泛應(yīng)用于計(jì)算機(jī)視覺、圖像處理、視覺檢測(cè)、紋理和場景分析等方面。上述這些應(yīng)用都有時(shí)間限制,要求實(shí)時(shí)處理。數(shù)學(xué)形態(tài)學(xué)濾波作為一種非線性濾波技術(shù),其理論基礎(chǔ)是集合論,具有天然的并行結(jié)構(gòu),便于硬件電路實(shí)現(xiàn)[1]。但形態(tài)學(xué)濾波的硬件實(shí)現(xiàn)是以犧牲硬件資源為代價(jià)的。對(duì)于一幅較大的灰度圖像,如果采用常規(guī)器件實(shí)現(xiàn),硬件結(jié)構(gòu)會(huì)相當(dāng)龐大。

  隨著微電子技術(shù)的發(fā)展,現(xiàn)場可編程門陣列(Field Program Gates Array,FPGA)器件已經(jīng)朝著高密度、低壓、低功耗的方向發(fā)展。由于FPGA芯片門數(shù)不斷增加,PLL/DLL、Distributed RAM、Block RAM等片內(nèi)資源以及設(shè)計(jì)所需的IP庫越來越豐富,所有這些使得基于FPGA的數(shù)學(xué)形態(tài)學(xué)濾波器實(shí)現(xiàn)成為可能。本文綜合考慮了數(shù)學(xué)形態(tài)學(xué)濾波器的并行特性和FPGA器件的特點(diǎn),在Xilinx公司的XC2S400E芯片上實(shí)現(xiàn)了灰度圖像的開操作形態(tài)學(xué)濾波器。

1 灰度形態(tài)學(xué)濾波基本知識(shí)[2]

  數(shù)學(xué)形態(tài)學(xué)是一種數(shù)字圖像處理的新方法,其研究的主要目的在于描述圖像的基本結(jié)構(gòu)和特征,主要內(nèi)容是在積分幾何和隨機(jī)集合論的基礎(chǔ)上,設(shè)計(jì)一整套變換、概念和算法,以描述圖像的各個(gè)象素之間的關(guān)系。它的基本思想是用具有一定形態(tài)的結(jié)構(gòu)元去度量和提取圖像中的對(duì)應(yīng)形態(tài)以達(dá)到對(duì)圖像分析和識(shí)別的目的。形態(tài)學(xué)的應(yīng)用可以簡化圖像數(shù)據(jù),保持它們基本的形狀特性,并除去不相干的結(jié)構(gòu)。

  形態(tài)學(xué)的基本運(yùn)算有4種:膨脹、腐蝕、開和閉?;叶葓D像的腐蝕和膨脹過程可直接從圖像及結(jié)構(gòu)元素的灰度級(jí)函數(shù)計(jì)算出來。對(duì)圖像中的某一點(diǎn)f(x,y),灰度形態(tài)學(xué)腐蝕運(yùn)算的定義為:

  

灰度形態(tài)膨脹即以結(jié)構(gòu)元素g(i,j)為模板,搜尋圖像在結(jié)構(gòu)基元大小范圍內(nèi)的灰度和的極大值。腐蝕運(yùn)算過程則是以結(jié)構(gòu)元素g(i,j)為模板,搜尋圖像在結(jié)構(gòu)基元大小范圍內(nèi)的灰度差的極小值?;叶鹊男螒B(tài)膨脹和形態(tài)腐蝕運(yùn)算的表達(dá)式與圖像處理中的卷積積分非常相似(即以和、差代替連乘,用最小、最大運(yùn)算代替求總和)。

  灰度形態(tài)學(xué)開運(yùn)算的定義為:

  

  開運(yùn)算是采用相同的結(jié)構(gòu)元先做腐蝕再做膨脹的迭代運(yùn)算。閉運(yùn)算是采用相同的結(jié)構(gòu)元先做膨脹再做腐蝕的迭代運(yùn)算。開運(yùn)算和閉運(yùn)算的基本作用是對(duì)圖像進(jìn)行平滑處理:開運(yùn)算可以去掉圖像中的一些孤立子域和毛刺,閉運(yùn)算可以填充一些小洞和將2個(gè)鄰近的目標(biāo)連接起來。

  在形態(tài)算法設(shè)計(jì)中,結(jié)構(gòu)元素的選擇十分重要,其形狀和尺寸的選擇是能否有效地提取信息的關(guān)鍵。一般情況下,結(jié)構(gòu)元素的選擇按照下面原則進(jìn)行:

  (1)結(jié)構(gòu)元素必須在幾何上比原圖像簡單,且有界。

  (2)結(jié)構(gòu)元素的凸性非常重要,一般選擇凸性子集。

2 灰度形態(tài)學(xué)濾波器的硬件實(shí)現(xiàn)

2.1 結(jié)構(gòu)元素選擇及簡化[3]

  本文所述形態(tài)學(xué)濾波的目的是檢測(cè)256×256大小12位灰度圖像f中的弱小目標(biāo),選擇3×3大小的扁平結(jié)構(gòu)元素和原始圖像做開操作,其結(jié)構(gòu)為:

  

2.2 電路原理設(shè)計(jì)[4][5]

  輸入圖像f與結(jié)構(gòu)元素g1腐蝕就是求f中每行相鄰3個(gè)象素的灰度最小值。對(duì)于1幅靜止圖像,可以采用1個(gè)1×3的窗體從圖像第1行第1列開始,自左向右滑動(dòng),依次取出窗口內(nèi)的3個(gè)象素灰度值,比較得到灰度最小值并按順序存儲(chǔ)。第1行做完后,再在第2行滑動(dòng),直至圖像的最后1行的最后3個(gè)象素。存儲(chǔ)后的圖像即為f與g1腐蝕的結(jié)果圖像。對(duì)于實(shí)時(shí)串行輸入圖像,只需讓圖像灰度數(shù)據(jù)流從1×3的窗體通過,取出窗體內(nèi)的3個(gè)象素灰度值,比較后得到的最小值數(shù)據(jù)流就是腐蝕后的圖像灰度數(shù)據(jù)。

  求3個(gè)數(shù)的最小值可以先求2個(gè)數(shù)的較小值,將結(jié)果再與第3個(gè)數(shù)比較即可得到最小值。設(shè)計(jì)的關(guān)鍵是如何利用第1組數(shù)據(jù)的中間結(jié)果快速完成第2組數(shù)據(jù)的比較。針對(duì)圖像是串行輸入流以及FPGA內(nèi)部資源足夠豐富的特點(diǎn),設(shè)計(jì)了二級(jí)流水比較器,其邏輯框圖如圖1所示。圖像第1行第1列的灰度值輸入后鎖存到12位的觸發(fā)器,待第2個(gè)數(shù)據(jù)輸入后與之比較,較小值鎖存到中間的12位觸發(fā)器,而第2個(gè)數(shù)據(jù)存儲(chǔ)到左邊的12位觸發(fā)器。當(dāng)?shù)?個(gè)數(shù)據(jù)輸入后與前2個(gè)數(shù)據(jù)的較小值比較,得到第1組數(shù)據(jù)的最小值,同時(shí)第1組數(shù)據(jù)中的第2個(gè)值作為第2組數(shù)據(jù)的第1個(gè)值,將與第3個(gè)數(shù)據(jù)(第2組數(shù)據(jù)的第2個(gè)值)比較。這樣,圖像數(shù)據(jù)輸入到1×3腐蝕單元,2個(gè)象素周期之后即可得到最小值輸出數(shù)據(jù)流。

 

 

  將圖1中的12位鎖存器替換深度為256字節(jié)的FIFO,即可得到1×3腐蝕邏輯框圖。與1×3腐蝕過程類似,f與g1腐蝕的最小值數(shù)據(jù)流輸入到1×3腐蝕單元,2行延遲時(shí)間之后即可得到f與g腐蝕的圖像灰度數(shù)據(jù)流。

  膨脹的結(jié)構(gòu)圖與腐蝕的結(jié)構(gòu)圖類似,只不過是求相應(yīng)的最大值。在圖1中,A、B二處分別加入非門即可得到膨脹單元的結(jié)構(gòu)圖。將腐蝕單元和膨脹單元級(jí)聯(lián)即可得到如圖2所示的f與g開操作結(jié)構(gòu)圖。整個(gè)結(jié)構(gòu)采用流水線方式設(shè)計(jì),使串行輸入的灰度數(shù)據(jù)能夠得到并行處理,這樣就極大地滿足了圖像處理的實(shí)時(shí)性要求。

 

 

  將腐蝕結(jié)構(gòu)圖和膨脹結(jié)構(gòu)圖次序交換即可得到形態(tài)學(xué)濾波閉操作結(jié)構(gòu)圖。對(duì)于不同大小的結(jié)構(gòu)元模板,其結(jié)構(gòu)圖與3×3的結(jié)構(gòu)類似,在此不再贅述。

2.3 FPGA實(shí)現(xiàn)

  雖然開操作結(jié)構(gòu)圖很復(fù)雜,但圖中實(shí)際用到的器件只有12位比較器、12位2選1選擇器、深度為256的FIFO以及12位鎖存器等。本文選用Xilinx公司的ISE5.2軟件為設(shè)計(jì)平臺(tái),以上器件均可以由ISE5.2自帶的CORE Generator生成。鑒于開操作的結(jié)構(gòu)特點(diǎn),整個(gè)濾波器采用元件例化的方式設(shè)計(jì)。求3×3最小值和3×3最大值的部分元件例化VHDL代碼如下:

  選用XC2S400E芯片,綜合后所用主要資源如下:

   Number of Slice Flip Flops: 212 out of 9 600 2%

   Number of 4 input LUTs: 306 out of 9 600   3%

   Number of occupied Slices: 260 out of 4 800 5%

   Number of Block RAMs: 4 out of 40           10%

   Total equivalent gate count for design: 69 920

3  仿真設(shè)計(jì)及注意事項(xiàng)

  本設(shè)計(jì)在ModelSim SE 5.6e軟件平臺(tái)下仿真。輸入圖像大小為256×256,仿真需要的數(shù)據(jù)量相當(dāng)大,而且還要求各輸入數(shù)據(jù)的時(shí)序一致,仿真測(cè)試文件中數(shù)據(jù)輸入采用讀文件的方法無法保證數(shù)據(jù)輸入的時(shí)序同步。同樣,濾波輸出的數(shù)據(jù)量也非常大,直接看波形顯然行不通。因此本設(shè)計(jì)先在C++ Builder環(huán)境下將圖像文件中的灰度數(shù)據(jù)轉(zhuǎn)換為測(cè)試向量,然后拷貝到仿真測(cè)試文件中。雖然測(cè)試文件相當(dāng)大,但可以保證圖像灰度值同步輸入。對(duì)于仿真結(jié)果輸出,采用寫文件的方法,將形態(tài)學(xué)濾波的輸出寫入到文件中。通過計(jì)算機(jī)比較仿真輸出文件和同一幅圖像在C++ Builder環(huán)境下生成的濾波結(jié)果文件是否有差異,即可判斷功能仿真的正確性。時(shí)序仿真時(shí)數(shù)據(jù)輸出的時(shí)間也要保存到仿真結(jié)果文件中。

  設(shè)計(jì)時(shí)要注意以下問題:

  (1)濾波器要求嚴(yán)格的時(shí)序關(guān)系,宜采用同步設(shè)計(jì)。

  (2)實(shí)際使用時(shí)圖像是連續(xù)輸入的,需要用場信號(hào)將濾波器復(fù)位。

  (3)行延遲FIFO宜采用XC2S400E片內(nèi)的Block RAM生成。

  (4)對(duì)于256×256的輸入圖像和3×3的結(jié)構(gòu)元,理論上的有效結(jié)果圖像大小是254×254。在實(shí)際使用中,對(duì)于不同大小的結(jié)構(gòu)元,濾波結(jié)果輸出會(huì)滯后幾個(gè)行周期,在圖像輸入完以后,象素時(shí)鐘信號(hào)也會(huì)撤銷,而此時(shí)形態(tài)學(xué)濾波還沒有結(jié)束,所以輸出的圖像大小比理論值還要小。不過沒有輸出的濾波結(jié)果數(shù)據(jù)絕大部分都是無效數(shù)據(jù),只有幾個(gè)象素是有效的。如果需要得到未能輸出的幾個(gè)有效數(shù)據(jù),可以在一幀圖像輸入結(jié)束之后再人為地加入幾個(gè)時(shí)鐘脈沖。

  (5)為了方便下一級(jí)處理單元接收濾波數(shù)據(jù),輸出圖像的大小也應(yīng)設(shè)為256×256,相應(yīng)的地址生成器也應(yīng)設(shè)為256×256,同時(shí)需要將無效數(shù)據(jù)設(shè)置為某個(gè)定值。

4  結(jié)束語

  根據(jù)實(shí)際應(yīng)用要求,本文設(shè)計(jì)了3×3結(jié)構(gòu)元素的形態(tài)學(xué)開操作濾波器,將其簡化后設(shè)計(jì)了相應(yīng)的硬件原理框圖,并在XC2S400E上實(shí)現(xiàn)。該設(shè)計(jì)已經(jīng)成功地應(yīng)用到實(shí)際中。在本文設(shè)計(jì)的開操作濾波器基礎(chǔ)上,通過簡單地改變結(jié)構(gòu)元素或改變?yōu)V波子模塊次序,即可得到其他性能的形態(tài)學(xué)濾波器。同時(shí)FPGA器件的可編程特性,可以方便地對(duì)電路進(jìn)行改進(jìn),以進(jìn)一步提高電路的性能。

 

參考文獻(xiàn)

1 劉志敏,楊杰.基于數(shù)學(xué)形態(tài)學(xué)的圖像形態(tài)濾波.紅外與激光工程,1999;28(4)

2 杜崢,張桂林,王超.紅外弱小目標(biāo)預(yù)處理及檢測(cè)方法研究.計(jì)算機(jī)與數(shù)字工程,2003;31(4)

3 Singh B,Siddiqi M U.A Simplified Algorithm for Approximate Separable Decomposition of Morphological Templates.Pattern Recognition,1996;29(9)

4 Shih F Y,Mitchell O R.Decomposition of Grey-Scale Morphological Structuring Elements.Pattern Recognition,1995;24(3)

5 Robin F,Renaudin M,Privat G et al.Functionally Asynchronous Array Processor for Morphological Filtering of Greyscale Images.IEEE Proceedings:Computers and Digital Techniques,1996;143(5)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。