魏 林,華康民
(鄭州航空工業(yè)管理學(xué)院 實(shí)驗(yàn)室與設(shè)備管理處,河南 鄭州 450000)
邊緣檢測(cè)就是找出圖像灰度在某一處發(fā)生劇烈變化的位置[1],經(jīng)典的邊緣檢測(cè)算子利用圖像邊緣一階導(dǎo)數(shù)極值點(diǎn)和二階導(dǎo)數(shù)過(guò)零點(diǎn)進(jìn)行圖像的二值化[2]。利用邊緣檢測(cè)算子進(jìn)行數(shù)字圖像的處理過(guò)程如圖1所示。
圖1 邊緣檢測(cè)過(guò)程
Roberts 算子是最簡(jiǎn)單的一階微分算子,利用一階導(dǎo)數(shù)峰值檢測(cè)邊緣點(diǎn),通過(guò)將2×2 的算子模板帶入計(jì)算,分別在垂直和水平方向進(jìn)行一階導(dǎo)數(shù)計(jì)算求和,并在圖像對(duì)角線方向上相鄰的差值求梯度幅值,所以在水平和垂直方向?qū)D像檢測(cè)精度很高,對(duì)噪聲很敏感,同時(shí)檢測(cè)較為粗糙,邊緣易丟失。
Prewitt 算子為了減少在檢測(cè)過(guò)程中受到的噪聲影響,該算子模版算子由2×2 變?yōu)?×3,這是一種理想情況下的圖像邊緣,用來(lái)檢測(cè)圖像,得到的梯度幅值最大值作為輸出值。
Sobel 算子與Prewitt 算子類似,都是3×3 的模板,只是在模板方向上不同,而且都是利用方向差分運(yùn)算與局部運(yùn)算相結(jié)合的方法[3]。 與Prewitt 類似,Sobel 算子在計(jì)算的時(shí)候體現(xiàn)了很好的方向性,檢測(cè)的邊緣都是與模板最類似的點(diǎn),通過(guò)加權(quán)平均運(yùn)算,與卷積算子運(yùn)算后代入,便可得到圖像的邊緣幅值,然后利用幅值與選定的閾值TH 進(jìn)行比較,若P(x,y)>TH,則選定該點(diǎn)作為邊緣點(diǎn),從而完成對(duì)圖像的二值化,Sobel 算子對(duì)圖像的檢測(cè)體現(xiàn)較好的方向性,也更加與模板檢測(cè)點(diǎn)趨同。
Laplace 算子利用圖像邊緣剖面二階導(dǎo)數(shù)過(guò)零點(diǎn)的特性進(jìn)行邊緣檢測(cè),Laplace 算子在運(yùn)算過(guò)程中作為一個(gè)標(biāo)量,在具有等斜率的寬區(qū)域上,有可能將全部區(qū)域都當(dāng)作邊緣檢測(cè)出來(lái)[4]。 在沒(méi)有噪聲干擾的情況下,Laplace 算子檢驗(yàn)時(shí)表現(xiàn)出方向的丟失,在加入噪聲的情況下,邊緣嚴(yán)重丟失,對(duì)噪聲非常敏感。
Log 算子在檢測(cè)過(guò)程中,首先進(jìn)行噪聲的去除,然后再利用差分算子進(jìn)行運(yùn)算找出圖像邊緣。 在求二階導(dǎo)數(shù)之前先進(jìn)行平滑濾波,一般認(rèn)為加性噪聲服從正態(tài)分布,針對(duì)這一點(diǎn)選擇高斯平滑濾波器進(jìn)行去噪[5],再利用Laplacian 銳化濾波器進(jìn)行處理,從運(yùn)算的結(jié)果零交叉來(lái)得到圖像的邊緣信息,這種算子的特點(diǎn)就是對(duì)圖像的抗噪性能較好。
Canny 算子邊緣檢測(cè)的方法是尋找圖像梯度的局部最大值,Canny 算子設(shè)定了兩個(gè)閾值,并分別檢測(cè)出強(qiáng)邊緣和弱邊緣,而且僅當(dāng)強(qiáng)邊緣和弱邊緣相連時(shí),弱邊緣才會(huì)包含在輸出中[6]。
該實(shí)驗(yàn)對(duì)于一階導(dǎo)數(shù)的實(shí)驗(yàn),有默認(rèn)閾值和獲取外部閾值兩種方式,并可選取方向,對(duì)于二階導(dǎo)數(shù)的試驗(yàn)有默認(rèn)閾值和獲取外部閾值兩種方式,并結(jié)合標(biāo)準(zhǔn)差對(duì)圖像進(jìn)行檢測(cè),在Matlab 中edge 函數(shù)用于對(duì)灰度圖像進(jìn)行邊緣提取,返回的是與讀取圖像大小一樣的二進(jìn)制圖像BW,語(yǔ)法如下:BW=edge(I,‘method’,thresh,directions,sigma),本文設(shè)計(jì)的基于Matlab/GUI的圖像邊緣檢測(cè)系統(tǒng)即將edge 函數(shù)內(nèi)置到系統(tǒng)中,通過(guò)編程呈現(xiàn)可視化的界面實(shí)時(shí)進(jìn)行檢測(cè)。
在一階算子中采用的都是算子模板,通過(guò)計(jì)算得到梯度之后,與默認(rèn)閾值或外部閾值相比較,再對(duì)圖像二值化,就可以得到檢測(cè)后的圖像。 下面就只針對(duì)默認(rèn)閾值,在二階算子中,Laplace 算子由于在edge 函數(shù)中不能被運(yùn)用,所以本實(shí)驗(yàn)用的是它的算子模板,利用graythresh 函數(shù),計(jì)算的是一個(gè)全局閾值,在使用im2bw函數(shù)將灰度圖像轉(zhuǎn)換為二值圖像時(shí),這種通過(guò)系統(tǒng)自動(dòng)計(jì)算的閾值被稱作默認(rèn)閾值,而其他算子都通過(guò)edge 函數(shù)來(lái)計(jì)算。
上述對(duì)圖片采用的是默認(rèn)閾值,而且對(duì)于一階算子采用的都是both 方向,從實(shí)驗(yàn)結(jié)果也可看到閾值,檢測(cè)同一圖片的默認(rèn)閾值如表1 所示。
表1 檢測(cè)同一圖片的默認(rèn)閾值
根據(jù)以上默認(rèn)閾值,設(shè)定3 個(gè)在此范圍段的閾值,分別為0.005,0.05,0.1。 下面就同一幅圖片,一階算子方向?yàn)閎oth 下,二階算子的標(biāo)準(zhǔn)差均為2,在不同閾值的不同算子之間的圖像效果對(duì)比來(lái)探究實(shí)驗(yàn)結(jié)論。
通過(guò)實(shí)驗(yàn)從橫向和縱向分別來(lái)對(duì)比圖像在不同閾值下的變化規(guī)律。 首先,從橫向?qū)Ρ?同一閾值下的各算子在處理圖像時(shí)表現(xiàn)出個(gè)體差異,當(dāng)閾值為0.005時(shí),Log 算子檢測(cè)的圖像邊緣最佳,且細(xì)節(jié)也較豐富,而對(duì)于其他算子檢測(cè)邊緣都很不清晰,對(duì)于Log 算子當(dāng)閾值大于0.005 時(shí),圖像幾乎看不到,說(shuō)明該算子對(duì)較小閾值敏感。 Canny 算子檢測(cè)的圖像相對(duì)而言圖像細(xì)節(jié)更豐富,方向感更好,也體現(xiàn)出來(lái)Canny 算子是一種較優(yōu)的檢測(cè)算子。 縱向?qū)Ρ?可發(fā)現(xiàn)對(duì)同一算子閾值越小,圖像邊緣越清晰,細(xì)節(jié)越豐富,反之,閾值越大,邊緣丟失越嚴(yán)重,可看出閾值越小,檢測(cè)的邊緣越雜亂且豐富,當(dāng)增大閾值后,圖像邊緣開始變得不清晰,當(dāng)閾值為0.1 時(shí),邊緣已經(jīng)幾乎不見。 二階算子利用二階導(dǎo)數(shù)過(guò)零點(diǎn)檢測(cè)圖像在檢測(cè)過(guò)程中檢測(cè)效果要優(yōu)于一階算子,在存在噪聲干擾時(shí),一階算子對(duì)噪聲較為敏感,因此一種好的邊緣檢測(cè)算法要具有較強(qiáng)的抗噪性。
在Log 算子和Canny 算子檢測(cè)邊緣的時(shí)候,第一步往往都是通過(guò)高斯濾波器先除掉噪聲,那么在高斯函數(shù)中,Sigma 作為其標(biāo)準(zhǔn)差,決定了去噪的效果,通過(guò)對(duì)Log 算子和Canny 算子在各種不同的Sigma 值下的檢測(cè)圖像對(duì)比得出結(jié)論,如圖2—5 所示。
圖2 Sigma=1 時(shí)的Log 和Canny 算子檢測(cè)
圖3 Sigma=2 時(shí)的Log 和Canny 算子檢測(cè)
圖4 Sigma=3 時(shí)的Log 和Canny 算子檢測(cè)
圖5 Sigma=4 時(shí)的Log 和Canny 算子檢測(cè)
從實(shí)驗(yàn)結(jié)果對(duì)比可以看出,標(biāo)準(zhǔn)差的大小決定抑制噪聲的效果,從Log 算子的圖像縱向比較來(lái)看,Sigma的值越大,對(duì)相應(yīng)圖像的去噪效果越好,從圖4 可以看出,當(dāng)Sigma=3 時(shí),噪聲已經(jīng)不存在,但當(dāng)繼續(xù)增大標(biāo)準(zhǔn)差時(shí)會(huì)發(fā)現(xiàn),圖像的邊緣信息開始丟失。 可以看出標(biāo)準(zhǔn)差有平滑圖像邊緣的作用,在一定范圍內(nèi),標(biāo)準(zhǔn)差的值變大,平滑效果越好,但同時(shí)圖像邊緣丟失也越來(lái)越明顯。
但從Canny 算子檢測(cè)的效果圖來(lái)看,對(duì)于不同的算子,其標(biāo)準(zhǔn)差的選取不太一樣,Canny 算子比Log 算子有更好的對(duì)標(biāo)準(zhǔn)差的適應(yīng)性,在標(biāo)準(zhǔn)差上的選取上有一個(gè)較大的選取空間,而且效果要比Log 算子好,檢測(cè)的輪廓更清晰,且邊緣更豐富。
為了增強(qiáng)Sobel 算子其在各方向上的敏感度,改進(jìn)的算子提出了增加其方向模板的方法,分別在0°和90°的基礎(chǔ)上增加45°,135°,180°,225°,270°,315°方向上的模板,來(lái)進(jìn)行卷積運(yùn)算。
從以上實(shí)驗(yàn)可以看出,傳統(tǒng)的Laplace 算子邊緣檢測(cè)過(guò)程中,方向丟失而且由于是雙倍加強(qiáng)了圖像對(duì)噪聲的敏感,檢測(cè)出圖像的邊緣不連續(xù),在已有的算法中,所用的模板是8 個(gè)方向的,分別是0°,45°,90°,135°,180°,225°,270°,315°在此基礎(chǔ)上增加8 個(gè)方向模板,分別為22.5°,67.5°,112.5°,157.5°,202.5°,247.5°,292.5°,337.5°,并改變模板中的參數(shù),更改的目的就是能夠更精確地檢測(cè)邊緣。 下面就針對(duì)改進(jìn)過(guò)后的算法帶入檢測(cè)系統(tǒng),實(shí)驗(yàn)仿真如圖6—7 所示。
圖6 Sobel 算子改進(jìn)前后檢測(cè)
圖7 Laplace 算子改進(jìn)前后檢測(cè)
從以上實(shí)驗(yàn)結(jié)果分析對(duì)比可以看出,改進(jìn)后的Sobel 算子首先對(duì)圖像邊緣的連續(xù)性控制得更好;其次對(duì)圖形的噪聲去除效果更強(qiáng);最后,圖像的精細(xì)程度明顯好于改進(jìn)前,因此可以看出改進(jìn)后的Sobel 算子具有一定的優(yōu)越性。
對(duì)于Laplace 算子,從前后實(shí)驗(yàn)結(jié)果圖對(duì)比可以看出,改進(jìn)之后的Laplace 算子由于在模板上增加了8 個(gè)方向,而且參數(shù)也更小,這樣檢測(cè)的圖像可以看到如果沒(méi)有噪聲干擾,能夠得到很好的檢測(cè)結(jié)果,也避免了方向的丟失,可以提高邊緣檢測(cè)的精度,同時(shí)又合理地設(shè)置了參數(shù),因而避免了一些偽邊緣的提取[8]。
本文通過(guò)基于Matlab 的GUI 開發(fā)出來(lái)了一個(gè)可視化的圖像處理界面,簡(jiǎn)單易懂,能夠非常清晰地反映出檢測(cè)前后的圖形對(duì)比情況,把Roberts,Prewitt,Laplace,Log,Canny 經(jīng)典的算子在應(yīng)用模塊中得到了實(shí)現(xiàn),并研究了在一定閾值和標(biāo)準(zhǔn)差下圖像的變化規(guī)律,并實(shí)現(xiàn)了在加入噪聲之后圖像的變化對(duì)比,檢測(cè)的最終目的是抑制噪聲、定位準(zhǔn)確和低重復(fù)響應(yīng),從復(fù)雜煩瑣的實(shí)驗(yàn)結(jié)果中找出差異,進(jìn)行橫向、縱向?qū)Ρ?最后提出了對(duì)Laplace 算子和Sobel 算子模版的幾點(diǎn)改進(jìn)意見,并得到了實(shí)現(xiàn)。 總體來(lái)看,邊緣檢測(cè)算子還有很多領(lǐng)域亟待研究,未來(lái)在算法改進(jìn)方面應(yīng)加強(qiáng)對(duì)噪聲的抑制和通過(guò)特定閾值并加入多個(gè)方向來(lái)控制精細(xì)邊緣輸出,并針對(duì)不同類型的圖片提出特定的算法解決方案。