陳世文,劉越暢
(嘉應(yīng)學(xué)院計(jì)算機(jī)學(xué)院,廣東 梅州 514015)
邊緣是圖像中的一種基本特征,可以為圖像分析和圖像識(shí)別提供重要的信息,是一個(gè)非常重要的研究課題。像素灰度值兩邊有著明顯的變化表現(xiàn)為階躍性邊緣;灰度值處在從增加到減少的變化轉(zhuǎn)折點(diǎn)表現(xiàn)為屋頂狀邊緣。傳統(tǒng)的邊緣檢測(cè)算法有Robert算子、Prewitt算子、Sobel算子、LOG算子、Laplacian算子、Kirsch算子等。這些算子的基本特點(diǎn)是計(jì)算簡(jiǎn)單、實(shí)現(xiàn)容易,但是由于邊緣本身的復(fù)雜性,這些算子在抗噪性能方面效果不夠理想。很多學(xué)者提出了改進(jìn)的邊緣檢測(cè)方法[1-6],包括基于小波變換的邊緣檢測(cè),基于數(shù)學(xué)形態(tài)學(xué)的邊緣檢測(cè),基于分形幾何的邊緣檢測(cè)等新的方法。
相對(duì)而言,Canny算子在邊緣檢測(cè)中具有較高的精度,因而得到了廣泛的應(yīng)用。但是由于Canny算子自身的不足,高低閾值需要人為確定、高斯濾波參數(shù)選擇困難,容易造成檢測(cè)中出現(xiàn)大量虛假邊緣。有學(xué)者提出用OTSU算法計(jì)算Canny參數(shù)的門限閾值、在Canny算法中融入小波變換等改進(jìn)方法[7-9]。針對(duì)Canny算子的不足,本文提出一種融入最小交叉熵的邊緣檢測(cè)算法,利用最小交叉熵動(dòng)態(tài)地計(jì)算圖像的高低閾值,解決圖像的灰度級(jí)集中在某一區(qū)域時(shí)的情況;利用圖像灰度的均值和方差計(jì)算Canny算子的高斯濾波參數(shù)。實(shí)驗(yàn)對(duì)比了本文算法與傳統(tǒng)算法和文獻(xiàn)[9]所采用的算法的檢測(cè)結(jié)果,結(jié)果表明本算法邊緣檢測(cè)較好,噪聲抑制能力較理想。
Canny算子在邊緣檢測(cè)中基于以下的最優(yōu)準(zhǔn)則:1)信噪比準(zhǔn)則,即將非邊緣點(diǎn)誤判為邊緣點(diǎn)或者將邊緣點(diǎn)誤判為非邊緣點(diǎn)的概率要低;2)定位精度準(zhǔn)則,即檢測(cè)出的邊緣位置盡可能地接近真正邊緣中心點(diǎn);3)單邊響應(yīng)準(zhǔn)則,即單一邊緣響應(yīng)唯一,虛假邊緣響應(yīng)受到最大的抑制。
利用二維高斯函數(shù)構(gòu)造濾波器,公式如下

計(jì)算二維濾波器模板的一階偏導(dǎo),得到兩個(gè)一維濾波器,用標(biāo)準(zhǔn)卷積得到高斯平滑。其中σ是高斯函數(shù)的標(biāo)準(zhǔn)差,控制著平滑圖像的程度。
圖像平滑后其梯度幅值和方向一般通過(guò)2×2鄰域內(nèi)的一階導(dǎo)數(shù)的有限差分來(lái)計(jì)算。在x方向和y方向的偏導(dǎo)數(shù)分別為Px(x,y)和Py(x,y),則圖像的梯度幅值和梯度方向分別為

