張梅, 王濤
(江蘇自動化研究所 計算機事業(yè)部, 連云港 222006)
?
一種工業(yè)惡劣環(huán)境下的圖像二值化方法及FPGA實現(xiàn)
張梅, 王濤
(江蘇自動化研究所 計算機事業(yè)部, 連云港 222006)
針對工業(yè)惡劣環(huán)境情況,在研究Canny算法的基礎(chǔ)上,對其進行了中值濾波改進。根據(jù)改進的Canny 算子邊緣信息,將最佳全局閾值法與局部閾值自適應(yīng)法在邊緣信息的基礎(chǔ)上融合起來,對圖像進行了二值化處理,討論了算法的FPGA實現(xiàn)方法。實驗表明此算法在二值化圖像時具有良好的效果,能較好的保留圖像的邊緣信息。
圖像二值化; 惡劣環(huán)境; Canny; FPGA
圖像二值化在目標識別、圖像分析及OCR等圖像處理中有著非常重要的作用。圖像二值化方法的關(guān)鍵是閾值的選取,目前,閾值的選取方法可分為全局閾值法、局部閾值法及動態(tài)閾值法[1]。
通常來說,全局閾值法對直方圖為雙峰、質(zhì)量較好的圖像有效,但對于低對比度和光照不均勻的圖像二值化效果不佳,因而應(yīng)用范圍有限。局部閾值法則能夠適應(yīng)較為復(fù)雜的情況,比全局閾值法有更為廣泛的應(yīng)用。但它往往忽略了圖像的邊界特征信息,使得原圖像中的一些不同區(qū)域在二值化后變成了一塊大區(qū)域,造成二值化結(jié)果圖像某些重要信息的丟失。動態(tài)閾值法充分考慮了像元的鄰域特征,能夠根據(jù)圖像的不同背景情況自適應(yīng)地改變閾值,可較精確地提取出二值圖像,但它過渡地夸大了像元的鄰域灰度的變化,會把不均勻灰度分布的背景分割到目標中去,帶來許多不應(yīng)出現(xiàn)的假目標[1]。
在工業(yè)惡劣環(huán)境下,由于采集的圖像都存在著一定程度的噪聲干擾而且圖像呈低對比度的特點,利用普通的閾值方法進行二值化對工業(yè)環(huán)境下采集的圖像進行二值化往往會帶來目標細節(jié)上的缺失,給后續(xù)的分析帶來了一定的困難。鑒于此,本文提出了一種利用邊緣特征的自適應(yīng)二值化方法。
對圖像二值化等預(yù)處理,它的特點是處理數(shù)據(jù)量大,如果用一般的軟件來實現(xiàn)必然會比較慢,實時性差。針對以上特點,利用FPGA,并結(jié)合verilog HDL類C語言編程靈活的特點,可以方便地實現(xiàn)系統(tǒng)級設(shè)計,大大提高圖像二值化效率。
常用的幾種用于邊緣檢測的算子有Roberts,Sobel,Prewitt,LoG和Laplacian等。這些算子的主要缺點是對噪聲敏感,而工業(yè)惡劣環(huán)境中噪聲是難以避免的。
Canny邊緣提取方法是由John Canny在1986年首先提出的,之后迅速成為邊緣提取的一種重要方法。Canny算子充分反映了最優(yōu)邊緣檢測器的數(shù)學(xué)特性,是對信噪比與定位能力的最優(yōu)化逼近算子,廣泛應(yīng)用于圖像處理和模式識別問題中[2]。
1.1 Canny算法介紹
Canny算法的實現(xiàn)主要有四個步驟:
(1) 用2D高斯濾波模板進行卷積運算以消除噪聲;
高斯函數(shù)可表達為式(1)。
(1)
(2) 計算梯度的大小和方向
Canny算法采用2×2鄰域一階偏導(dǎo)的有限差分來計算濾波后的數(shù)據(jù)陣列I(x,y)的梯度大小和梯度方向。
(3) 非極大值抑制
沿幅角方向檢測模值的極大值點,即邊緣點,遍歷8個方向圖像像素,把每個像素偏導(dǎo)值與相鄰像素的模值比較,取其最大值為邊緣點,置像素灰度值為0。
(4) 雙閾值檢測
由于單閾值處理時,合適的閾值選擇較困難,常常需要采用反復(fù)試驗,因此采用雙閾值檢測算法。對經(jīng)過非極大值抑制后的圖像作用兩個高低閾值:高閾值TH1和低閾值TL2(一般取TH1=0.4×TL2),兩個閾值作用后得到兩個圖像1、2,較大閾值檢測出的圖像1去除了大部分噪聲,但是也損失了有用的邊緣信息。較小閾值檢測得到的圖像2則保留著較多的邊緣信息,以此為基礎(chǔ),補充圖像1中的丟失的信息,連接圖像邊緣。
1.2 Canny算法的改進
Canny算法采用高斯濾波器以消除噪聲,然而高斯濾波器一方面會造成原圖像的過度光滑,另一方面會造成緩變邊緣容易丟失,這樣會導(dǎo)致復(fù)雜圖像的弱邊緣檢測產(chǎn)生丟失現(xiàn)象。而中值濾波器可以克服高斯濾波器給圖像帶來的模糊,對多種噪聲都有著很好的適應(yīng)性,并且有一定的邊緣保持能力[3]。中值濾波就是用一個含有奇數(shù)點的滑動窗口,將窗口正中點的值用窗口內(nèi)各點的中值代替。
1.3 自適應(yīng)閾值的二值化算法
自適應(yīng)閾值的二值化算法結(jié)合了全局閾值法和局部閾值方法。
全局閾值方法主要有:P-tile方法、大津法[5]等等。大津法(OTSU)是一種確定圖像二值化分割閾值的算法,由日本學(xué)者大津于1979年提出。從大津法的原理上來講,該方法又稱作最大類間方差法。其基本原理可表述為:
對于圖像I(x,y),前景(即目標)和背景的分割閾值記作T,屬于前景的像素點數(shù)占整幅圖像的比例記為ω0,其平均灰度μ0;背景像素點數(shù)占整幅圖像的比例為ω1,其平均灰度為μ1。圖像的總平均灰度記為μ,類間方差記為g。
假設(shè)圖像的大小為M×N,圖像中像素的灰度值小于閾值T的像素個數(shù)記作N0,像素灰度大于閾值T的像素個數(shù)記作N1,則有式(2)~式(8)。
(2)
(3)
N0+N1=M+N
(4)
ω0+ω1=1
(5)
μ=ω0*μ0+ω1*μ1
(6)
g=ω0(μ0-μ)2+ω1(μ1-μ)2
(7)
g=ω0ω1(μ0-μ1)2
(8)
采用遍歷的方法得到使類間方差g最大的閾值T,此灰度值就作為圖像二值化處理的閾值。
局部閾值方法主要有鄰域均值法。若考慮到二值圖像掃描中目標邊緣的灰度值總是小于其局部背景的灰度值(鄰域灰度的變化特征),則可以采用類似于Musavi的局部自適應(yīng)二值化方法。該方法利用各象素的n×n鄰域(n為奇數(shù),為減少運算量,一般取n=3或5),對該象素的鄰域灰度進行統(tǒng)計
T=M+a×s
其中,a為0~1之間的常數(shù),由圖像的質(zhì)量確定(當圖像質(zhì)量較好時,a取較小的值);M為某一象素鄰域內(nèi)各象素的灰度平均值;S為該鄰域內(nèi)象素灰度的標準差。T為考慮鄰域的局部自適應(yīng)閾值,該值用來對局部圖像進行二值化處理。
自適應(yīng)閾值的二值化算法的基本思路是:先用改進的Canny算法檢測獲得圖像的邊緣特征,然后根據(jù)邊緣像素點的空間位置關(guān)系,實現(xiàn)不同像素點的二值化處理。如果圖像點是非邊界像素點,則用大津法確定出最佳全局閾值進行二值化處理,如果圖像點是邊界像素點,則采用局部閾值法(Musavi)來確定閾值。
采用FPGA實現(xiàn)自適應(yīng)閾值二值化方法的基本流程,如圖1所示。
圖1 3×3窗口模板原理框圖
圖1中改進的Canny算法中包含了中值濾波計算、梯度大小和方向、非極大值計算及雙閾值檢測等。
2.1 中值濾波
中值濾波硬件實現(xiàn)主要完成兩個模塊的設(shè)計:窗口模塊和排序模塊。本文選用了3×3窗口,原理圖如圖1所示。
FIFO緩沖器和寄存器分別用來產(chǎn)生行延時和列延時,其中FIFO由FPGA中的RAM模塊例化實現(xiàn),其深度對應(yīng)于圖像的列數(shù)。圖2中P1.1-P1.3、P2.1-P2.3及P3.1-P3.3對應(yīng)于窗口中的9個數(shù)據(jù),可采用三級比較法得到相應(yīng)的中值。三級比較法原理如下:
首先通過第一級比較器獲取各組最大值、中值、最小值并分別送到第二級的3個比較器中,經(jīng)過再次比較后將獲取的各組的中值送到第三級比較器,然后比較得出中值。三級比較可并行運行實現(xiàn)對圖像所有像素的中值運算[3]。
2.2 梯度大小和方向計算
經(jīng)過中值濾波的數(shù)據(jù)再通過一個2×2的模板形成一個2×2的鄰域窗口,按照下式即可求出梯度大小,如式(9)~(11)
(11)
其中py[i,j]、px[i,j]分別表示像素點x和y方向偏導(dǎo)數(shù),M[i,j]表示像素點梯度大小。
傳統(tǒng)的梯度方向計算是通過反正切而得出的,這種計算雖然精確但計算非常復(fù)雜,不利于實時處理。由于在非極大值抑制時,無需知道具體指向那個方向,只需要知道法向方向,于是可以通過比較px和py的正負及兩者大小即可近似估計梯度的方向。
2.3 非極大值抑制與邊緣檢測
本文使用將強弱邊緣檢測同時進行,并且在邊緣檢測之前形成窗口,這樣避免了后續(xù)考慮同步的問題,節(jié)省了存儲單元。關(guān)于閾值選取,本文采用了基于統(tǒng)計梯度直方圖的方法[4],當有梯度值輸入時,RAM中相應(yīng)的地址內(nèi)容被讀出來,加1后再存入該地址。如此進行下去,直到整幅圖像掃描完畢,得到梯度的直方圖。按照地址從小到大的順序依次累加RAM中的值,當累加和不小于圖像總像素的80%時,輸出對應(yīng)的地址,即為Th,而Tl則由Th右移一位近似得到。
獲取圖像邊緣數(shù)據(jù)后,就可以利用Musavi算法獲取局部閾值。Musavi算法可以簡化成求取中心點像素的3×3窗口的均值灰度。
2.4 大津法
σ2(T)=a*(An-a)*(u-v)2
(12)
由上可知,進行類間方差計算時涉及兩個除法運算,由于硬件進行浮點除法時資源消耗較大,精度有限,有必要將其轉(zhuǎn)化為定點乘法的運算。其變換過程如式(13)。
σ2(T)=(An*b-a*Bn)2/(a*(An-a))
(13)
f=A*(An-A)*(An*bj-aj*Bn)2
(14)
n=aj*(An-aj)*(An*B-A*Bn)
(15)
1) 接收圖像數(shù)據(jù),以統(tǒng)計灰度直方圖,同時計算統(tǒng)計量An、Bn;
2) 計算灰度級為i(0≤i≤255)時的統(tǒng)計量f、n;
3) 記錄f 在此算法中,將實數(shù)運算轉(zhuǎn)換為整數(shù)運算,提高了系統(tǒng)工作頻率,而且避免了除法結(jié)果的舍入精度問題。 在工業(yè)環(huán)境下采集的圖片,如圖2所示。 圖2 未經(jīng)處理的圖 大津法結(jié)果圖,如圖3、圖4和圖5、圖6所示。 圖3 大津法二值化圖像 圖4 本文方法獲取的圖像 本文算法結(jié)果圖和局部閾值化方法結(jié)果圖、硬件實現(xiàn)結(jié)果圖。通過對比發(fā)現(xiàn),本文算法較好的獲取了二值化圖像,而且保留了較多的邊緣信息。本文通過結(jié)合邊緣特征產(chǎn)生了二值化圖像,而且結(jié)合硬件特點分析了硬件實現(xiàn)方法,結(jié)果表明算法具有明顯的效果。 圖5 局部閾值方法獲取的圖像 圖6 硬件實現(xiàn)結(jié)果圖 本文二值化方法充分結(jié)合了Canny算子在邊緣檢測的優(yōu)勢,將全局閾值化與局部閾值化進行綜合優(yōu)化,同時針對圖像特點對Canny算子進行了中值濾波改造,有效保留了圖像的邊緣信息。在算法的FPGA實現(xiàn)方面,本文結(jié)合硬件實現(xiàn)的特點探討了硬件實現(xiàn)的方法并生成了硬件處理的圖像。本文算法對低對比度圖像二值化有著較為明顯的效果,但對于高速實時圖像處理方面還需要進一步探討更為簡化的硬件處理方法。 [1] 陳強,朱立新. 結(jié)合Canny算子的圖像二值化[J].計算機輔助設(shè)計與圖形學(xué)學(xué)報,2005,17(6):302-306. [2]JohnCanny.AComputationalApproachtoEdgeDetection[J].IEEETransactionsonPatternAnalysisandMachineIntelligence,1986,8(6):679-698. [3] 張素文,陳志星.Canny邊緣檢測算法的改進及FPGA實現(xiàn)[J].紅外技術(shù),2010,2:85-89. [4] 馮柳,高曉蓉.Canny算法的改進及FPGA實現(xiàn)[J].電子技術(shù)應(yīng)用,2008,44:34-36. [5] 李俊豐,竇勇. 圖像二值化中閾值計算優(yōu)化與FPGA實現(xiàn)[J]. 計算機科學(xué). 2006,33(7):461-465. Research on Image Binarization in Industrial Harsh Environment and Implementation on FPGA Zhang Mei, Wang Tao (Computer Division, Jiangsu Automation Research Institute, Lianyungang 222006, China) As to the industrial harsh environment, the paper firstly described the Canny algorithm and median filter improvement. Then, based on the edge information of improved Canny algorithm, authors carried out image binarizing process which combined the optimal global threshold and local adaptive threshold. At last, the FPGA implementation principles were discussed. The results showed that the method was available to binarize images and get image edge information in high quality. Image binarization; Harsh environment; Canny algorithm; FPGA 張梅(1984-),女,萊西人,研究方向:加固計算機研制工作。 王濤(1984-),男,滕州,研究方向:加固計算機研制及其程序化應(yīng)用研究。 1007-757X(2017)07-0069-04 TM46 B 2016.12.19)3 實驗結(jié)果與分析
4 總結(jié)