張晨陽(yáng),曹艷華,楊曉忠
(華北電力大學(xué)數(shù)理學(xué)院,北京 102206)
數(shù)字圖像的邊緣信息對(duì)于圖像本身意義重大。邊緣檢測(cè)是數(shù)字圖像處理中的重要內(nèi)容,是處理過(guò)程中的關(guān)鍵環(huán)節(jié),目的是提取圖像的邊緣輪廓信息,去除其它信息[1]。
邊緣檢測(cè)的一般方法是利用整數(shù)階微分梯度算子模板與圖像卷積實(shí)現(xiàn)。常見(jiàn)的一階微分梯度算子有:Prewitt算子、Canny算子、Sobel算子等[2];常見(jiàn)的二階微分梯度算子有:LoG算子是基于過(guò)零點(diǎn)的邊緣檢測(cè)[3]。其中Canny算法因其可以平滑噪聲、邊緣檢測(cè)效果好而被廣泛應(yīng)用。經(jīng)典的Canny算法不能抑制局部噪聲,在檢測(cè)邊緣時(shí),會(huì)丟失一些灰度值變化不大的邊緣。針對(duì)上述問(wèn)題,李俊山等(2011年)[4]采用3×3鄰域代替?zhèn)鹘y(tǒng)Canny算子中的2×2鄰域,不僅能夠抑制噪聲,而且能夠較好檢測(cè)出邊緣信息,檢測(cè)精度高。
分?jǐn)?shù)階微積分是整數(shù)階微積分的拓展,是分形學(xué)的基礎(chǔ)之一[5]。由于分?jǐn)?shù)階微分具有弱導(dǎo)數(shù)性質(zhì),可以在增強(qiáng)圖像高頻區(qū)域信息的同時(shí)非線性保留圖像低頻輪廓信息,因此被廣泛應(yīng)用于信號(hào)分析和圖像處理中,如圖像融合、圖像增強(qiáng)和圖像邊緣檢測(cè)等。Mathieu等(2003年)[6]構(gòu)造了一種基于分?jǐn)?shù)階微分的CRONE邊緣檢測(cè)算子,當(dāng)階次在-1 本文針對(duì)傳統(tǒng)Canny邊緣檢測(cè)算法關(guān)于檢測(cè)弱邊緣圖像會(huì)使邊緣模糊,難以準(zhǔn)確確定邊緣位置,以及在檢測(cè)紋理豐富的圖像時(shí),容易造成偽邊緣等問(wèn)題進(jìn)行研究。在數(shù)字圖像中, 相鄰像素之間的灰度值是密切相關(guān)的,對(duì)于紋理豐富的區(qū)域以及弱邊緣區(qū)域,用分?jǐn)?shù)階微分處理都能夠得到很好的增強(qiáng)或保留。通過(guò)總結(jié),將分?jǐn)?shù)階微分和Sobel算子引入Canny算法中,使Canny邊緣檢測(cè)可以適用于更多場(chǎng)景。本文主要研究工作: 1)首先結(jié)合分?jǐn)?shù)階微分和各向同性Sobel算子構(gòu)造四方向分?jǐn)?shù)階梯度算子,將此算子引入Canny邊緣檢測(cè)算法的梯度計(jì)算中,不僅可以較好的檢測(cè)出不同方向的邊緣,而且可以有效抑制噪聲,使檢測(cè)出來(lái)的邊緣更加完整準(zhǔn)確。 2)其次采用改進(jìn)的非極大值抑制方法,考慮中心像素與鄰域內(nèi)像素梯度的關(guān)系,同時(shí)考慮中心像素自身和整體梯度圖像的關(guān)系,減少了偽邊緣的產(chǎn)生。 3)最后采用Otsu算法確定閾值連接邊緣,以免受到人為設(shè)置閾值的約束。 分?jǐn)?shù)階微分經(jīng)典的三種時(shí)域定義分別為Grünwald-Letnikov、Caputo和Riemann-Liouville定義。G-L定義可化為卷積形式適用于圖像處理,是將連續(xù)函數(shù)的整數(shù)階定義推廣到分?jǐn)?shù)階,是圖像處理中常用的分?jǐn)?shù)階微分定義[5]。 設(shè)信號(hào)f(t)滿足f(t)∈[a,t],存在m+1階連續(xù)導(dǎo)數(shù),對(duì)于?v∈R,[v]代表其整數(shù)部分,當(dāng)v>0時(shí),m至少取到[v],那么信號(hào)f(t)的v階導(dǎo)數(shù)定義如下 (1) 將一元信號(hào)f(t)的周期[a,t]按h=1等間隔劃分,得到一元信號(hào)的分?jǐn)?shù)階差分表達(dá)式 (2) 對(duì)于數(shù)字圖像,分?jǐn)?shù)階差分表達(dá)式如下 (3) (4) 設(shè)灰度圖像函數(shù)為f(x,y),將各向同性Sobel算子與像素點(diǎn)(x,y)的8-鄰域區(qū)域卷積,計(jì)算得到像素點(diǎn)(x,y)的梯度差分表達(dá)式 +f(x-1,y-1)-f(x+1,y-1)] (5) +f(x,y+1)-f(x+1,y)] (6) +f(x+1,y+1)-f(x+1,y-1)] (7) +f(x,y-1)-f(x+1,y)] (8) 其中G00,G450,G900,G1350分別代表水平梯度、450方向梯度、豎直梯度以及1350方向梯度。對(duì)圖像等間隔采樣,設(shè)置步長(zhǎng)Δx=2,以G00,G450為例,將差分表達(dá)式轉(zhuǎn)化為微分形式 (9) (10) 將上述微分形式的整數(shù)階用分?jǐn)?shù)階來(lái)替代,得到 (11) (12) +f(x+1,y-1)-vf(x,y-1) -vf(x-1,y)+avf(x+1,y) (13) 由(13),推得水平方向和450方向分?jǐn)?shù)階Sobel算子的模板為 根據(jù)同樣的計(jì)算方法得到豎直方向和1350方向的分?jǐn)?shù)階Sobel算子模板 傳統(tǒng)Canny邊緣檢測(cè)算法的步驟[12]:①對(duì)灰度圖像進(jìn)行高斯濾波處理;②利用2×2大小的差分模板計(jì)算圖像的梯度;③對(duì)梯度幅值進(jìn)行非最大值抑制,保留局部最大值,可以細(xì)化邊緣;④用雙閾值算法檢測(cè)和邊緣連接。 3.2.1 四方向分?jǐn)?shù)階Sobel算子計(jì)算梯度 用四方向分?jǐn)?shù)階Sobel算子分別與待測(cè)圖像進(jìn)行卷積運(yùn)算,得到像素點(diǎn)的四方個(gè)向梯度G1(x,y),G2(x,y),G3(x,y),G4(x,y),像素點(diǎn)(x,y)的梯度G(x,y)和角度φ(x,y)如下[13] (14) φ(x,y)=arctan[G4(x,y)/G1(x,y)] (15) 3.2.2 改進(jìn)的非極大值抑制 為了精準(zhǔn)細(xì)化梯度幅值圖像的寬邊緣,需要對(duì)梯度圖像進(jìn)行非極大值抑制,剔除一部分非邊緣點(diǎn)。將梯度方向離散為1、2、3、4四個(gè)方向,分別代替0°、45°、90°、135°方向,如圖1所示,四個(gè)扇區(qū)可以對(duì)應(yīng)3×3鄰域內(nèi)的8個(gè)點(diǎn)。 圖1 梯度方向?qū)?yīng)圖像 使像素點(diǎn)(x,y)的梯度方向φ(x,y)映射到離它最接近的方向上,若中心像素梯度方向?qū)儆诘?方向且滿足 G(x,y)>T1且G(x,y)>T2 則判定該像素點(diǎn)(x,y)為局部最大值點(diǎn)。 其中T1為梯度圖像的平均灰度值,T2=max{G(x+1,y+1),G(x-1,y-1)}。 3.2.3 Otsu算法確定閾值 Otsu算法是一種可以根據(jù)圖像自身灰度直方圖自適應(yīng)確定閾值的一種算法[14,15]。假設(shè)圖像尺寸為M×N,灰度級(jí)范圍為[0,L-1],將圖像分為兩類,記C0類為灰度級(jí)在[0,t]之間的像素點(diǎn),C2類為灰度級(jí)在[t+1,L-1]的像素點(diǎn),分割閾值為t。屬于C0類的像素點(diǎn)占全幅的比值記為p0,C1類的像素點(diǎn)占全幅比值記為p1。C0類和C1類的平均灰度級(jí)表示為u0,u1,圖像總平均灰度記為u,類間方差記為σ。那么 u=p0*u0+p1*u1 (16) σ=p0(u0-u)+p1(u1-u) (17) 當(dāng)σ達(dá)到最大時(shí),灰度級(jí)T為最佳閾值,記為最高閾值Th,本文設(shè)置最低閾值為Tl=0.4*Th。 3.2.4 算法實(shí)現(xiàn)步驟 本文算法具體實(shí)現(xiàn)步驟:1)對(duì)灰度圖進(jìn)行高斯濾波處理;2)使用四方向分?jǐn)?shù)階梯度算子計(jì)算圖像梯度和方向;3)用改進(jìn)的非極大值抑制細(xì)化邊緣;4)通過(guò)Otsu算法確定雙閾值,對(duì)圖像進(jìn)行邊緣連接。 將本文提出的新算法與現(xiàn)有幾種經(jīng)典邊緣檢測(cè)算法對(duì)比分析,實(shí)驗(yàn)在MATLAB R2018 a的環(huán)境下進(jìn)行。選取三類圖像進(jìn)數(shù)據(jù)仿真處理,用Prewitt算法、Canny算法、Sobel算法、LoG算法和本文算法進(jìn)行實(shí)驗(yàn),得到實(shí)驗(yàn)效果對(duì)比圖。對(duì)Lena圖像進(jìn)行邊緣檢測(cè)得到圖2。 圖2 Lena圖像邊緣檢測(cè)結(jié)果 由圖2可知,Sobel算法和Prewitt算法檢測(cè)的邊緣不全面不連續(xù),但檢測(cè)到的部分比較清晰。LoG算法能夠檢測(cè)到較為豐富的邊緣,但對(duì)于噪聲不敏感且檢測(cè)效果比較模糊。顯然,本文算法和經(jīng)典Canny算法優(yōu)于其它三種算法。經(jīng)典Canny算法和本文改進(jìn)的Canny算法在進(jìn)行高斯濾波時(shí)均選取相同的參數(shù),邊緣檢測(cè)后,經(jīng)典Canny算法產(chǎn)生的偽邊緣較多,本文算法相較經(jīng)典Canny算法對(duì)于噪聲不敏感,線條連續(xù)不雜亂。 選取電路板控制器圖像,圖像來(lái)源于文獻(xiàn)[1],來(lái)驗(yàn)證本文算法對(duì)于復(fù)雜圖像的邊緣檢測(cè)效果,得到圖3。 圖3 電路板控制器邊緣檢測(cè)結(jié)果 由圖3對(duì)比看出,本文改進(jìn)的Canny算法能夠保證邊緣完整,同時(shí)檢測(cè)邊緣仍然清晰,具有較好的圖像檢測(cè)效果。 為了驗(yàn)證本文算法的抗噪性能,對(duì)rice圖像加入0.05的椒鹽噪聲,分別使用本文提到的五種算法進(jìn)行邊緣檢測(cè),如圖4。 圖4 添加椒鹽噪聲的rice圖像邊緣檢測(cè)結(jié)果 圖4可以看出,Sobel算法和Prewitt算法受噪聲影響很大,使圖像邊緣模糊,以至于幾乎檢測(cè)不到邊緣信息。LoG算法具有一定的抗噪性能,但是邊緣依舊模糊。本文算法和Canny算法明顯優(yōu)于Sobel算法、Prewitt算法和LoG算法。本文算法檢測(cè)的圖像邊緣完整準(zhǔn)確,經(jīng)典Canny算法也能夠提取出比較完整的圖像邊緣,但受噪聲影響比較大,出現(xiàn)了一些連續(xù)的噪聲輪廓。 為了進(jìn)一步客觀說(shuō)明本文算法的可靠性,采用文獻(xiàn)[16]的標(biāo)準(zhǔn)對(duì)圖像邊緣檢測(cè)的效果進(jìn)行評(píng)價(jià)。其中A代表檢測(cè)出的邊緣點(diǎn)總數(shù),即邊緣圖像中像素值為1的個(gè)數(shù);B代表滿足8-連通條件的邊緣點(diǎn)的個(gè)數(shù);比值B/A可以表示邊緣完整度,其值越小,不連續(xù)點(diǎn)越少、邊緣連通性越好、邊緣完整度越高。統(tǒng)計(jì)結(jié)果如表1所示,從數(shù)據(jù)可以看出,本文算法B/A的比值更小,邊緣檢測(cè)具有更高的準(zhǔn)確性,邊緣完整度更高。 表1 邊緣圖像統(tǒng)計(jì)表 對(duì)五種算法執(zhí)行效率進(jìn)行對(duì)比,實(shí)驗(yàn)數(shù)據(jù)如表2,表2中的數(shù)據(jù)是五種算法100次邊緣檢測(cè)實(shí)驗(yàn)取得的平均值。由統(tǒng)計(jì)數(shù)據(jù)得出,本文改進(jìn)的Canny算法的檢測(cè)效率與LoG算法和經(jīng)典Canny算法相近。 表2 算法執(zhí)行效率對(duì)比 本文提出改進(jìn)Canny算法的圖像邊緣檢測(cè)新方法,首先基于分?jǐn)?shù)階微分構(gòu)造分?jǐn)?shù)階Sobel算子,其次使用改進(jìn)的非極大值抑制方法細(xì)化邊緣,最后利用Otsu算法計(jì)算雙閾值。仿真結(jié)果表明,本文算法相比已有的Canny算法、Sobel算法和LoG算法等,對(duì)偽邊緣有一定的抑制效果,邊緣定位準(zhǔn)確,抗噪能力強(qiáng),能夠檢測(cè)出比較完整清晰的圖像邊緣,是一種有效可行的圖像邊緣檢測(cè)算法。2 分?jǐn)?shù)階微分和梯度算子
2.1 分?jǐn)?shù)階微分的定義
2.2 四方向分?jǐn)?shù)階Sobel算子
3 改進(jìn)的Canny邊緣檢測(cè)算法
3.1 傳統(tǒng)的Canny算法
3.2 基于分?jǐn)?shù)階Sobel算子的Canny算法
4 仿真研究
4.1 邊緣檢測(cè)定性分析
4.2 實(shí)驗(yàn)結(jié)果定量對(duì)比
5 結(jié)論