范 晞,費(fèi)勝巍,儲(chǔ)有兵
(東華大學(xué) 機(jī)械工程學(xué)院,上海 201620)
圖像的最基本特征是邊緣,即像素灰度級(jí)的階梯變化或屋頂變化的像素點(diǎn)集合。目前,常用的邊緣提取算子大致分為兩類(lèi):一階差分邊緣檢測(cè)算子和二階微分邊緣檢測(cè)算子。常見(jiàn)的一階差分邊緣檢測(cè)算子主要包括Sobel算子、Prewitt算子和Roberts算子。二階微分邊緣檢測(cè)算子主要有LoG算子、Laplace算子等。在常見(jiàn)的邊緣檢測(cè)算子中,Laplace算子產(chǎn)生雙邊界,而其他算子如Sobel算子,會(huì)形成一個(gè)非封閉區(qū)域,且對(duì)噪聲敏感。
與傳統(tǒng)的微分算子相比,基于優(yōu)化算法的Canny邊緣檢測(cè)算子由于具有信噪比大、檢測(cè)精度高的優(yōu)點(diǎn)而得到了廣泛的應(yīng)用,然而傳統(tǒng)的Canny算子在實(shí)際濾波過(guò)程中會(huì)造成邊緣模糊。許多學(xué)者對(duì)此進(jìn)行了深入的研究,并提出了一些改進(jìn)型的Canny算法。例如,文獻(xiàn)[1]用中值濾波替代高斯濾波;文獻(xiàn)[2]使用基于梯度方向的檢測(cè)方法替代雙閾值法;文獻(xiàn)[3]通過(guò)形態(tài)學(xué)來(lái)細(xì)化邊緣。在此提出的改進(jìn)型算法使用雙邊濾波器代替?zhèn)鹘y(tǒng)Canny算法中的高斯濾波器,可以在去除噪聲的同時(shí)保留更多邊緣信息,并增加了45°和135°兩個(gè)方向的梯度模板來(lái)計(jì)算梯度幅值,從而可以檢測(cè)到更多的邊緣,同時(shí)采用Curvelet變換增強(qiáng)圖像邊緣,減少假邊緣的產(chǎn)生。
Canny邊緣檢測(cè)算法是Canny[4]在1986年提出的一種多邊緣檢測(cè)算法,并給出了判斷邊緣檢測(cè)性能的3個(gè)標(biāo)準(zhǔn):
信噪比標(biāo)準(zhǔn)主要作用是提高邊緣檢測(cè)的正確性,使得錯(cuò)檢或者漏檢的邊緣錯(cuò)誤率下降。
最佳定位標(biāo)準(zhǔn)目的是使標(biāo)記得出的邊緣盡可能地接近圖像真正的邊緣,從而提高定位的精度。
單邊應(yīng)答標(biāo)準(zhǔn)是為了確保在單個(gè)邊緣上只有一個(gè)像素應(yīng)答,并最大程度地抑制假邊緣的應(yīng)答。
步驟1高斯濾波器平滑圖像。傳統(tǒng)Canny算法采用高斯濾波器[5],利用其一階導(dǎo)數(shù)分別按行和列對(duì)原始圖像進(jìn)行卷積處理,由此平滑圖像。
式中:σ為高斯函數(shù)的標(biāo)準(zhǔn)差,用于調(diào)節(jié)平滑程度;f(x,y)為原始圖像;I(x,y)為平滑圖像。
步驟2計(jì)算梯度的幅值和方向。采用2×2鄰域一階偏導(dǎo)的有限差分,計(jì)算I(x,y)的二維高斯函數(shù) G(x,y)的梯度矢量▽G,即
根據(jù)高斯函數(shù)的可分離性,將梯度矢量的卷積模板分解為2個(gè)一維的行和列濾波器,即
將式(4)(5)分別與 f(x,y)卷積,得到
令
式中:A(i,j),?(i,j)分別為圖像上點(diǎn)(i, j)處的梯度幅值和方向角。
步驟3對(duì)梯度幅值應(yīng)用非極大值抑制。在3×3的窗口范圍內(nèi)插值像素。如圖1所示,將周?chē)袼胤纸鉃?個(gè)方向鄰域,并以A(i,j)為中心計(jì)算總共9個(gè)像素的梯度,并在梯度方向上插值結(jié)果。對(duì)于每個(gè)像素,A(i,j)與沿著梯度方向的2個(gè)梯度幅值進(jìn)行比較。如果A(i,j)值小于在梯度方向上的2個(gè)插值結(jié)果,則 A(i,j)的邊緣被標(biāo)記為0;如果 A(i,j)值大于等于在梯度方向上的2個(gè)插值結(jié)果,則A(i, j)的邊緣被納入候選對(duì)象。
圖1 像素點(diǎn)鄰域Fig.1 Pixel point neighborhood
步驟4用雙閾值算法檢測(cè)和連接邊緣。經(jīng)非極大值抑制得到的結(jié)果,仍存在許多噪聲和假邊緣,需要進(jìn)一步閾值處理,以消除假邊緣。通常的做法是確定1個(gè)高閾值Th和1個(gè)低閾值Tb,即在灰度直方圖中像素點(diǎn)個(gè)數(shù)沿梯度方向累加,當(dāng)像素累加個(gè)數(shù)達(dá)到像素總個(gè)數(shù)的80%時(shí),將該處的閾值設(shè)定為T(mén)h,Tb則為T(mén)h的 40%。
傳統(tǒng)Canny算法采用高斯函數(shù)濾波,在去除噪聲的同時(shí)會(huì)造成邊緣模糊,而且會(huì)丟失一些細(xì)節(jié)信息。針對(duì)這一問(wèn)題,在此提出采用雙邊濾波代替高斯濾波,以達(dá)到增強(qiáng)保邊的目的,并增加45°和135°兩個(gè)方向的梯度模板,以確保檢測(cè)出更多的真實(shí)邊緣,再結(jié)合Curvelet變換增強(qiáng)圖像邊緣,減少假邊緣的產(chǎn)生。
Tomasi在1998年提出雙邊濾波算法[6]。雙邊濾波(Bilateral filter)是一種非線性的濾波方法,它結(jié)合了圖像的空間鄰近性和像素值的相似性,并考慮了空間信息和灰度的相似性,從而達(dá)到了保留邊緣和去噪的目的。它比高斯濾波器多了1個(gè)高斯方差sigma-d,其基于高斯濾波函數(shù)的空間分布,所以在邊緣附近,距離較遠(yuǎn)的像素不會(huì)過(guò)多影響到邊緣上的像素值,這樣就確保了邊緣附近像素值的保存。
雙邊濾波的像素輸出值取決于鄰域像素值的加權(quán)組合,即:
式中:p(i,j)為像素輸出值; f(k,l)為像素輸入值;ω(i,j,k,l)為加權(quán)系數(shù)。
傳統(tǒng)的Canny算子在計(jì)算梯度時(shí)僅計(jì)算水平方向和垂直方向上的像素梯度值,從而導(dǎo)致邊緣像素丟失。為了能夠檢測(cè)更多的方向像素,在此提出在Sobel卷積的情況下,添加45°和135°兩個(gè)方向的梯度模板,如圖2所示。
圖2 四方向梯度模板Fig.2 Four-direction gradient template
圖中,4個(gè)方向的梯度模板分別為
式中:Qx為水平方向的梯度模板;Qy為垂直方向的梯度模板;Qxy為45°方向的梯度模板;Qyx為135°方向的梯度模板。
4個(gè)方向上的梯度分量 Ex,Ey,Exy,Eyx可以分別由 Qx,Qy,Qxy,Qyx卷積得到,則該像素點(diǎn)的梯度幅值E為
2002年文獻(xiàn)[7]給出第二代Curvelet變換,并在其基礎(chǔ)上提出了一種快速離散變換算法。Curvelet變換是基于傅里葉變換和小波變換的改進(jìn),它具有高度各向異性,并且具有很好的沿邊緣表達(dá)信息的能力,這對(duì)于恢復(fù)形狀的沿邊緣的主要結(jié)構(gòu)和抑制周邊噪聲具有優(yōu)勢(shì)。其過(guò)程如圖3所示。
圖3 Curvelet變換過(guò)程Fig.3 Curvelet transformation process
文獻(xiàn)[7]所提出的離散Curvelet變換有USFFT法和Wrapping法2種實(shí)現(xiàn)方法。在此采用了Wrapping法,其實(shí)現(xiàn)步驟如下:
步驟1笛卡爾坐標(biāo)系中任意函數(shù)f的二維FFT 變換,得到 f[n1,n2],-n/2≤n1,n2≤n/2。
步驟2針對(duì)頻域中的尺度j和方向l參數(shù),進(jìn)行重采樣,得到 f[n1,n2-n1tanθl]。
步驟3將步驟2中的f與方形窗相乘,并在原點(diǎn)附近對(duì) f[n1,n2]局部化。
步驟4利用二維快速傅里葉逆變換(IFFT),得到離散Curvelet變換系數(shù)集。
選用像素大小為512×512的Barbara圖像作為試驗(yàn)對(duì)象,并加入1%的椒鹽噪聲,通過(guò)MatLab 2013a仿真軟件作為實(shí)驗(yàn)平臺(tái),傳統(tǒng)的Canny算子檢測(cè)效果如圖4所示,試驗(yàn)中選取Th=120,sigma=1。由圖4(c)可見(jiàn)經(jīng)過(guò)傳統(tǒng)Canny算子檢測(cè)圖像去噪的同時(shí)存在明顯的模糊邊緣。
圖4 傳統(tǒng)Canny算子檢測(cè)效果Fig.4 Traditional Canny operator detection effect
圖5為本文改進(jìn)型Canny算子。由圖5(a)可以看出,在進(jìn)行雙邊濾波后圖像保留了更多的邊緣信息,同時(shí)減少了噪聲的干擾。在sobel邊緣檢測(cè)中,增加2個(gè)方向的梯度幅值保留了更多的真實(shí)邊緣,接著進(jìn)行的Curvelet變換將圖像分解為高頻子帶和低頻子帶。通過(guò)對(duì)高頻子帶進(jìn)行非線性閾值去噪;對(duì)低頻子帶進(jìn)行分段非線性增強(qiáng),最后完成Curvelet逆變換以增強(qiáng)圖像邊緣。
圖5(d)為本文改進(jìn)型Canny算法的檢測(cè)結(jié)果。對(duì)比傳統(tǒng)Canny算法,本文算法檢測(cè)的邊緣更加清晰和真實(shí),同時(shí)具有較強(qiáng)的抗噪聲干擾檢測(cè)能力。
圖5 改進(jìn)型Canny算子檢測(cè)效果Fig.5 Improved Canny operator detection effect
為了定性分析試驗(yàn)效果,選取均值、方差、信息熵以及平均梯度作為衡量指標(biāo)。方差能夠度量圖像灰度值分散程度,信息熵能夠度量圖像灰度值的一致性,平均梯度作為衡量圖像清晰程度的標(biāo)準(zhǔn)。評(píng)價(jià)參數(shù)見(jiàn)表1。
由表可知,高斯濾波后圖像的均值有所下降,表明圖像亮度改變較大;而雙邊濾波后的均值與原始圖像基本相同,圖像亮度基本不變。Cuevelet變換后的圖像均值略有下降,但圖像亮度基本與原始圖像一致。根據(jù)信息熵可看出,對(duì)雙邊濾波后的圖像進(jìn)行Curvelet變換的圖像信息熵遠(yuǎn)高于高斯濾波圖像。這表明本文改進(jìn)型算法能夠最大程度地保持圖像灰度的一致性。由平均梯度可看出,Curvelet變換后圖像的平均梯度值最大,說(shuō)明本文算法在保留邊緣細(xì)節(jié)信息上效果最佳。
表1 試驗(yàn)結(jié)果評(píng)價(jià)參數(shù)Tab.1 Test result evaluation parameters
分析了傳統(tǒng)Canny邊緣檢測(cè)算子存在的不足之處,在此基礎(chǔ)上提出了一種改進(jìn)型Canny邊緣檢測(cè)算子。試驗(yàn)結(jié)果表明,該算法能夠有效地減少假邊緣的產(chǎn)生,保留更多的真實(shí)邊緣,提高了邊緣檢測(cè)的精確度。同時(shí)在抗噪聲干擾方面也優(yōu)于傳統(tǒng)Canny算子。由對(duì)比試驗(yàn)結(jié)果可以看出,本文算法為邊緣檢測(cè)提供了一種新思路。該算法尚存在一些問(wèn)題,比如:增加2個(gè)方向的梯度幅值后,對(duì)于梯度模板的選取因人而異,其效果對(duì)于先驗(yàn)知識(shí)依賴較大;在進(jìn)行非極大值抑制時(shí),對(duì)于高低閾值的選取,其自適應(yīng)能力較差。對(duì)此有待于進(jìn)行深入的研究。