對(duì)像素點(diǎn)的梯度幅值進(jìn)行非極大值抑制,即判斷像素點(diǎn)的梯度值在其八鄰域內(nèi)是否為最大值,如果是,則是邊緣,否則為零。
經(jīng)過(guò)非極大值抑制后,Canny算子采用雙閾值(高低閾值)方法檢測(cè)圖像邊緣。
傳統(tǒng)Canny算法的不足:使用單一的閾值對(duì)圖像進(jìn)行邊緣檢測(cè),對(duì)直方圖雙峰不明顯的圖像檢測(cè)效果不好,對(duì)含有噪聲的圖像容易誤檢錯(cuò)檢。閾值的太大或者太小都影響邊緣的檢測(cè)效果。
假若一幅圖像的尺寸為M×N,其灰度級(jí)為L(zhǎng),圖像上某一像素點(diǎn)的灰度值表示為f(x,y)(1≤x≤M,1≤y≤N),計(jì)算每個(gè)像素點(diǎn)在其K×K鄰域的平均灰度值,得到一幅平滑的圖像g(x,y),其灰度級(jí)也為L(zhǎng)。通常L取為255,K取為3,即8鄰域模板。f(x,y)與 g(x,y)組成二元組記為(i,j),設(shè)圖像中灰度級(jí)為i鄰域平均灰度級(jí)為j的像素點(diǎn)個(gè)數(shù)為r(i,j),定義二元組(i,j)在圖像和其鄰域平滑圖像中出現(xiàn)的概率為
定義二維直方圖如圖1所示,橫坐標(biāo)為圖像像元的灰度值i,縱坐標(biāo)為像元鄰域平均灰灰值j,設(shè)閾值(S,T)(0≤S,T≤L-1)把二維直方圖分割成A,B,C,D等4個(gè)區(qū)域,區(qū)域A和B分別代表目標(biāo)和背景,區(qū)域C和D分別代表邊緣或噪聲,由于邊緣和噪聲較少,一般認(rèn)為遠(yuǎn)離對(duì)角線區(qū)域的C和D的分量近似為零。如圖1所示,任意閾值向量(S,T)對(duì)圖像進(jìn)行分割,可以得到目標(biāo)和背景兩類區(qū)域,分別標(biāo)記為Ca和Cb,則兩類區(qū)域的先驗(yàn)概率分別表示為

假設(shè)閾值為(S,T)時(shí),目標(biāo)和背景的類內(nèi)均值分別表示為uP(S,T)和uQ(S,T),其分別代表分割后目標(biāo)和背景的灰度,則


圖1 二維直方圖區(qū)域劃分

最小交叉熵閾值法是圖像分割中計(jì)算閾值的方法,考慮了圖像中周圍像素的相關(guān)性,可以動(dòng)態(tài)地計(jì)算圖像的分割閾值,用于計(jì)算Canny算子的高低閾值,滿足復(fù)雜圖像邊緣檢測(cè)的閾值要求。
對(duì)圖像進(jìn)行平滑濾波有利于抑制噪聲,提高信噪比。高斯濾波器中高斯參數(shù)σ決定著濾波器抑制噪聲的能力。高斯參數(shù)σ偏大,抑制噪聲能力強(qiáng),但是可能會(huì)把目標(biāo)邊緣細(xì)節(jié)信息濾除掉;若高斯參數(shù)σ偏小,又容易出現(xiàn)虛假邊緣。這里,采用以下公式計(jì)算σ[6]

式中:N為窗口大小;M和E分別為圖像的均值和方差;Emin為一幅圖像中的最小方差。當(dāng)σ值較大時(shí),改為σ=kE/Emin,其中k=1/M,即為窗口內(nèi)均值的倒數(shù)。采用方差計(jì)算σ,原因是方差較好地表征了窗口內(nèi)的像素變化特點(diǎn),通常方差小的為非邊緣點(diǎn)或者是被噪聲污染的小區(qū)域。
在MATLAB 7.1環(huán)境進(jìn)行仿真實(shí)驗(yàn),對(duì)3幅圖像進(jìn)行實(shí)驗(yàn),利用最小交叉熵算法計(jì)算高閾值Th,為了節(jié)省計(jì)算,Tl為高閾值的一半。
如圖2所示,給圖2a加了0.01標(biāo)準(zhǔn)差的高斯噪聲,由實(shí)驗(yàn)圖可見(jiàn)傳統(tǒng)的Canny算子檢測(cè)效果不夠好,對(duì)噪聲的抑制能力較差。高斯濾波參數(shù)σ的選取很重要,若σ選取較大時(shí),高斯平滑模板變大,頻帶窄,抗噪能力較強(qiáng),但是容易造成圖像的緩變邊緣丟失及過(guò)度光滑;若σ選取較小時(shí),頻帶較寬,邊緣細(xì)節(jié)精度高,但是圖像平滑作用較小,抗噪聲能力較弱。

圖2 Lena實(shí)驗(yàn)圖
如圖3所示,圖3a為原始圖,圖3b為傳統(tǒng)Canny檢測(cè)結(jié)果,圖4為硬幣直方圖。由圖可見(jiàn),檢測(cè)效果較差,原因是傳統(tǒng)的Canny算法采用確定的高低閾值,當(dāng)圖像的灰度級(jí)集中在某一區(qū)域時(shí),直方圖沒(méi)有明顯雙峰,固定的高低閾值無(wú)法滿足檢測(cè)要求。高低閾值的選取很重要,高閾值關(guān)系到邊緣檢測(cè)的起始點(diǎn),當(dāng)高閾值Th較小時(shí),檢測(cè)到的邊緣信息較多,但是虛假也隨之增多;當(dāng)高閾值Th較大時(shí),抑制噪聲能力增強(qiáng),但是容易丟失實(shí)際邊緣信息。低閾值Tl關(guān)系到邊緣檢測(cè)的中止點(diǎn),Tl選擇越小保留的邊緣信息越多,隨著Tl的增大,目標(biāo)邊緣信息不斷減少,容易導(dǎo)致邊緣的斷裂。

