張鵬帆,席劍輝,朱琳琳
(沈陽航空航天大學(xué) 自動化學(xué)院,沈陽 110136)
作為圖像處理的關(guān)鍵技術(shù)之一的邊緣檢測技術(shù)可以準(zhǔn)確提取圖像中灰度值突變的區(qū)域。主要作用是剔除圖像無關(guān)信息,保留圖像的主要結(jié)構(gòu)屬性,從而加快計算機(jī)處理圖像信息的速度。邊緣檢測在工業(yè)生產(chǎn)、生物工程、軍事以及航空航天等領(lǐng)域得到廣泛的應(yīng)用。
傳統(tǒng)的邊緣檢測算子有Sobel、Roberts、Prewitt、Laplacian等[1-2],其中Roberts算子運算速度快但對噪聲敏感,Sobel算子和Prewitt算子對灰度漸變低噪聲的圖像有較好的檢測效果但邊緣像素不準(zhǔn)確,Laplacian算子邊緣定位效果良好但運算量大,運算時間長。Canny算法不同于傳統(tǒng)算子提出了3個嚴(yán)格的邊緣檢測標(biāo)準(zhǔn),故具有較好的信噪比和較高的檢測精度,同時Canny算法的簡單實現(xiàn)保證了算法的計算速度。但傳統(tǒng)Canny算法存在對椒鹽噪聲敏感、梯度計算精度低、需要人為設(shè)定參數(shù)、自適應(yīng)差等問題。為此,近年來國內(nèi)外學(xué)者提出了眾多改進(jìn)方法,如郭萌等[3]利用kirsch算子和Canny算子相結(jié)合的邊緣檢測算法對陶瓷碗表面進(jìn)行檢測;胡克滿等[4]用自適應(yīng)濾波器改進(jìn)Canny算法對織物疵點進(jìn)行檢測;董瑤等[5]針對航空發(fā)動機(jī)葉片焊接修復(fù)對Canny算法進(jìn)行全面改進(jìn)等。這些論文主要思路是對濾波去噪算法和梯度模板進(jìn)行改進(jìn)及引入閾值的選取方法[6-9]。
本文旨在提高圖像邊緣檢測的抗噪性和檢測精度,對傳統(tǒng)的Canny算子做了3方面改進(jìn):首先用K-近鄰均值濾波對原圖像進(jìn)行平滑處理;其次使用Scharr算子作為梯度模板計算梯度幅值與方向;最后針對非極大值抑制后梯度圖像的特點,在Otsu算法基礎(chǔ)上引入抑制因子自適應(yīng)確定高低閾值。本文提出的抑制因子α與前景區(qū)域和背景區(qū)域像素比成函數(shù)關(guān)系,加入到Otsu算法中有效地解決了該算法在梯度集應(yīng)用中閾值選取不準(zhǔn)確的問題。實驗結(jié)果表明本文算法具有較好的檢測準(zhǔn)確性和邊緣連續(xù)性,同時具備較好的抗椒鹽噪聲能力和自適應(yīng)能力。
傳統(tǒng)的Canny邊緣檢測主要包含高斯濾波去噪、梯度幅值與方向計算、非極大值抑制和雙閾值法檢測4個基本步驟,具有較高的信噪比與定位精度。其基本思想為:
(1)高斯濾波降噪。將原圖像與高斯濾波器卷積,高斯濾波器如式(1)所示
(1)
式(1)中,δ為高斯函數(shù)標(biāo)準(zhǔn)差,數(shù)值根據(jù)實際情況人為設(shè)定,δ過小則抗噪能力差達(dá)不到濾波的要求,δ過大會影響邊緣定位精度。
(2)計算梯度幅值與方向。梯度可以表示圖像灰度變化的劇烈程度,傳統(tǒng)Canny算法采用2×2模板近似計算高斯平滑后的圖像在x與y方向上的偏導(dǎo)數(shù)。I(i,j)為圖像第i行第j列像素點的灰度,G(i,j)為圖像第i行第j列像素點的梯度,則x與y方向上的偏導(dǎo)數(shù)計算如式(2)、(3)所示
Gx(i,j)=[I(i,j+1)-I(i,j)+I(i+1,j+1)-I(i+1,j)]
(2)
Gy(i,j)=[I(i,j)-I(i+1,j)+I(i,j+1)-I(i+1,j+1)]
(3)
再利用式(4)、(5)計算梯度幅值與方向。
圖像的梯度幅值與梯度方向分別為
(4)
θ(i,j)=arctan[Fy(i,j)/Fx(i,j)]
(5)
(3)非極大值抑制。對梯度圖像中每個像素進(jìn)行非極大值抑制,將當(dāng)前像素的梯度幅值與沿正負(fù)梯度方向上相鄰的2個像素的梯度幅值進(jìn)行比較。如果當(dāng)前像素的梯度幅值是最大值,則保留該像素點,否則該像素點將被抑制。
(4)雙閾值法檢測。設(shè)置高低2個閾值分別為Th、Tl,若邊緣像素點的梯度幅值G(i,j) >Th,則將其標(biāo)記為強(qiáng)邊緣像素,保留該像素點;若G(i,j) 根據(jù)上述內(nèi)容,傳統(tǒng)Canny算法存在如下局限性[10-12]: 高斯濾波對椒鹽噪聲的去噪效果不佳,需要人為設(shè)定參數(shù),過大的δ值還會使圖像模糊,對邊緣提取造成影響。 利用2×2鄰域內(nèi)一階偏導(dǎo)的有限差分來近似計算梯度,由于模板小且是近似計算,所以這種方法對噪聲非常敏感且計算精度低,導(dǎo)致檢測結(jié)果不準(zhǔn)確。而高低雙閾值人為設(shè)定,由于不同圖像的屬性不同,經(jīng)驗設(shè)定的閾值往往不能達(dá)到最優(yōu)的分割效果,導(dǎo)致檢測結(jié)果出現(xiàn)大量弱邊緣或邊緣不連續(xù)的情況。 針對以上傳統(tǒng)Canny算法的不足,本文提出一種改進(jìn)的Canny邊緣檢測算法,首先使用K-近鄰均值濾波進(jìn)行圖像平滑,保持圖像邊界同時有效濾除噪聲;其次采用改進(jìn)Scharr算子作為梯度模板代替原本的2×2算子計算梯度幅值和梯度方向,提高結(jié)果精度;最后引入并改進(jìn)Otsu算法自適應(yīng)選取高低閾值,使閾值選取更符合實際圖像要求。 K-近鄰均值濾波又稱邊界保持濾波器,其原理為在待處理中心像素的相鄰區(qū)域內(nèi),尋找K個與中心像素灰度值相近的點,用這K個點的灰度均值代替原中心像素點的灰度值。 本文使用該濾波器步驟如下: (1)以待處理像素為中心,作一個5*5的作用模板; (2)在模板中選擇7個與待處理像素灰度差最小的像素; (3)將這7個像素的灰度均值代替原像素值。 相比于高斯濾波,這種濾波器對椒鹽噪聲具有較好的濾波效果,同時突出圖像邊緣信息,使邊緣定位更加準(zhǔn)確。 文獻(xiàn)[11,13]利用Sobel算子代替原有模板采用大小為3×3的Sobel算子求取導(dǎo)數(shù)的近似值,取得較好的抗噪性。本文沿用這一思路,使用3×3的Scharr算子作為梯度模板,該算子更加突出中心像素的梯度作用,且運算速度與Sobel算子一樣快,既保留抗噪性又使梯度計算結(jié)果更加精確。Scharr算子的內(nèi)核為 可以看出該算子用于梯度計算時,因為算子內(nèi)核放大倍數(shù)高,導(dǎo)致梯度幅值范圍大,后續(xù)閾值選取時的計算量大大增加。本文對Scharr算子的內(nèi)核進(jìn)行改進(jìn),減小內(nèi)核大小使算出的梯度幅值減小,改進(jìn)后的Scharr內(nèi)核為 設(shè)平滑后像素點(i,j)的像素值為I(i,j),對上述改進(jìn)后的內(nèi)核與平滑后的圖像進(jìn)行卷積運算,可以計算出x、y方向的偏導(dǎo)數(shù)Fx(i,j)、Fy(i,j)如式(6)、(7)所示 Fx(i,j)={[3I(i-1,j-1)+10I(i-1,j)+3I(i-1,j+1)]-[3I(i+1,j-1)+10I(i+1,j)+3I(i+1,j+1]}/4 (6) Fy(i,j)={[3I(i-1,j-1)+10I(i,j-1)+3I(i+1,j-1)]-[3I(i-1,j+1)+10I(i,j+1)+3I(i+1,j+1]}/4 (7) Otsu算法又稱最大類間方差法,是一種自適應(yīng)閾值確定方法。基本原理是在0~255之間找到一個閾值T,按圖像的灰度特性,將圖像分為前景和背景兩部分,灰度小于T的像素點的集合為前景,大于T的像素點集合為背景,當(dāng)這兩部分的類間方差最大時,說明圖像前景與背景的分離效果最好,此時T為最佳分割閾值。文獻(xiàn)[14]將傳統(tǒng)Otsu算法用于Canny的閾值選取中實現(xiàn)自適應(yīng)閾值選取,增強(qiáng)了算法自適應(yīng)性,但傳統(tǒng)的Otsu算法根據(jù)圖像灰度進(jìn)行閾值分割,沒有體現(xiàn)針對圖像邊緣的圖像梯度信息。文獻(xiàn)[15]改進(jìn)Otsu算法,根據(jù)非極大值抑制后的圖像梯度幅值選取閾值T,更適用于圖像的邊緣檢測應(yīng)用,并取得了較好的實驗結(jié)果。本文在該方法的思路上繼續(xù)延伸,設(shè)[G]為圖像梯度幅值取整,則T的取值范圍為0~[G]+1。非極大值抑制后的梯度圖像只保留極大的梯度幅值,邊緣像素減少,所以梯度均值過低,這一問題會導(dǎo)致Otsu算法選取閾值偏低,最終導(dǎo)致Canny算法邊緣提取出過多的無用邊緣與偽邊緣,達(dá)不到檢測要求。 本文提出一個抑制因子α,和前景區(qū)域與背景區(qū)域的像素比相關(guān)。當(dāng)像素比較小時,即上述情況,閾值受背景梯度的影響偏小,此時抑制因子α的作用是降低這一影響使閾值增大;當(dāng)像素比為1時,閾值不受影響,α不產(chǎn)生作用。綜上所述,α是和前景與背景區(qū)域的像素比有關(guān)的一個動態(tài)函數(shù),其作用隨像素比的增大而逐漸減小,加入抑制因子的Otsu算法既解決了梯度幅值分布不均勻帶來的問題,又保留了最大類間方差算法的閾值選取思想。 設(shè)閾值T,根據(jù)梯度將圖像分為前景C0和背景C1兩部分,當(dāng)像素梯度值g(i,j)≥T,則點(i,j)∈C0,當(dāng)像素梯度值g(i,j) (8) 式(8)中,ICV為最大類間方差,前景C0像素點數(shù)占圖像總像素的比例如式(9)所示 (9) 背景C1像素點數(shù)占圖像總像素的比例如式(10)所示 (10) 前景C0像素點的平均梯度如式(11)所示 (11) 背景C1像素點的平均梯度如式(12)所示 (12) 圖像總平均梯度如式(13)所示 (13) 經(jīng)推導(dǎo)可知,a應(yīng)與前景區(qū)域QA和背景區(qū)域QB的像素比有關(guān),故設(shè)β=QA/QB。由Otsu算法公式可知,當(dāng)β=1時,閾值T為G/2,α為1,抑制因子對最大類間方差法不產(chǎn)生影響。當(dāng)0<β<1時,前景區(qū)域小于背景區(qū)域,α應(yīng)隨著β的減小而減小,當(dāng)β趨近于0時,α趨近于一個常數(shù)。通過對比仿真實驗結(jié)果,α的取值一般在0.7~0.9,故最終確定a的擬合函數(shù)為 α=eβ-2+0.632(0<β<1) (14) 函數(shù)擬合圖像如圖1所示。 式(8)中,滿足最大類間方差I(lǐng)CV最大時對應(yīng)的T設(shè)為Canny算法的高閾值Th,根據(jù)經(jīng)驗,低閾值一般取高閾值的0.3~0.5倍,經(jīng)過多次試驗,本文選取低閾值Tl=0.45*Th邊緣檢測效果最佳。 圖1 α函數(shù)擬合曲線圖 改進(jìn)后的Canny算法步驟如下: 步驟1:利用K-近鄰均值濾波對原圖像的灰度圖像平滑,減少噪聲干擾,保留圖像邊緣信息; 步驟2:采用改進(jìn)Scharr算子作為梯度模板代替?zhèn)鹘y(tǒng)Canny算法模板計算圖像梯度幅值和梯度方向; 步驟3:非極大值抑制“瘦”邊,剔除正負(fù)梯度方向上的非極大值點,保留梯度極大值; 步驟4:采用帶抑制因子的Otsu算法自適應(yīng)選取閾值T,并將該值設(shè)定為Canny算法的高閾值,低閾值Tl=0.45*Th; 步驟5:利用雙閾值法檢測,保留強(qiáng)邊緣以及與強(qiáng)邊緣相連接的弱邊緣,濾除弱邊緣。 針對傳統(tǒng)Canny算子的改進(jìn)方法有很多,如文獻(xiàn)[16]使用4方向的3×3梯度模板代替原有的模板計算圖像梯度,并使用傳統(tǒng)Otsu算法選取閾值。本節(jié)利用MATLAB 2014a軟件進(jìn)行仿真實驗,分別對傳統(tǒng)Canny算法、文獻(xiàn)[16]改進(jìn)算法及本文算法進(jìn)行試驗,首先采用PFOM(Pratt's Figure of Merit)算法對處理圖像進(jìn)行量化分析,然后針對焊縫圖像特征及峰值信噪比進(jìn)行分析。 PFOM是一種可以有效判斷邊緣檢測結(jié)果好壞的算法。它由真實邊緣的漏檢測、偽邊緣的誤檢測以及邊緣的定位誤差3種因子組合定義,所得出的值為Pratt品質(zhì)因數(shù),Pratt品質(zhì)因數(shù)在0到1之間,且越接近1說明邊緣圖像越接近真實邊緣。 本實驗選取Cameraman和Lena兩幅經(jīng)典圖片進(jìn)行試驗。為驗證是否能夠達(dá)到實驗?zāi)康?,選用的真實邊緣為手動調(diào)節(jié)Canny算法雙閾值至最理想狀態(tài)且手動去除背景干擾的圖像邊緣,再分別用傳統(tǒng)Canny算法、文獻(xiàn)[16]改進(jìn)算法和本文算法進(jìn)行實驗,并分別求出3種算法實驗結(jié)果的Pratt品質(zhì)因數(shù)。所用圖像如圖2、3所示,實驗結(jié)果如表1所示。 圖2 cameraman仿真實驗圖 圖3 Lena仿真實驗圖 表1 PFOM算法仿真結(jié)果 % 選用焊縫圖像進(jìn)行對比試驗。實驗結(jié)果如圖4所示,其中第一組實驗a、b、c、d未加入噪聲,第二組實驗e、f、g、h加入3%椒鹽噪聲。 通過第一組焊縫實驗圖像可知,相比于傳統(tǒng)Canny算法,引入K-近鄰均值濾波和Scharr算子的算法邊緣定位更加準(zhǔn)確,一定程度上濾除了偽邊緣的干擾;加入抑制因子α的Otsu算法作用于梯度集之中,使焊縫圖像更加精煉且無背景干擾,K-近鄰均值濾波有效濾除了大部分噪聲,有利于后續(xù)試驗的進(jìn)行。 圖4 焊縫圖像仿真實驗圖 通過第二組焊縫實驗圖像可知,傳統(tǒng)Canny算法對椒鹽噪聲敏感,引入K-近鄰均值濾波和Scharr算子有效濾除大部分椒鹽噪聲,遺留的少量梯度極致點在加入抑制因子α后有效剔除。 針對本文算法的抗噪性進(jìn)行測試,選用焊縫圖像分別加入3%、6%、9%的椒鹽噪聲,進(jìn)行傳統(tǒng)Canny算法、文獻(xiàn)[16]算法和本文算法對比實驗,利用峰值信噪比PSRN進(jìn)行評價,結(jié)果如圖5所示。 圖5 不同算子檢測椒鹽噪聲的峰值信號比 綜上所述,本文算法具有較高的Pratt品質(zhì)因數(shù)、峰值信噪比和較好的定位精度。 本文在傳統(tǒng)Canny算法的基礎(chǔ)上進(jìn)行改進(jìn),首先使用K-近鄰均值濾波進(jìn)行圖像平滑,保持圖像邊界的同時有效濾除噪聲,其次采用改進(jìn)Scharr算子作為梯度模板,在保證梯度結(jié)果更精確的同時減少計算量,最后針對非極大值抑制后的梯度圖像,利用帶抑制因子的最大類間方差法自動選取高低閾值。實驗結(jié)果表明,本文算法邊緣定位精度高,抗噪性強(qiáng),具有自適應(yīng)性,可以有效濾除部分背景與強(qiáng)噪聲干擾,提高了圖像的連續(xù)性。本算法的應(yīng)用廣泛,可以應(yīng)用于焊縫質(zhì)量檢測。2 自適應(yīng)閾值改進(jìn)的Canny算法
2.1 K-近鄰均值濾波
2.2 梯度幅值算子的改進(jìn)
2.3 基于改進(jìn)Otsu算法的閾值選取
3 實驗與結(jié)果分析
3.1 PFOM算法實驗
3.2 焊縫圖像實驗
4 結(jié)論