張海斌, 朱蘇磊, 徐明亮
(上海師范大學 信息與機電工程學院,上海 200234)
基于可編程邏輯陣列的索貝爾邊緣檢測算法的兩種實現(xiàn)方案
張海斌, 朱蘇磊*, 徐明亮
(上海師范大學 信息與機電工程學院,上海 200234)
基于可編程邏輯陣列(FPGA)的片上可編程及并行流水線具有處理快、實時性等優(yōu)點,采用Quartus II自帶知識產(chǎn)權(quán)(IP)核進行設(shè)計的方案耗資源多,處理速度慢,針對于此提出了改進的索貝爾(Sobel)算子方案,使以上缺點得到改善;結(jié)合Matlab和Modelsim對這兩種方案的仿真和驗證結(jié)果表明,改進后的Sobel算子方案明顯優(yōu)于Quartus II自帶IP核進行設(shè)計的方案,并且能很好地實現(xiàn)圖像邊緣檢測,減少了偏差.
邊緣檢測; 可編程邏輯陣列; 數(shù)字圖像處理
數(shù)字圖像處理就是采用計算機或嵌入式系統(tǒng)對圖像進行深度加工,并從中獲得有用的信息.伴隨著計算機技術(shù)、集成電路技術(shù)的飛速發(fā)展,數(shù)字圖像處理技術(shù)也得到了很大的發(fā)展,并且也出現(xiàn)了許多與數(shù)字圖像處理技術(shù)相關(guān)的新理論、新技術(shù)、新設(shè)備.這些新理論、新技術(shù)在工業(yè)生產(chǎn)、科學研究、醫(yī)療衛(wèi)生等領(lǐng)域得到了廣泛應(yīng)用,對社會的發(fā)展及人類生活水平的提高做出了極大的貢獻[1].
邊緣是圖像的基本特征,是指圖像灰度變化率最大的位置,由圖像像素點數(shù)據(jù)局部的不連續(xù)而形成.邊緣的表現(xiàn)形式有圖像紋理結(jié)構(gòu)的突變及灰度級的突變,彩色變化等等,邊緣檢測利用物體與背景在某些特征上的差異而實現(xiàn).由于實時圖像邊緣檢測算法涉及到的數(shù)據(jù)量大,一般運算器的順序執(zhí)行或者傳統(tǒng)軟件處理實時圖像很難滿足要求.而采用可編程邏輯陣列(FPGA)的流水線和并行處理技術(shù),不僅可以提高數(shù)字圖像的處理速度,也可以在一定程度上滿足實時系統(tǒng)中的應(yīng)用需求.
邊緣檢測算子可以分為一階微分算子和二階微分算子.常見的一階微分算子有Prewitt算子,Canny算子、Sobel算子、Roberts Cross算子,Kirsch算子,羅盤算子等等;二階微分算子包括Laplacian算子以及高斯-拉普拉斯(LOG)算子等等[2].本研究主要介紹了基于FPGA的索貝爾(Sobel)邊緣檢測算法實現(xiàn)的兩種方案,方案一完全采用Quartus II自帶的知識產(chǎn)權(quán)核(IP)核進行實現(xiàn),實現(xiàn)簡單、工程周期短,但占用邏輯資源多,設(shè)計效果不夠理想;方案二針對方案一的缺點進行了改進,改善了系統(tǒng)處理速度,減少了邏輯資源的消耗,在一定程度上改善了設(shè)計效果,優(yōu)化了系統(tǒng)性能.
1.1 Sobel邊緣檢測算子
索貝爾算子(Sobel operator)是數(shù)字圖像處理中的常用算子之一,在圖像邊緣檢測和噪聲濾波中都有運用,它是離散型差分算子,用來提取圖像亮度函數(shù)的梯度近似值.在圖像的任何像素點上運用這一算子,都可以產(chǎn)生對應(yīng)像素點的梯度矢量或是其法矢量[2].
現(xiàn)在假設(shè)圖像數(shù)據(jù)點上有9個像素點:
σ=[(-1,-1),(-1,0),(-1,1),(0,-1),(0,0),(0,1),(1,-1),(1,0),(1,1)].
(1)
現(xiàn)用一個二次曲面z(x,y)來擬合這9個點的灰度值,即用
z(x,y)=ax2+bxy+cy2+dx+ey+g.
(2)
來近似圖像灰度函數(shù)f(x,y),并使均方誤差
(3)
將二次曲面z(x,y)對x,y求偏導數(shù),得到梯度的幅度值[3]:
G(i,j)=[f(i-1,j-1)+2f(i-1,j)+f(i-1,j+1)]-
[f(i+1,j-1)+2f(i+1,j)+f(i+1,j+1)]+
[f(i-1,j-1)+2f(i,j-1)+f(i+1,j-1)]-
[f(i-1,j+1)+2f(i,j+1)+f(i+1,j+1)].
(4)
它的兩個卷積模塊為:
(5)
(6)
1.2 基于FPGA的Sobel算子實現(xiàn)框圖
圖1 Sobel邊緣檢測實現(xiàn)的原理框圖
Sobel邊緣檢測算法的實現(xiàn)主要包括三個模塊,如圖1所示.
圖1中,前兩個模塊主要是實現(xiàn)圖像像素點的梯度值計算,圖像數(shù)據(jù)輸入通過數(shù)據(jù)緩存模塊構(gòu)成3×3矩陣像素陣列,然后再分別計算水平梯度和垂直梯度,然后把兩個方向上的梯度結(jié)合起來,接著通過門限處理模塊,實現(xiàn)判別輸出.假設(shè)輸入的像素值依次為:p11、p12、p13、p21、p22、p31、p32、p33,那么在垂直方向上的梯度和在水平方向上的梯度分別為:
GH=(p13+2p23+p33)-(p11+2p21+p31),
(7)
GV=(p11+2p12+p13)-(p31+2p32+p33).
(8)
梯度結(jié)合后的梯度值G為:
(9)
通常為了提高程序的運行速度都采用如下的公式:
(10)
門限處理模塊之后輸出數(shù)值P22,當設(shè)定的門限值大于G時,輸出為0,當G大于設(shè)定的門限值時輸出為255.綜上分析Sobel算子在理論設(shè)計上容易實現(xiàn),并且具有濾除噪聲的作用,所以適合用在圖像噪聲較多的圖像處理中.
2.1 圖像緩存實現(xiàn)
圖2 altshift_taps內(nèi)部數(shù)據(jù)流
由于Sobel算子理論基于3×3像素塊計算中心像素梯度,構(gòu)造3×3像素矩陣特別重要,要實現(xiàn)這個效果,必須使用一個容量足夠大的存儲單元來緩存串行輸入的圖像數(shù)據(jù)流,并把串行數(shù)據(jù)轉(zhuǎn)化成并行的3行像素值,這樣在3個像素時鐘后就可以得到3×3圖像像素矩陣.過去常使用先入先出(FIFO)作為圖像數(shù)據(jù)的存儲方式,但對FIFO的讀寫操作較為復(fù)雜.而本設(shè)計中主要是調(diào)用了Quartus II軟件自帶的altshift_taps移位寄存器宏模塊.軟件中提供的altshift_taps宏模塊是一個可設(shè)置參數(shù)的并具有多個端口(Taps)輸出的移位寄存器,每一個抽頭在移位寄存器鏈的指定位置上輸出數(shù)據(jù).對于Matlab經(jīng)常應(yīng)用的256×256大小圖像進行Sobel邊緣檢測,altshift_taps模塊配置為8 bit輸入/8 bit輸出、3個抽頭,相鄰兩個抽頭有256個registor(寄存單元).經(jīng)過預(yù)處理的9個圖像灰度像素點進入緩沖區(qū)后數(shù)據(jù)流如,圖2所示.
2.2 卷積計算和門限比較模塊
編寫的卷積計算模塊是為了得到水平的、垂直的兩個方向上的梯度值,要達到卷積運算的效果需要做大量的乘法、加法運算.若是采用以往分立的D觸發(fā)器、加法器和乘法器來完成,可以實現(xiàn)預(yù)期的功能,但其結(jié)構(gòu)復(fù)雜,設(shè)計繁瑣.在本方案中先通過調(diào)用Quartus II開發(fā)工具提供的IP核模塊中的可編程乘加法器altmult_add、可編程多路加法器parallel_add以及開方模塊(altsqrt)來實現(xiàn).其原理如圖3所示.
圖3 卷積計算示意圖
圖3中前面的3個Line就是緩存數(shù)據(jù)模塊,而后面的實現(xiàn)水平梯度和垂直梯度的計算及開方后的結(jié)果再與門限比較,輸出判別后的結(jié)果.
考慮到上述方案調(diào)用IP時,占用FPGA邏輯資源大,在處理數(shù)據(jù)乘、開方時,占用大量CPU資源,提出了改進設(shè)計方案.
3.1 圖像緩沖模塊設(shè)計改進
基于圖2的圖像數(shù)據(jù)緩沖模塊的數(shù)據(jù)流結(jié)構(gòu),構(gòu)想在shift_RAM中存儲2行數(shù)據(jù),同時與當前的輸入行數(shù)據(jù)組成3行的陳列,具體的實現(xiàn)步奏如下:
(1) 首先,將輸入的信號用像素使能時鐘同步一拍,以保證數(shù)據(jù)和宏模塊altshift_taps輸出的數(shù)據(jù)保持同步,主要實現(xiàn)代碼如圖4所示.
圖4 同步宏模塊altshift_taps輸出數(shù)據(jù)代碼
(2) 例化并輸入row3_data,經(jīng)過Modelsim仿真可以觀察到3行數(shù)據(jù)同時存在.
(3) row_data讀取信號的分析及生成數(shù)據(jù)在altshift-taps里存儲消耗一個時鐘,因此3×3陣列陣列讀取使能需要一個時鐘的偏移.
(4) 此時,根據(jù)read_image_clken信號直接讀取3×3像素陣列,最后得到的matrix_p11、matrix_p12、matrix_p13、matrix_p21、matrix_p22、matrix_p23、matrix_p31、matrix_p32、matrix_p33即為得到的3×3像素陣列,主要代碼如圖5所示.
圖5 3×3像素陣列生成代碼
3.2 卷積模塊的實現(xiàn)
在1.2節(jié)中,可以利用(7),(8)式實現(xiàn)Sobel算子算像素點P22處的水平和垂直梯度值計算,在上面構(gòu)成的3×3陳列中可以得到圖像的每一個像素值,所以只要把(7),(8)式用Verilog語言實現(xiàn)就可以了,水平梯度值計算主要代碼如圖6所示.
圖6 水平梯度值計算代碼
這里只分析像素P22在水平上的梯度值,從3×3矩陣模塊中出來的像素值matrix_p11,matrix_p12,matrix_p13,matrix_p21,matrix_p22,matrix_p23,matrix_p31,matrix_p32,matrix_p33都是reg無符號數(shù)型,即分別為P1、P2、P3、…、P9,在計算機內(nèi)部數(shù)字乘以2就是bit位向左移一位,代碼中通過暫存正結(jié)果和負結(jié)果,通過比較這個數(shù)值的大小最終給出水平上的梯度值.垂直上的梯度值同理實現(xiàn).接著另一個進程中實現(xiàn)平方加的結(jié)果,最后再把平方加的結(jié)果送入開方模塊SQRT中,輸出對應(yīng)像素點的估算梯度值,得到的梯度估算值與閥門值比較得出該像素點是否為邊緣像素點.
4.1 兩種方案在Quartus II下的分析對比
兩種方案都是基于altera的CycloneIVE EP4CE10F17C8為目標芯片,在Quartus II下編譯綜合,得出兩種方案的硬件資源使用情況綜合報告及在約定輸入時鐘25 mHz時TimeQuest的時序分析報告如表1、2所示.
表1 IP核設(shè)計資源占用情況
表2 改進后的設(shè)計資源占用情況
從表1、2可以看出方案二明顯比方案一占用資源少,首先,內(nèi)嵌乘法器只占用了9%,這樣數(shù)據(jù)處理大大減少;其次,專用邏輯寄存器和引腳也明顯減少,這樣可以在FPGA上留用更多的資源來處理其他信息;最后在25 mHz時鐘約束下,從TimeQuest的分析時鐘看,方案一最大工作效率為34.19 mHz,方案二可以達到47.78 mHz,這可以看出優(yōu)化后的方案二數(shù)據(jù)處理速度明顯提高,滿足實時性的要求.
4.2 仿真結(jié)果分析
圖7 圖像顯示處理代碼
圖8,9分別為輸入相同圖像數(shù)據(jù)時在Modelsim下兩種方案的Sobel邊緣檢測仿真結(jié)果,門限設(shè)定都為200,從圖8,9中可以看出在clk時鐘的作用下,圖像的各個像素值逐個輸進輸入端口,可以從輸出端口(oDATA、post_img_Bits)看到只有兩種狀態(tài),若該點在邊緣上,則通過系統(tǒng)后該點值變?yōu)?xff,若不在邊緣則變?yōu)?x00.兩種方案可以實現(xiàn)對圖像的邊緣檢測.
圖8 方案一仿真結(jié)果
圖9 方案二仿真結(jié)果
圖10是設(shè)定閾值為200時兩種方案對圖像邊緣提取后的結(jié)果對比,從圖10中可以看出方案二的處理效果明顯比方案一好,進一步說明改進后的方案優(yōu)于采用IP核的方案;處理后的圖片邊沿明顯出現(xiàn)了誤判,這是沒有對邊沿像素點采取處理的結(jié)果,在實際工程中可以對圖像邊沿采取重疊復(fù)制、忽略處理等方法.
圖10 Matlab重構(gòu)處理后的結(jié)果
本文作者基于FPGA采用兩種設(shè)計方案對Sobel邊緣檢測進行了實現(xiàn)并仿真分析,首先方案一中完全采用Quartus II自帶的IP核設(shè)計各個模塊,實現(xiàn)圖像各個像素值卷積實現(xiàn)圖像邊緣檢測,針對方案一占用FPGA邏輯資源多,處理圖像數(shù)據(jù)慢等特點,設(shè)計了另一種設(shè)計方案,一方面,針對數(shù)據(jù)的左移一位(乘2)的思想很好地實現(xiàn)了數(shù)據(jù)點的水平和垂直梯度的提取,這樣大大減少了FPGA內(nèi)嵌乘法器的使用,也減少了結(jié)果誤差的舍入;另一方面,為了構(gòu)建3×3的圖像矩陣,就需要構(gòu)建圖像數(shù)據(jù)緩沖模塊,方案一中采用的圖像數(shù)據(jù)緩沖模塊完全采用3個taps的數(shù)據(jù)緩沖模塊,每個taps的深度均為圖片行的像素點,這樣FPGA的邏輯資源很大程度上就被浪費了,影響FPGA的性能.為了改善這種狀況,方案二只調(diào)用了2個taps的數(shù)據(jù)緩沖模塊,并結(jié)合輸入的數(shù)據(jù)端口利用FIFO的思想構(gòu)成3×3矩陣,很好地改善了方案一中的占用邏輯資源較大的情況.綜合對比兩種方案,改善后的方案明顯比方案一效果好,消耗資源少,耗時少,并且處理效果較好,完全滿足實時圖像處理的要求.
[1] Fang H R.The application of FPGA in image edge detection [J].Information and Communication,2015(1):9-11.
[2] Yan L,Lei B,Ding W,et al.Based on local adaptive thresholds edge detection of color image color difference [J].Journal of Electronics and Information,2012,34(9):2058-2063.
[3] Liao C Z.A Sobel edge-detection algorithm based on FPGA and emulation [J].Journal of Yangtze University,2015,12 (7):37-40.
[4] Pan M,Chen Y,Li Q.Design of image sampling system based on FPGA [J].Research and Development,2012,31 (3):58-61.
[5] Ruan Q Q,Ruan Y Z.Image processing [M].Beijing:Publishing House of Electronics Industry,2014.
[6] Xia Y W.Verilog course in digital systems design [M].Beijing:Beihang University Press,2008.
[7] Zhang Z Y.The master of Matlab [M].Beijing:Beihang University Press,2011.
[8] Zhang Y J.Design and algorithm realization of FPGA-based image processing systems[D].Chongqing:Chongqing University,2006.
[9] Wu Y.Basic algorithms of digital image processing based on FPGA design and implementation [D].Harbin:Harbin Institute of Technology,2008.
(責任編輯:包震宇)
Two kinds of implementations of sobel edge detection algorithmbased on field programmable gate array
Zhang Haibin, Zhu Sulei*, Xu Mingliang
(College of Information,Mechanical and Electrical Engineering,Shanghai Normal University,Shanghai 200234,China)
In this paper,two kinds of edge detection scheme based on Field Programmable Gate Array(FPGA) are realized and analyzed by using the Sobel operator.In view of the design which utilizes the intellectual property(IP) cores embedded in the Quartus II has some disadvantages such as more resources are consumed、process is relatively slow and so on,an improved scheme which improves the first design′s shortcomings is proposed.Simulation and verification results of these two schemes which are combined with Matlab and Modelsim show that the improved Sobel operator scheme is better than the previous scheme designed by using IP cores embedded in the Quartus II,achieving a good image detection and reducing errors.
edge detection; field programmable gate array; digital image processing
2015-11-10
上海師范大學樣級科研項目(SK201410)
張海斌(1989-),男,碩士研究生,主要從事圖像處理及模式識別方面的研究.E-mail:838026281@qq.com
導師簡介: 朱蘇磊(1975-),女,副教授,主要從事圖像處理及嵌入式方面的研究.E-mail:suleizhu@163.com
TN 911.73
A
1000-5137(2017)02-0247-07
*通信作者