專利名稱:一種數(shù)字圖像輪廓提取方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)字圖像處理技術(shù),特別是涉及適合于在FPGA上并行實現(xiàn)的基 于形態(tài)水平集的一種數(shù)字圖像輪廓提取方法。
背景技術(shù):
數(shù)字圖像的輪廓提取通常需要進(jìn)行大量的數(shù)據(jù)計算。盡管目前CPU的計算速度越 來越快,在面對復(fù)雜的處理算法或高分辨率的圖像時往往還是效率低下。
在現(xiàn)代數(shù)字電路設(shè)計中,F(xiàn)PGA發(fā)揮著越來越重要的作用。包括簡單的接口電路設(shè) 計,狀態(tài)機(jī)以及SoC的設(shè)計,F(xiàn)PGA扮演的角色已經(jīng)不容忽視。FPGA作為目前電子設(shè)計自動 化工具設(shè)計中廣泛應(yīng)用的一種器件,在圖像處理系統(tǒng)中已經(jīng)得到廣泛的應(yīng)用。
在眾多圖像輪廓提取算法中,基于能量泛函的分割方法或者活動輪廓模型是 當(dāng)前的研究熱點,它包括以Snake模型為代表的參數(shù)活動輪廓模型和基于水平集方法 的幾何活動輪廓模型。例如M. Kass, A. ffitkins, D. Terzopoulos在1988年發(fā)表的論文 “Snakes: active contourmodels”就屬于前者,而 N. Paragios, R. Deriche 在 2000 年發(fā)表的 論文 “Geodesic active contoursand level sets for the detection and tracking of moving objects”則屬于后者?;顒虞喞P偷幕舅枷胧鞘褂眠B續(xù)曲線來表達(dá)目標(biāo)輪廓, 并定義一個能量泛函使得其自變量包括曲線,將分割過程轉(zhuǎn)變?yōu)榍蠼饽芰糠汉淖钚≈档?過程,再通過求解函數(shù)對應(yīng)的歐拉方程得到數(shù)值。但是求解歐拉方程通常較為復(fù)雜,需要耗 費相當(dāng)長的時間進(jìn)行計算,而且傳統(tǒng)的方法也不利于采用并行方式進(jìn)行計算,而對于需要 用到浮點數(shù)操作的算法更不利于在FPGA上實現(xiàn)加速并行。本發(fā)明所采用的基于形態(tài)水平 集的圖像輪廓提取算法既能實現(xiàn)并行計算,而且計算簡單,不需要進(jìn)行浮點數(shù)運算,因而適 合在FPGA上實現(xiàn);而且所采用的方法具備曲線結(jié)構(gòu)拓?fù)涞男再|(zhì),能夠應(yīng)用于環(huán)境結(jié)構(gòu)復(fù)雜 的醫(yī)學(xué)圖像,而通過設(shè)置閾值參數(shù)能較為方便的控制曲線的演化,從而克服醫(yī)學(xué)圖像亮度 不均勻等對模型提取的影響。
硬件描述語言是FPGA設(shè)計中最重要的輸入方法,而VHDL和Verilog HDL是應(yīng)用最 廣泛的兩種硬件描述語言。通過這兩種語言可以描述數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能和接口, 從而完成數(shù)字系統(tǒng)的建模。但是使用VHDL和Verilog HDL語言做開發(fā)需要對硬件細(xì)節(jié)非 常的了解,這將一定程度上限制了 FPGA的使用。而且對于較為復(fù)雜的算法如圖像、語音、雷 達(dá)、軟件無線電等,若采用硬件描述語言編寫代碼,則將非常耗時,并且容易出現(xiàn)錯誤。發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種數(shù)字圖像輪廓提取方法。
本發(fā)明在FPGA上實現(xiàn)數(shù)字圖像輪廓提取的實時算法,能使數(shù)字圖像輪廓提取算 法符合FPGA硬件結(jié)構(gòu)和工作特性,并用FPGA實現(xiàn)該算法的硬件模塊。該模塊采用Handel-C 語言實現(xiàn)。
本發(fā)明的目的是通過如下技術(shù)方案實現(xiàn)的
本發(fā)明的一種在FPGA上實現(xiàn)圖像輪廓提取方法,其實現(xiàn)平臺為FPGA,采用 Handel-C語言描述實現(xiàn),整個模塊分為圖像數(shù)據(jù)的讀取,圖像數(shù)據(jù)的處理,以及圖像數(shù)據(jù)的存儲三個子模塊,三個模塊采用流水線方式并行,其中,該發(fā)明的主要特征在于圖像數(shù)據(jù)的處理子模塊。
上述的圖像數(shù)據(jù)的處理子模塊中,數(shù)據(jù)采用串行輸入,子模塊里又包含有 Dilation (膨脹)、And (與)、Not (非)、Erosion (腐蝕)、FIF0 (先進(jìn)先出)二級子模塊,這些二級子模塊之間采用流水線方式并行。
上述圖像數(shù)據(jù)的處理子模塊可實現(xiàn)圖像輪廓的擴(kuò)張,圖像輪廓的擴(kuò)張的結(jié)果是對目標(biāo)圖像進(jìn)行輪廓提取,所根據(jù)的算法是基于形態(tài)水平集的數(shù)字圖像輪廓提取算法。
這種數(shù)字圖像輪廓提取方法,是在FPGA上實現(xiàn),并且是基于形態(tài)水平集,從而實現(xiàn)曲線輪廓的擴(kuò)張。
本發(fā)明包括以下步驟
I)觀察被分割圖像,初始化一個長為long個像素,寬為width個像素的曲線,long 和width是一個整數(shù),該曲線稱為C,其中l(wèi)ong和width可以根據(jù)被分割圖像來進(jìn)行設(shè)定, 設(shè)定的原則為該曲線完全在目標(biāo)圖像內(nèi)部,在圖像上,初始化水平集函數(shù),得到初始化二值圖像A ;所述初始化水平集函數(shù)依據(jù)的公式如下「,X在曲線上或曲線內(nèi)部
#x, t) = [(公式 I)[O ,X在外曲
其中χ表示像素點所在位置,t表示時間變量;
2)初始化速度演化函數(shù),得到速度演化圖像V,令fo ,F(xiàn)=0, I ,
F = j(公式 2)[I ,F=-1
其中F為速度演化函數(shù),初始化演化函數(shù)依據(jù)的公式如下I,向曲線內(nèi)部運動
F = < O(公式 3)-1 ,向曲線外部運動
3)對 步驟I)得到的初始化二值圖像A進(jìn)行膨脹操作,得到圖像E,E是膨脹所得的圖像,B為3X3的結(jié)構(gòu)元素,該結(jié)構(gòu)元素的值,可根據(jù)具體圖像的形狀和尺寸來設(shè)定,
E = A (公式 4)
其中的膨脹操作定義如下
勹 / 二 \c |c.· = a + h, c/ e / ,Λ ε /0 (公式 5)其中a表示A中的一個像素,b表示B中的一個像素,c表示該操作后新圖像的一 個像素
4)更新水平集函數(shù),即更新二值圖像A A 二 Eo ((E & V) Θ5)(公式 6)其中的腐蝕操作定義如下A Θ B = {c I c+b e A, b e B} (公式 7)
其中a, b, c的含義同公式5 ;
5)返回步驟3)繼續(xù)操作;
圖像輪廓的提取過程是一迭代過程,通過膨脹與腐蝕操作得到目標(biāo)輪廓,當(dāng)?shù)鷿M足以下兩個條件之一時,停止迭代,圖像輪廓提取結(jié)束
(a)連續(xù)的兩次目標(biāo)輪廓圖像一樣;
(b)迭代次數(shù)達(dá)到設(shè)定的最大值。
針對上述圖像數(shù)據(jù)處理子模塊中的Dilation (J^WMPErosion (腐蝕)二級子模塊,本發(fā)明采用了改進(jìn)結(jié)構(gòu)的電路,該改進(jìn)結(jié)構(gòu)的輸入采用串行數(shù)據(jù)輸入,然后經(jīng)過2XN+2 個移位寄存器,其中N是輸入圖像的列數(shù),再從其中選出特定的9個寄存器作為每次參與計算的模板。每來一個時鐘,移位寄存器移動一位,9個寄存器的數(shù)據(jù)得到更新,產(chǎn)生新的模板參與下一次計算。這樣即可使得只要掃描圖像一遍就能得到整個模板操作的圖像效果。
本發(fā)明的有益的效果是
本發(fā)明針對FPGA的特點,提出了基于形態(tài)水平集的輪廓提取算法,該算法不需進(jìn)行浮點運算且對每個像素采用并行方式進(jìn)行計算;本發(fā)明采用Handel-C語言將上述算法在FPGA上進(jìn)行實現(xiàn),比傳統(tǒng)硬件描述語言快速高效;本發(fā)明的圖像處理子模塊中的 DiIation (膨脹)和Erosion (腐蝕)子模塊,采用改進(jìn)結(jié)構(gòu)的電路,使得只要掃描圖像一遍就能得到整個模板操作的圖像效果,而傳統(tǒng)的處理方式需對圖像掃描9遍。
本發(fā)明所米用的Handel-C語目,是一種起源于IS0/ANS1-C的聞級程序設(shè)計語目, 并加入了一些簡單結(jié)構(gòu)和擴(kuò)展形成的,如包括適合硬件的并行處理,靈活的數(shù)據(jù)位寬操作等等。它的標(biāo)準(zhǔn)是由Celoxica公司提出的,通過該公司開發(fā)的Celoxica DK套件可實現(xiàn)快速硬件設(shè)計和實現(xiàn)復(fù)雜的算法,并且可以方便的使用軟件的庫代碼,甚至可以和VHDL或者 Verilog程序混合編程,通過重用代碼加快設(shè)計速度,使得設(shè)計趨于模塊化。
在實際硬件實現(xiàn)中,通過對基于形態(tài)水平集的輪廓提取算法分析可知,圖像比較復(fù)雜的操作在于Dilation和Erosion操作(即膨脹與腐蝕),需要用到3X3的方形窗口模板,模板上同一行對應(yīng)的像素點在空間上是連續(xù)的,不同行的像素點則存在一定的空間相位。要得到一點的像素值,需要花費9個時鐘來對RAM進(jìn)行讀取9次,然后再進(jìn)行處理,整個計算過程相當(dāng)于對一張圖像讀取9次。該方法嚴(yán)重限制了算法的圖像輪廓提取速度。本發(fā)明所采用的改進(jìn)硬件結(jié)構(gòu),只要掃描圖像一遍,就能得到整個模板操作的圖像效果。
圖1為該輪廓提取算法實現(xiàn)擴(kuò)張過程的硬件實現(xiàn)圖。
圖2為Dilation (膨脹)或Erosion (腐蝕)模塊采用改進(jìn)結(jié)構(gòu)后的硬件實現(xiàn)圖。
圖3為進(jìn)行擴(kuò)張過程前選取的種子點。
圖4為對種子點方框所在的區(qū)域進(jìn)行二值化。
圖5為輸入圖像進(jìn)行二值化后的結(jié)果。
圖6為進(jìn)行擴(kuò)張過程后提取的輪廓結(jié)果。
具體實施方式
下面結(jié)合附圖和實施例對本發(fā)明做進(jìn)一步說明。以下的實施例僅用于說明和解釋本發(fā)明,而不構(gòu)成對本發(fā)明技術(shù)方案的限制。
選用xc6vhx565t-2ffl923型號的FPGA器件,根據(jù)基于形態(tài)水平集的輪廓提取算法,用Handel-C語言對其進(jìn)行描述實現(xiàn),其中的圖像數(shù)據(jù)的處理模塊如圖1所示,該模塊實現(xiàn)了圖像輪廓的擴(kuò)張從而最終提取出圖像的輪廓。
該模塊的算法描述是根據(jù)如下步驟進(jìn)行的
1.選取一張240 X 240分辨率的圖像,觀察被分割圖像,初始化曲線C,令目標(biāo)完全在曲線C外部,如圖3中的種子點方框即為曲線C。在圖像上,對種子點方框進(jìn)行二值化,得到圖像A,如圖4所示。圖像A在圖1中相當(dāng)于Contour (η)。
2.初始化速度演化函數(shù),得到速度演化圖像V,如圖5所示。該速度演化圖像為輸入圖像的二值化結(jié)果。其中二值化閾值可根據(jù)不同圖像進(jìn)行人工設(shè)定。此時的二值化圖像不僅包含目標(biāo)圖像輪廓,還包含圖像輪廓外的其他噪聲輪廓,如圖5上方的白色塊。圖像V 在圖1中相當(dāng)于VImage。
3.對二值圖像A進(jìn)行膨脹操作得到圖像Ε,即£ = j Β,其中B為3X3的結(jié)構(gòu)元素,在此例中定義為
權(quán)利要求
1.一種數(shù)字圖像輪廓提取方法,其特征在于包括以下步驟 .1)觀察被分割圖像,初始化一個長為long個像素,寬為width個像素的曲線,long和width是一個整數(shù),該曲線稱為C,其中l(wèi)ong和width可以根據(jù)被分割圖像來進(jìn)行設(shè)定,設(shè)定的原則為該曲線完全在目標(biāo)圖像內(nèi)部,在圖像上,初始化水平集函數(shù),得到初始化二值圖像A ;所述初始化水平集函數(shù)依據(jù)的公式如下
全文摘要
一種數(shù)字圖像輪廓提取方法,涉及一種數(shù)字圖像處理技術(shù)。1)觀察被分割圖像,初始化曲線;2)初始化速度演化函數(shù),得到速度演化圖像V;3)對步驟1)得到的初始化二值圖像A進(jìn)行膨脹操作,得到圖像E,E是膨脹所得的圖像,B為3×3的結(jié)構(gòu)元素,該結(jié)構(gòu)元素的值;4)更新水平集函數(shù),即更新二值圖像A;5)返回步驟3)繼續(xù)操作。針對FPGA的特點,提出基于形態(tài)水平集的輪廓提取算法,不需浮點運算且對每個像素采用并行方式計算;采用Handel-C語言,比傳統(tǒng)硬件描述語言快速高效;圖像處理子模塊中的Dilation和Erosion子模塊,采用改進(jìn)結(jié)構(gòu)的電路,使得只要掃描圖像一遍就能得到整個模板操作的圖像效果。
文檔編號G06T7/00GK103035010SQ20121057196
公開日2013年4月10日 申請日期2012年12月24日 優(yōu)先權(quán)日2012年12月24日
發(fā)明者周劍揚, 張樹群, 蔡藝軍 申請人:廈門大學(xué)