朱 楓,陳躍東,陳孟元
(安徽工程大學(xué)電氣傳動與控制重點實驗室,安徽蕪湖 241000)
基于FPGA的Kirsch算法實時圖像處理研究
朱 楓,陳躍東?,陳孟元
(安徽工程大學(xué)電氣傳動與控制重點實驗室,安徽蕪湖 241000)
隨著圖像數(shù)據(jù)量愈發(fā)龐大,相較于傳統(tǒng)圖像處理方法采用FPGA進行圖像處理更具有明顯優(yōu)勢.Kirsch算法具有檢測邊緣信息多、抗噪效果較好等優(yōu)點.設(shè)計選用FPGA來實現(xiàn)Kirsch算法,同時將處理后的圖像再次結(jié)合形態(tài)學(xué)處理.結(jié)果表明,本設(shè)計能夠更好地提取邊緣信息、增強抗噪聲能力,而且實時性較好,具有較高的實用價值.
FPGA;實時性;Kirsch算法;邊緣檢測;形態(tài)學(xué)
邊緣是圖像的一項基本特征,圖像邊緣處理是圖像處理的重要組成部分.其中,圖像邊緣檢測被應(yīng)用于諸多領(lǐng)域,如圖像分割、模式識別等.常用的邊緣檢測方法有Robert算子、Prewitt算子、Sobel算子、Laplace算子、Canny算子、LOG算子等[1].近年來,隨著數(shù)學(xué)理論的豐富和人工智能技術(shù)的發(fā)展,涌現(xiàn)出許多更先進的邊緣檢測處理方法,如基于小波變換的數(shù)學(xué)形態(tài)學(xué)[2]邊緣檢測法、基于神經(jīng)網(wǎng)絡(luò)的自適應(yīng)閾值[3]調(diào)整的邊緣檢測法等.
研究分析了Kirsch[4-5]算法處理邊緣的原理和特點,同時結(jié)合形態(tài)學(xué)[6]閉操作處理,使得抗噪聲能力增強的同時,增強邊緣的明朗程度,從而保證較高的邊緣質(zhì)量.隨著圖像分辨率等的提高,圖像信息的數(shù)據(jù)量也越來越大,結(jié)合FPGA的高速并行處理特性[7],FPGA越來越適用于圖像處理方面[8],將算法在FPGA上實現(xiàn),能夠較好地實現(xiàn)處理算法的實時性[9-10],具有較好的應(yīng)用價值.
R.Kirsch提出了Kirsch算子,用來檢測邊緣方向:采用8個模板確定梯度幅度值以及梯度方向.Kirsch算子梯度模板如圖1所示,其中M1~M8為8個梯度模板.由圖1可知,每個模板的方向相差45°, 8個模板完全將360°劃分完全,模板的完整性保證了邊緣檢測信息的最大完整,從而檢測效果更好.
設(shè)A為圖像數(shù)據(jù),A(x,y)為圖像數(shù)據(jù)在(x,y)處的數(shù)值,圖像數(shù)據(jù)3?3模板[11-12]如圖1中M9所示.令Mn(i,j)為第n個梯度模板在(i,j)處的值.Kirsch算法采用圖像和模板卷積來確定(x,y)點的梯度值和梯度方向,令Kn(x,y)為圖像數(shù)據(jù)A(x,y)經(jīng)過模板卷積后的數(shù)值.可知,
式中,D為3?3的區(qū)域范圍.i取值范圍為-1,0,1;j取值范圍為-1,0,1;x取值范圍為1,2,…,G;y的取值范圍為1,2,…,Q.G和Q分別為圖像的行和列.結(jié)合圖像數(shù)據(jù)模板和梯度模板,可得出以下計算公式:由上式求出8個模板的梯度最大值為Kmax(x,y),Kmax(x,y)的定義為:
Kmax(x,y)=max{K1(x,y),K2(x,y),K3(x,y),K4(x,y),K5(x,y),K6(x,y),K7(x,y), K8(x,y)}
將計算得到的Kmax(x,y)與設(shè)定好的閾值T進行比較,如果Kmax(x,y)>T,則定義A 5(x 5,y 5)點是邊緣點.
Kirsch算法的實現(xiàn)框圖如圖2所示.其中,灰度圖像數(shù)據(jù)通過移位寄存器轉(zhuǎn)換為3?3的數(shù)據(jù)模塊,數(shù)據(jù)模塊與8個梯度模板分別卷積,卷積后的值相互比較,這樣得出Kmax(x,y),再與閾值T比較大小.如果是邊緣點,還可通過根據(jù)哪個梯度模板卷積為Kmax(x,y)來確定邊緣梯度方向.
2.1 系統(tǒng)結(jié)構(gòu)
Kirsch算法從8個方向計算梯度,然后再對邊緣圖像進行形態(tài)學(xué)處理.實現(xiàn)改進的邊緣檢測算法的計算量是很龐大的,低分辨率圖像的實時處理比較容易,對于高分辨率的圖像實時處理,常用運算器的順序執(zhí)行較難滿足實時性的要求.FPGA的高速并行性具有高速處理數(shù)據(jù)的能力,而且根據(jù)Kirsch算法所涉及的運算結(jié)構(gòu)相對規(guī)律,利用FPGA并行信息處理的優(yōu)勢以及采用流水線數(shù)據(jù)處理技術(shù),能夠較好地實現(xiàn)實時性.
選用的FPGA芯片是ALTERA系列的EP4CE10E22C8N,在FPGA內(nèi)實現(xiàn)Kirsch算法,系統(tǒng)結(jié)構(gòu)框圖如圖2所示.
系統(tǒng)采用的攝像頭為CMOS攝像頭,攝像頭分辨率設(shè)置為640?480分辨率,幀數(shù)為50fps.圖像數(shù)據(jù)的存儲與讀取用SDRAM來實現(xiàn),SDRAM可以有效地緩存數(shù)據(jù)[13-14]從而實現(xiàn)實時性.CMOS攝像頭驅(qū)動、圖像數(shù)據(jù)存儲與讀取、Kirsch算法實現(xiàn)和形態(tài)學(xué)處理均由FPGA實現(xiàn).圖像輸出是上位機輸出.
2.2 Kirsch算法實現(xiàn)
Kirsch算法的FPGA硬件結(jié)構(gòu)圖如圖3所示,所得圖像數(shù)據(jù)需要轉(zhuǎn)換為3?3窗口從而進行梯度運算.3?3圖像數(shù)據(jù)由移位寄存器構(gòu)成,設(shè)計選擇的分辨率為640?480的256級灰度圖像,所以移位寄存器的存儲數(shù)據(jù)延遲均為640像素,即640字節(jié).移位寄存器先存儲2行數(shù)據(jù),再與輸入的圖像數(shù)據(jù)構(gòu)成3行數(shù)據(jù).圖3中的line buffer代表3行數(shù)據(jù),其中l(wèi)ine buffer0和line buffer1存儲圖像第1、2行數(shù)據(jù),line buffer2存儲當前輸入的圖像數(shù)據(jù),D1~D9分別為對應(yīng)行的數(shù)據(jù),繼而形成3?3圖像數(shù)據(jù)窗口.3?3數(shù)據(jù)窗口與Kirsch算子的8個梯度進行卷積運算,運算結(jié)果產(chǎn)生最大值,最后與選定的閾值比較,比較結(jié)果即為輸出邊緣.
2.3 形態(tài)學(xué)處理
集合論是數(shù)學(xué)形態(tài)學(xué)語言,為大量的圖像處理問題提供了一種有效的方法.最基本的形態(tài)學(xué)運算有腐蝕、膨脹、開和閉[15-16].設(shè)計運用形態(tài)學(xué)閉操作對邊緣圖像進行處理,閉操作記為腐蝕-膨脹運算.設(shè)A為圖像數(shù)據(jù),用結(jié)構(gòu)元素B對圖像A進行腐蝕運算記為AΘB,定義如下,腐蝕算法能夠濾除圖像中的噪聲,提高抗噪性.
(AΘB)(x,y)=min{A(x+x′,y+y′)|(x′,y′)∈DB},DB是B的定義域.
與腐蝕算法對應(yīng)的是膨脹算法.用結(jié)構(gòu)元素B對圖像A進行膨脹運算記為A⊕B,定義如下,膨脹算法可以加深圖像,使區(qū)域圖像更加明朗.
(A⊕B)(x,y)=max{A(x-x′,y-y′)|(x′,y′)∈DB},DB是B的定義域.
圖像處理應(yīng)用中,可以通過各種組合形式來使用膨脹和腐蝕運算.A被B形態(tài)學(xué)閉運算記為A·B,是先膨脹再腐蝕.形態(tài)學(xué)閉運算可用于平滑對象的輪廓.運算結(jié)果為A·B=(A⊕B)ΘB.
本次形態(tài)學(xué)閉操作是對Kirsch算法運算后的邊緣圖像進行處理.腐蝕運算可以較為有效地濾除噪聲,而之后的膨脹運算可以加深邊緣效果.
形態(tài)學(xué)閉操作結(jié)構(gòu)圖如圖4所示.經(jīng)過Kirsch運算的邊緣圖像窗數(shù)據(jù)設(shè)為Z 1~Z 9,經(jīng)過腐蝕算子卷積運算,腐蝕運算后的數(shù)據(jù)設(shè)為E 1~E 9,再次經(jīng)過膨脹算子運算,最后輸出的圖像數(shù)據(jù)即為形態(tài)學(xué)處理圖像.設(shè)計中的3?3數(shù)據(jù)窗實現(xiàn)和Kirsch算子中的實現(xiàn)方式相同,設(shè)計中采用的腐蝕算子和膨脹算子如圖5所示.腐蝕算法為與運算,膨脹算法為或運算.由圖5可知,腐蝕運算為Z=Z 2&Z 4&Z 5&Z 6&Z 8;膨脹運算為E=E 1|E 2|E 3|E 4|E 5|E 6|E 7|E 8|E 9.
在FPGA上實現(xiàn)Kirsch算法(閾值設(shè)定為55),采用CMOS攝像頭,分辨率為640?480,幀數(shù)為50fps.調(diào)試驗證如圖6所示.調(diào)試驗證直接實時采集頭像進行處理,可見Kirsch算法在FPGA上調(diào)試成功,并且能實時顯示.
對整個圖像處理系統(tǒng)進行更為詳細地驗證,灰度源圖像和Kirsch算法處理圖像如圖7所示.圖7a為攝像頭采集的源灰度圖像,圖7b為Kirsch算法處理后的邊緣圖像.形態(tài)學(xué)處理圖像如圖8所示.其中,圖8a為腐蝕算法處理后圖像,圖8b為膨脹算法處理后圖像.結(jié)合圖7、圖8的結(jié)果表明,設(shè)計采用FPGA實現(xiàn)Kirsch算法取得較好的結(jié)果.FPGA本身的并行處理能力使得算法處理更快.設(shè)計采用FPGA實現(xiàn)邊緣算法,每秒可以達到50 fps,基本實現(xiàn)Kirsch算法的實時處理.
采用形態(tài)學(xué)閉操作處理Kirsch算法處理后的邊緣圖像,加強整個系統(tǒng)抗噪能力并使邊緣更加明朗.將Kirsch算法用FPGA實現(xiàn),利用FPGA并行處理的優(yōu)勢,極大地提高了算法處理的速度.實驗結(jié)果顯示,采用FPGA實現(xiàn)Kirsch圖像處理算法,效率高、實時性好,且靈活性強.
[1] 米曾真,謝志江,陳濤,等.重軌圖像增強與邊緣提取的關(guān)鍵技術(shù)廠[J].光學(xué)精密工程,2012,20(7):1 645-1 652.
[2] 周寧寧,趙正旭,翁素文.圖像的中介邊緣檢測方法[J].中國圖形圖像學(xué)報,2010,15(3):397-402.
[3] 周籮魚,張葆,楊楊.自適應(yīng)閾值的超變分正則化圖像盲復(fù)原[J].光學(xué)精密工程,2012,20(12):2 755-2 767.
[4] Kirsch R.Computer detection of the constituent structure of biological image[J].Computers and Biomedical Research,1971,4(3):315-328.
[5] 康牧,王寶樹.自適應(yīng)Kirsch邊緣檢測算法[J].華中科技人學(xué)學(xué)報:自然科學(xué)版,2009,4(37):47-50.
[6] 徐毅,鄧廷權(quán).基于路徑形態(tài)學(xué)的圖像邊緣連接方法[J].計算機工程與應(yīng)用,2014,50(7):180-185.
[7] 寧賽男,朱明,孫宏海,等.一種改進的Sobel自適應(yīng)邊緣檢測的FPGA實現(xiàn)[J].液晶與顯示,2014,29(3):395-402.
[8] 焦淑紅,關(guān)晨輝.實時視頻信號的Sobel邊緣檢測的FPGA實現(xiàn)[J].電子科技,2014,27(9):62-64.
[9] 陳倫海,黃君凱,楊帆,等.基于FPGA的實時邊緣檢測系統(tǒng)[J].液晶與顯示,2011,26(2):200-204.
[10]譚會生.Laplacian圖像邊緣檢測器的FPGA實現(xiàn)研究[J].電子設(shè)計工程,2009(3):45-47.
[11]李杏華,劉寧,張晶.基于FPGA的圖像實時處理系統(tǒng)的設(shè)計[J].半導(dǎo)體光電,2014,35(3):563-566.
[12]胡越黎,計慧杰,吳頻,等.圖像的中值濾波算法及其FPGA實現(xiàn)[J].計算機測量與控制,2008,16(11):1 672-1 675.
[13]黃叢,孟升衛(wèi),付平.基于SDRAM的海量FIFO設(shè)計[J].儀器儀表學(xué)報,2009,30(6):349-352.
[14]林志煌,解梅.一種簡易SDRAM控制器的設(shè)計方法[J].現(xiàn)代電子技術(shù),2008,31(16):81-91.
[15]劉煒,劉宏昭.形態(tài)學(xué)方法檢測與定位石油管道泄漏[J].控制土程,2014,21(5):744-747,752.
[16]韋皞,張光鋒,婁國偉.基于分水嶺和形態(tài)學(xué)的圖像特征提取方法[J].探側(cè)與控制學(xué)報,2014,36(1):63-66,70.
Research on Kirsch algorithm for real-time image processing based on FPGA
ZHU Feng,CHEN Yue-dong?,CHEN Meng-yuan
(Anhui Key Laboratory of Electric Drive and Control,Anhui Polytechnic University,Wuhu 241000,China)
With the increasingly huge amount of image data,the effect of using FPGA for real-time image processing is more obvious than conventional approach.Kirsch algorithm has the following advantages:more edge detection information,better anti-noise capability,etc.Therefore,FPGA is chosen to realize Kirsch algorithm and then the processed image would be reprocessed by using morphology.Finally, a conclusion is reached that the design is better to extract the edge information,enhance the ability to eliminate noise,and has good real-time performance and high practical value.
FPGA;real-time;Kirsch algorithm;edge detection;morphology
TP752.1;TN911.73
A
1672-2477(2015)04-0049-05
2014-12-17
朱 楓(1990-),男,安徽合肥人,碩士研究生.
陳躍東(1956-),男,湖北宜昌人,教授,碩導(dǎo).