鄭歡歡 白魚秀 張雅瓊
摘要: 針對(duì)傳統(tǒng)Sobel邊緣檢測算法對(duì)噪聲敏感、定位不夠精確的缺點(diǎn),提出了改進(jìn)Sobel算子的邊緣檢測算法。算法基于均值計(jì)算和差分處理角度構(gòu)造了5×5的梯度權(quán)值模板,通過改進(jìn)的非極大抑制算法有效細(xì)化了邊緣,采用局部自適應(yīng)動(dòng)態(tài)閾值提取邊緣信息。通過實(shí)驗(yàn)表明,該算法不僅能夠較快、較好的提取邊緣信息,而且具有較強(qiáng)的抗噪能力。
關(guān)鍵詞: Sobel算子; 邊緣檢測; 非極大值抑制; 局部自適應(yīng)動(dòng)態(tài)閾值
中圖分類號(hào): TN 911.73
文獻(xiàn)標(biāo)志碼: A
An Edge Detection Algorithm Based on Sobel Operator
ZHENG Huanhuan, BAI Yuxiu, ZHANG Yaqiong
(School of Information Engineering, Yulin University, Yulin 719000, China)
Abstract: Aiming at the shortcomings of traditional Sobel edge detection algorithm such as noise sensitivity and inaccurate location, an improved Sobel operator edge detection algorithm is proposed. Based on mean calculation and difference processing, a 5×5 gradient weight template is constructed. The edge is refined effectively by improved nonmaximum suppression algorithm, and the edge information is extracted by local adaptive dynamic threshold. Experiments show that the algorithm not only can extract edge information quickly and better, but also has strong antinoise ability.
Key words: Sobel operator; edge detection; nonmaximum suppression; local adaptive dynamic threshold
0引言
圖像低級(jí)特征提取技術(shù)就是從整副圖像而不是顯著區(qū)域?qū)哟蝸砻枋鰣D像,其中最重要的研究內(nèi)容之一就是邊緣檢測。這一技術(shù)有助于人類從從圖像中獲得更多信息,從而進(jìn)行智能控制處理。常用的一些經(jīng)典邊緣檢測算子包括Roberts算子、Prewitt算子、Sobel算子、Log算子和Canny算子等。Sobel算子因其耗時(shí)短、具有一定的抗噪性、邊緣檢測效果較好而得到廣泛應(yīng)用。國內(nèi)外的學(xué)者經(jīng)過大量研究對(duì)基于該算子的算法提出了很多改進(jìn)算法,如增加梯度模板方向[1]、修改梯度模板權(quán)值[2]、修改提取邊緣的閾值[3]、綜合其他方法的改進(jìn)算法[4]等。本文在以前的研究基礎(chǔ)上,從均值計(jì)算和差分處理角度構(gòu)造5(5梯度模板,并通過邊緣細(xì)化和自適應(yīng)動(dòng)態(tài)閾值處理,經(jīng)實(shí)驗(yàn)檢測的邊緣更細(xì),抗噪性更好。
1傳統(tǒng)Sobel算法
Sobel算子是應(yīng)用一階微分等價(jià)算子檢測圖像梯度,從而確定邊緣位置的邊緣檢測算法。通常用梯度
f來表示一幅圖像f在(x,y)位置處的邊緣強(qiáng)度和方向,其梯度的定義如式(1)。
f≡grad(f)≡gxgy=
fxfy ?(1)
梯度向量的幅值和方向如式(2)、式(3)。
g(x,y)=g2x+g2y≈gx+gy (2)
α(x,y)=arctangygx(3)
傳統(tǒng)的Sobel算子采用水平和垂直兩個(gè)方向卷積模板與圖像進(jìn)行卷積運(yùn)算。假設(shè)一副圖像的3×3區(qū)域如圖1(a)所示,Sobel算子水平和垂直梯度模板分別如圖1(b)和(c)所示。
將圖像區(qū)域分別與兩個(gè)模板中的對(duì)應(yīng)權(quán)值相乘,并將所有乘積相加,得到3×3模板垂直和水平兩個(gè)方向的近似偏導(dǎo),如式(4)、式(5)。
gx=(z1+2z4+z7)-(z3+2z6+z9) (4)
gy=(z1+2z2+z3)-(z7+2z8+z9) (5)
一般用式(2)約等的近似計(jì)算得到位置像素梯度值。為了得到邊緣圖像,還需要對(duì)梯度圖像進(jìn)行閾值的二值化處理,不僅能除掉部分偽邊緣,還能得到清晰二值化邊緣圖像。根據(jù)不同環(huán)境的要求設(shè)置合適的閾值,當(dāng)梯度值大于閾值,則認(rèn)為該像素點(diǎn)為圖像的邊緣點(diǎn);當(dāng)梯度值小于閾值,則認(rèn)為該像素點(diǎn)不是圖像的邊緣點(diǎn)。
Sobel算子具備一階算子算法簡單,處理速度快的優(yōu)點(diǎn),同時(shí)由于使用了加權(quán)平均算法,因此對(duì)圖像中的一些噪聲具有一定的抑制能力。由于Sobel算子只獲取了水平和垂直兩個(gè)方向上的邊緣信息,定位精度不高,所以對(duì)于噪聲復(fù)雜的邊緣圖像,檢測效果并不理想。針對(duì)以上缺點(diǎn),本文通過擴(kuò)大邊緣檢測算子,采用局部自適應(yīng)動(dòng)態(tài)閾值,不僅提高了算法的抗噪性能,而且增強(qiáng)了邊緣定位精度。
2改進(jìn)sobel算法
2.1定義5×5算子模板
常用的濾波模板是3×3,但是近來更大的模板被用來執(zhí)行復(fù)雜的濾波運(yùn)算。定義5×5大的邊緣檢測模板不僅可以和濾波模板匹配,對(duì)減少噪聲的平滑效果也較好。
為了既實(shí)現(xiàn)邊緣檢測又能濾除噪聲,在定義5×5算子模板要考慮均值計(jì)算和差分處理的最優(yōu)均衡方式[5]。
假設(shè)離散平滑算子滿足高斯平均即服從正態(tài)分布,那么用二項(xiàng)式展開系數(shù),如表1所示,近似求得級(jí)數(shù)的整數(shù)系數(shù)。
對(duì)于不同級(jí)數(shù)n,位置k的系數(shù)為p(k,n),表1中僅列舉了級(jí)數(shù)小于5的系數(shù)如式(6)。
p(k,n)=n?。╪-k)!*k!, if (k≥0,k≤n)
0, others ?(6)
根據(jù)以上得出的最優(yōu)離散平滑算子系數(shù),計(jì)算出窗口大小為w的最優(yōu)平滑系數(shù)s(k)和最優(yōu)差分系數(shù)d(k),如式(7)、式(8)。
s(k)=p(k,w-1) (7)
d(k)=p(k,w-2)-p(k-1,w-2) (8)
由上可知,對(duì)于窗口大小等于5的系數(shù)分別為:
s(0)=1, s(1)=4, s(2)=6, s(3)=4, s(4)=1。
d(0)=1, d(1)=2, d(2)=0, d(3)=-2, d(4)=-1。
將一條坐標(biāo)軸上的最優(yōu)平滑和另一條坐標(biāo)軸上的最優(yōu)差分結(jié)合,形成既能抗噪又能檢測邊緣的Sobel算子,算法如式(9)、式(10)。
Sobel x(x,y)=∑w-1x=0∑w-1y=0s(x)·d(y) (9)
Sobel y(x,y)=∑w-1x=0∑w-1y=0s(y)·d(x)(10)
這樣生成的Sobel算子的5×5水平和垂直模板如圖2所示。
2.2梯度計(jì)算
將灰度圖像分別與圖2定義的兩個(gè)方向模板進(jìn)行卷積運(yùn)算,求出模板中心點(diǎn)對(duì)應(yīng)的圖像像素點(diǎn)的兩個(gè)方向梯度值:
gx(x,y),gy(x,y)。梯度圖像g(x,y)如式(11)。
g(x,y)=gx/12+gy/12 (11)
為了防止灰度值溢出,丟失邊緣信息,將兩個(gè)方向梯度值都除以衰減因子。
2.3邊緣細(xì)化
由于灰度圖像的邊緣是漸變區(qū)域,不是理想的階躍信號(hào),因此通過上述計(jì)算得到的梯度圖像在邊緣位置存在屋脊帶,需要對(duì)梯度圖像進(jìn)行細(xì)化處理,得到特征明顯的邊緣信息。
常用的邊緣細(xì)化方法是非極大抑制(NMS),就是在領(lǐng)域內(nèi)尋找局部最大搜索,抑制不是極大值的元素。這樣就可以把屋脊帶的粗邊緣(大于1個(gè)像素)細(xì)化為一個(gè)像素寬度,但是同時(shí)往往會(huì)丟失邊緣點(diǎn),造成邊緣不連續(xù)。
本文采用改進(jìn)的非極大抑制算法[6]。由于Sobel梯度模板只在水平和垂直方向進(jìn)行卷積運(yùn)算,因此只考慮了0°和90°的非極大值抑制,如式(12)。
gr(x,y)=
g(x,y), if(g(x,y)>α*max(A)
|g(x,y)>α*max(B))
0,others (12)
其中,A為5×5模板中中心像素所在的水平方向的5個(gè)像素組成的一維矩陣,即
A=[g(i-2,j),g(i-1,j),g(i,j),g(i+1,j),g(i+2,j)],B為5×5模板中中心像素點(diǎn)所在的垂直方向的5個(gè)像素組成的一維矩陣,
即B=[g(i,j-2),g(i,j-1),g(i,j),g(i,j+1),g(i,j+2)]。α為可控因子,根據(jù)具體情況調(diào)節(jié)細(xì)化強(qiáng)度。α越小丟失的邊緣信息越少,但是邊緣細(xì)化強(qiáng)度越小,經(jīng)多次實(shí)驗(yàn)發(fā)現(xiàn),取值在0.75~0.9之間,既可以細(xì)化邊緣由保留了較完整的邊緣信息。
2.4自適應(yīng)動(dòng)態(tài)閾值
梯度圖像經(jīng)過邊緣細(xì)化濾除了部分偽邊,但是對(duì)于受噪聲影響,仍有部分邊緣檢測效果不是很理想,一般通過閾值處理來提高抗噪能力。
實(shí)際應(yīng)用中,由于受不同環(huán)境的影響獲取的圖像差別較大,同一圖像的不同區(qū)域顏色強(qiáng)度也有區(qū)別,使用全局閾值得到的邊緣效果不夠理想。本算法根據(jù)不同的灰度圖像子區(qū)域采用局部自適應(yīng)動(dòng)態(tài)閾值提取邊緣信息,不僅提高了定位精度,也增加了算法的抗噪能力。在一個(gè)閾值判斷的5×5模板中,
圖像中心像素(x,y)的局部自適應(yīng)閾值t(x,y)如式(13)。
t(x,y)=[sum(C)-min(C)-max(C)]/23 (13)
其中,C為中心像素(x,y)所在的5×5模板中所有像素點(diǎn)組成的矩陣。
設(shè)定好閾值之后,將得到的梯度圖像通過式(14)進(jìn)行二值化處理,提取邊緣信息。
b(x,y)=255,if(gr(x,y)>t(x,y))
0,others ?(14)
3實(shí)驗(yàn)結(jié)果及分析
為檢測改進(jìn)Sobel算法的邊緣檢測效果,在MATLAB2014平臺(tái)下編程實(shí)驗(yàn)。將512×512的灰度圖像“pepper”作為原圖像分別采用傳統(tǒng)Sobel算法、3×3模板的四方向Sobel算法和改進(jìn)的5×5局部自適應(yīng)閾值Sobel算法,在無噪聲以及含有1%脈沖噪聲和方差為1%高斯噪聲的條件下,分別進(jìn)行邊緣檢測實(shí)驗(yàn),并從檢測效果和時(shí)間開銷兩方面進(jìn)行分析。
3.1算法邊緣提取效果分析
無噪聲條件下的邊緣檢測結(jié)果如圖3所示。
從對(duì)比圖可以看出,3×3模板的四方向Sobel算法和本文算法保留了更多圖像邊緣細(xì)節(jié)信息,由于使用了邊緣細(xì)化,所以這兩種邊緣線條更細(xì),而且邊緣的完整性和連續(xù)性都比傳統(tǒng)Sobel算法要好。
含有1%脈沖噪聲和方差為1%高斯噪聲的條件下的邊緣檢測結(jié)果,如圖4所示。
從對(duì)比圖明顯看出,本文的改進(jìn)算法的抗噪性要強(qiáng)于前兩種算法。
3.2算法時(shí)間開銷
在實(shí)驗(yàn)中統(tǒng)計(jì)了三種算法處理原圖像的時(shí)間開銷,算法(a)用時(shí)12 s,算法(b)用時(shí)20 s,算法(c)用時(shí)16 s??梢钥闯鰝鹘y(tǒng)Sobel算法時(shí)間開銷是最小的,而3×3模板的四方向Sobel算法時(shí)間開銷是最大的,本文改進(jìn)算法雖然用了5×5的大模板增加了運(yùn)算量,但是由于選擇了水平和垂直兩個(gè)方向運(yùn)算速度比四方向更快些。
4總結(jié)
針對(duì)傳統(tǒng)Sobel算法的不足,本文提出的改進(jìn)Sobel算法從均值計(jì)算和差分處理兩方面考慮構(gòu)造了5×5卷積模板的權(quán)值,并通過邊緣細(xì)化和局部動(dòng)態(tài)自適應(yīng)閾值計(jì)算,使邊緣圖像不僅能較好的描述圖像的邊緣信息,而且具有較好的抗噪性和時(shí)效性。
參考文獻(xiàn)
[1]鄭英娟,張有會(huì),王志巍,等.基于八方向Sobel算子的邊緣檢測算法[J].計(jì)算機(jī)科學(xué),2013,40(11A):354356.
[2]何春華,張雪飛,胡迎春.基于改進(jìn)Sobel算子的邊緣檢測算法的研究[J].光學(xué)技術(shù),2012,3(38):323327.
[3]劉占.基于局部期望閾值分割的圖像邊緣檢測算法[J].計(jì)算機(jī)與現(xiàn)代化,2016(8):5255.
[4]李怡燃,龐春穎,常知強(qiáng). Sobel算子和形態(tài)學(xué)相結(jié)合的尿液試紙條邊緣檢測算法研究[J].生物醫(yī)學(xué)工程研究,2019,38(1):4852.
[5]Mark S Nixon, Alberto S Aguado.計(jì)算機(jī)視覺特征提取與圖像處理 [M]. (第三版).北京:電子工業(yè)出版社,2014:100101.
[6]沈德海,張龍昌,鄂旭,等.一種基于梯度的細(xì)胞圖像邊緣檢測算法[J].信息技術(shù),2018(3):69.
(收稿日期: 2019.08.29)