劉紫燕,祁 佳
(貴州大學 計算機科學與信息學院,貴州 貴陽 550025)
圖像邊緣通常指圖像灰度變化率最大的像素點的總和,邊緣廣泛地分布于物體之間、物體與背景之間[1]。圖像邊緣也是人眼和計算機識別圖像、獲取信息的重要特征來源,因此圖像的邊緣檢測在在航空、軍事、人工智能等需要圖像處理的領域都有著廣泛應用研究[2]。
數學形態(tài)學是以集合論為基礎的學科,是幾何形態(tài)學分析與描述的工具。數學形態(tài)學在計算機視覺、圖像分析、模式識別等方面得到了廣泛的應用。
傳統(tǒng)的實時圖像邊緣檢測大多只使用Sobel算子進行處理得出邊緣[2],基本能滿足實時圖像邊緣的要求,但是仍存在很強的背景噪聲[3]。本文利用FPGA對實時圖像進行邊緣檢測并進行形態(tài)學的優(yōu)化,得到的邊緣清晰,同時很好地抑制了背景噪聲。
Sobel邊緣檢測算子是實時圖像邊緣檢測比較常用的算子,在FPGA上實現(xiàn)簡單,對于噪聲有一定的抑制能力,同時又能取得比較好的邊緣檢測效果。
為了獲得更加精細的邊緣以及更好地抑制背景噪聲,本文利用形態(tài)學的閉運算優(yōu)化邊緣。基于FPGA的實時圖像邊緣檢測形態(tài)學優(yōu)化系統(tǒng)如圖1所示。
圖1 基于FPGA的實時圖像邊緣檢測形態(tài)學優(yōu)化系統(tǒng)框圖
本系統(tǒng)主要設計思想是在實時圖像Sobel邊緣檢測之后,增加邊緣形態(tài)學的處理,采用先進行膨脹運算,再進行腐蝕運算實現(xiàn)對邊緣的形態(tài)學優(yōu)化。
數學形態(tài)學是分析幾何形狀和結構的一種數學方法[4],是以集合代數為基礎,并用集合論的方法來研究幾何結構的學科。數學形態(tài)學的思想是利用具有一定形態(tài)的結構元素度量和提取圖像的對應特征,達到對圖像分析以及識別的目的。結構元素是數學形態(tài)學中最重要、最基本的概念,是在分析圖像時收集圖像信息的探針,在圖像中不斷移動探針就可確定圖像中各部分間的關系,從而提取有用的特征[5]。
常用的形態(tài)學運算有腐蝕、膨脹、開運算和閉運算。
腐蝕(Θ)在數學形態(tài)學運算中作用是消除物體邊界點,膨脹(⊕)作用是把圖像周圍的背景點合并到物體中[5]。
設A為一幅二值圖像,B為結構元素,則膨脹運算定義為[6]:
膨脹運算為集合B首先做關于原點的映射B?,然后平移a形成集合(B?)a,最后計算集合(B?)a與集合A不為空集的結構元素參考點的集合。
設A為一幅二值圖像,B為結構元素,則腐蝕運算定義為:
腐蝕運算為集合B平移a后得到的(B)a仍在集合A中的結構元素參考點的集合。
膨脹擴大圖像,腐蝕收縮圖像。開運算可以平滑圖像輪廓,削弱狹窄部分,去掉細的突出;閉運算也可以平滑圖像的輪廓,它一般融合窄的缺口和細長的彎口,去掉小洞,填補輪廓上的縫隙[6]。設A為一幅二值圖像,B為結構元素,則有如下定義:
其中?表示開運算,·表示閉運算。
本文運用數學形態(tài)學閉運算對檢測出的圖像邊緣進行優(yōu)化。
本文改進算法先對實時圖像進行Sobel邊緣檢測,再將檢測出來的邊緣進行形態(tài)學的優(yōu)化。如圖2所示。
圖2 本文算法框架圖
實時圖像的邊緣檢測必須將采集到的原始圖像轉換為RGB圖像,再將RGB圖像轉換為灰度圖像[6]。用Sobel邊緣檢測算子對圖像進行運算時,先用Sobel算子對圖像像素做卷積運算,再用梯度公式計算圖像梯度[7]。本系統(tǒng)用3條線性緩沖器來實現(xiàn)Sobel算子對圖像的據卷積運算。P1~P9為Sobel算子3×3運算模板中需要處理的像素點灰度值,X1~X9為Sobel算子模板的系數,乘加部分由QuartusII軟件中LPM/Megafunctions宏功能模塊庫的可編程乘加器altmult_add與可編程多路并行加法器parallel_add模塊進行運算[8]。如圖3所示。
圖3 三條線性緩沖器卷積運算示意圖
形態(tài)學運算在FPGA上的具體實現(xiàn)過程與前述的卷積運算過程相似,因此在卷積運算的基礎上得出腐蝕和膨脹的運算流程。本系統(tǒng)用3條線性緩沖器來實現(xiàn)對邊緣檢測后圖像數據的膨脹運算。在Sobel邊緣檢測算子檢測出圖像的邊緣數據后,將邊緣數據送入膨脹運算模塊,P1~P9為膨脹模塊3×3運算模板中需要處理的邊緣數據,如圖4所示。
圖4 膨脹運算的過程示意圖
與腐蝕運算一樣,本系統(tǒng)仍選用3條線性緩沖器來實現(xiàn)對邊膨脹運算后圖像數據的腐蝕運算,將膨脹運算后的數據送入腐蝕運算模塊,經過腐蝕模塊3×3模板運算,最終得到形態(tài)學優(yōu)化的邊緣圖像。
膨脹模塊的核心部分Verilog HDL代碼為:
always@(posedge iCLK or negedge iRST_N)begin
if(!iRST_N)begin
……
end
else begin
oDVAL<=iDVAL;
P9<=Line0;
P8<=X9;
P7<=X8;
P6<=Line1;
P5<=X6;
P4<=X5;
P3<=Line2;
P2<=X3;
P1<=X2;
if(iDVAL)
oDATA<=P9|P8|P7|P6|P5|P4|P3|P2|P1;
else
oDATA<=0;
將P1~P9做OR運算。
腐蝕模塊的核心部分Verilog HDL代碼與膨脹部分的代碼基本相同,只是將像素點相“與”,代碼如下:
if(iDVAL)
oDATA<=P9&P8&P7&P6&P5&P4&P3&
P2&P1;
else
oDATA<=0;
將P1~P9做AND運算。
圖5為采用Sobel算法進行實時邊緣檢測后的圖像,圖6為采用Sobel算法進行邊緣檢測之后,又經形態(tài)學閉運算優(yōu)化的圖像,即改進算法的結果。對比運行結果可以得出,本系統(tǒng)對于實時圖像進行邊緣檢測之后,進行了形態(tài)學閉運算的優(yōu)化,檢測的精度顯著提高,特別是背景噪聲得到很好的抑制。
圖5 Sobel實時邊緣結果
圖6 本文改進算法結果
本文采用Sobel算子實現(xiàn)實時圖像的邊緣檢測,再進行數學形態(tài)學閉運算的優(yōu)化,最后在友晶公司的DE2-70的FPGA平臺上實現(xiàn)。與傳統(tǒng)邊緣檢測相比,本文方法進一步提高了圖像邊緣檢測的精度,同時很好地抑制了背景噪聲。可應用在監(jiān)控、航空等實時性高、計算量大的領域。
[1]高德威,陳天煌,劉朋.蟻群算法在圖像邊緣檢測上的應用研究[J].計算機與數字工程,2009,37(1):131-134.
[2]劉紫燕.實時圖像邊緣檢測的設計及FPGA實現(xiàn)[J].電子科技,2011,24(12)∶1-3,6.
[3]李杰,彭月英,元昌安,等.基于數學形態(tài)學細化算法的圖像邊緣細化[J].計算機應用,2012,32(2)∶514-516,520.
[4]何希平,基于鄰域Mean-Shift的彩色圖像濾波算法[J].計算機應用,2011,31(2)∶386-389.
[5]趙德春,彭承琳,陳園園,等.用形態(tài)學改進醫(yī)學圖像邊緣檢測算法[J].重慶大學學報,2010,33(2)∶123-126.
[6]張廣軍.視覺測量[M].北京∶科學出版社,2008.
[7]谷陸生.基于SOPC的實時邊緣檢測系統(tǒng)的研究[J].電子技術應用,2009,35(8)∶47-48,75.
[8]李明,趙勛杰,毛偉民.Sobel邊緣檢測的FPGA實現(xiàn)[J].現(xiàn)代電子技術,2009,33(16)∶44-46.