圖3 硬幣實(shí)驗(yàn)圖

圖4 硬幣直方圖
實(shí)驗(yàn)分別對(duì)幾種情況進(jìn)行實(shí)驗(yàn):如圖5所示,為直方圖雙峰比較明顯的原始圖;如圖6所示,為加了0.01標(biāo)準(zhǔn)差的高斯噪聲的圖像;如圖7所示(直方圖如圖3),為直方圖雙峰不明顯的圖像。圖5結(jié)果所示,當(dāng)圖像直方圖雙峰比較明顯時(shí),傳統(tǒng)Canny算法檢測(cè)的邊緣信息豐富,但也有相當(dāng)一部分虛假邊緣,文獻(xiàn)[9]方法大體檢測(cè)出了邊緣信息,但是在單車的后輪邊緣信息丟失較嚴(yán)重,本文方法較好地檢測(cè)出了目標(biāo)邊緣。圖6結(jié)果所示,當(dāng)圖像被噪聲污染時(shí),傳統(tǒng)Canny算法檢測(cè)效果不理想,抑制噪聲能力較差,文獻(xiàn)[9]抑制噪聲效果不錯(cuò),但同時(shí)又丟失了部分邊緣信息,本文方法抑制噪聲能力較好,仍然能夠檢測(cè)出目標(biāo)的輪廓。圖7結(jié)果所示,當(dāng)圖像灰度級(jí)集中時(shí),即直方圖雙峰不明顯時(shí),傳統(tǒng)Canny算法出現(xiàn)大量虛假邊緣,效果不理想,文獻(xiàn)[9]對(duì)單峰的直方圖的邊緣檢測(cè)效果亦不理想,本文方法雖然也丟失了一些邊緣信息,但是大體上檢測(cè)出了目標(biāo)邊緣,結(jié)果仍算滿意。因此,本文方法相對(duì)傳統(tǒng)Canny算法具有一定優(yōu)越性,比文獻(xiàn)[9]算法好。

圖5 單車圖像處理結(jié)果


本文針對(duì)傳統(tǒng)Canny算法在邊緣檢測(cè)中的不足,提出了一種基于最小交叉熵的Canny邊緣檢測(cè)算法。傳統(tǒng)Canny算法容易檢測(cè)到虛假邊緣,本算法通過(guò)最小交叉熵來(lái)計(jì)算Canny的高低閾值,利用灰度值來(lái)計(jì)算高斯參數(shù)σ,較好地解決了邊緣誤檢錯(cuò)檢的情況。實(shí)驗(yàn)證明,算法抑制噪聲能力較強(qiáng),對(duì)于灰度級(jí)集中的圖像亦能檢測(cè)出大體輪廓,算法優(yōu)于傳統(tǒng)Canny算法。
[1]ZHANG Bin,HE Saixian.Improved edge detection method based on Canny algorithm[J].Infrared Technology,2006,28(3):165-169.
[2]CHEN Jie,WANG Zhenhua,DOU Lihua.Scale adaptive Canny edge detection method[J].Opto-Electronic Engineering,2008,35(2):79-84.
[3]柴俊華,應(yīng)駿.基于Canny算子的圖像輪廓提取的改進(jìn)方法[J].電視技術(shù),2008,32(S1):48-50.
[4]黃劍玲,鄭雪梅.一種改進(jìn)的基于Canny算子的圖像邊緣提取算法[J]. 計(jì)算機(jī)工程與應(yīng)用,2008,44(25):170-172.
[5]LI C H,LEE C K.Minimum cross entropy threshold[J].Pattern Recognition,1993,26(4):617-625.
[6]薛麗霞,李濤,王佐成.一種自適應(yīng)的Canny邊緣檢測(cè)算法[J].計(jì)算機(jī)應(yīng)用研究,2010,27(9):3588-3590.
[7]黃劍玲,陳博政.一種基于Canny的邊緣檢測(cè)優(yōu)化算法[J].計(jì)算機(jī)仿真,2010,4(27):252-255.
[8]白婷婷,鄧彩霞,耿英.基于小波變換與Canny算子融合的圖像邊緣檢測(cè)方法[J]. 哈爾濱理工大學(xué)學(xué)報(bào),2010,2(15):44-47.
[9]李華強(qiáng),喻擎蒼,方玫.Canny算子中Otsu閾值分割法的運(yùn)用[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,5(29):2297-2299.