齊丹陽(yáng),蔣 崢,陳 毅,劉 斌
(武漢科技大學(xué)信息科學(xué)與工程學(xué)院,湖北 武漢,430081)
圖像邊緣包含了圖像的大量信息,它是圖像灰度在空間發(fā)生突變或者在梯度方向上發(fā)生突變的像素集合,也是圖像局部特征不連續(xù)而造成的后果。邊緣檢測(cè)是圖像分析、目標(biāo)識(shí)別等高級(jí)圖像分析處理的重要基礎(chǔ),它是圖像處理領(lǐng)域的一個(gè)熱門研究課題。目前,圖像處理方法有兩大類:一是經(jīng)典的邊緣檢測(cè)方法[1],如微分算子法、最優(yōu)算子法和擬合法等;二是基礎(chǔ)邊緣提取方法,如數(shù)學(xué)形態(tài)學(xué)法、模糊數(shù)學(xué)法[2]、小波分析法[3]和分形理論法等。由于算法復(fù)雜度、時(shí)間耗費(fèi)等原因,在實(shí)際工程中經(jīng)典的邊緣檢測(cè)算法應(yīng)用較多,其中Canny算法在抗干擾和提取精細(xì)邊緣方面得到廣泛的應(yīng)用。
由于Canny算法需要設(shè)定固定閾值來(lái)獲取邊緣圖像,以致容易出現(xiàn)邊緣間斷或偽邊緣問題,而實(shí)際應(yīng)用中要求不過度依賴閾值得到較完整干凈的真實(shí)邊緣。針對(duì)Canny算法的不足,近年來(lái)提出改進(jìn)的Canny算法有:①通過形態(tài)學(xué)法來(lái)細(xì)化邊緣[4-5],此類方法不適合對(duì)于細(xì)節(jié)提取要求較高的圖像檢測(cè);②通過圖像的灰度均值與方差均值自動(dòng)計(jì)算高閾值[6],但高低閾值的比例仍是2∶1;③通過改進(jìn)Otsu算法自動(dòng)計(jì)算高低閾值[7-9],但需要預(yù)先對(duì)圖像進(jìn)行分塊或復(fù)雜的預(yù)處理;④通過改進(jìn)邊緣連接方法[10-11],此類方法仍需設(shè)置高低閾值,在高閾值圖像中利用一定準(zhǔn)則來(lái)連接低閾值圖像中的弱邊緣。不難看出,基于梯度幅值和梯度角度的邊緣特征均需要設(shè)置高低閾值。為此,本文提出一種新的邊緣對(duì)比特征,并基于視覺感知實(shí)驗(yàn)得出用于評(píng)價(jià)兩個(gè)灰度是否可以區(qū)分開來(lái)的對(duì)比閾值,然后針對(duì)Canny 邊緣檢測(cè)算法中需要手動(dòng)設(shè)置固定閾值而出現(xiàn)邊緣間斷或偽邊緣的問題,設(shè)計(jì)了一種基于邊緣對(duì)比特征和邊緣方向的邊緣連接方法。該方法改變了Canny算法中必須同時(shí)設(shè)置高低閾值的局限性,且能獲取完整干凈的邊緣。
Canny于1986年提出Canny邊緣檢測(cè)算法[1],并給出了評(píng)價(jià)邊緣提取優(yōu)劣的三個(gè)指標(biāo):
(1)信噪比。即檢測(cè)到的邊緣必須盡可能是真實(shí)邊緣。
(2)定位性能。即檢測(cè)出來(lái)的邊緣點(diǎn)與真實(shí)邊緣中心之間的距離應(yīng)該最小。
(3)單一的邊緣點(diǎn)響應(yīng)。即對(duì)于真實(shí)的邊緣點(diǎn),檢測(cè)算法僅返回一個(gè)點(diǎn)。
Canny邊緣檢測(cè)算法的本質(zhì)是從數(shù)學(xué)上表達(dá)上述3個(gè)準(zhǔn)則,并試圖找到這些表達(dá)式的最佳解。歸納起來(lái),Canny邊緣檢測(cè)算法由下列基本步驟組成:①用高斯濾波器平滑輸入圖像; ②計(jì)算梯度幅值圖像和角度圖像;③對(duì)梯度幅值圖像應(yīng)用非極大值抑制;④用雙閾值處理和連接分析來(lái)檢測(cè)并連接邊緣。
圖像邊緣本質(zhì)是灰度的變化,認(rèn)為是一個(gè)真實(shí)的邊緣取決于人眼的主觀感覺,主觀感覺的強(qiáng)烈與否取決于灰度突變的強(qiáng)度。灰度變化產(chǎn)生的層次感凸顯出邊緣,因此表征邊緣最本質(zhì)的方法是獲取產(chǎn)生灰度變化的灰度值,顯然灰度值是一對(duì)灰度值,本文將這一對(duì)灰度值命名為邊緣對(duì)比特征。Canny邊緣檢測(cè)算法中使用的邊緣特征是梯度幅值和梯度角度,而本文加入邊緣對(duì)比度特征以利于更好地檢測(cè)邊緣。
(1)
式中:gx、gy分別為水平、垂直梯度。
梯度向量幅值M(x,y)定義為
M(x,y)=mag(f)
(2)
由于梯度向量方向與所在邊緣垂直,因此可由梯度方向得到邊緣方向,梯度方向α(x,y)也稱為邊緣法線,其定義為
(3)
圖1為邊緣與梯度向量的關(guān)系,其中圖 1 (a)為邊緣與梯度向量的坐標(biāo)關(guān)系,圖 1 (b)為在灰度圖像中邊緣與梯度向量的關(guān)系。
(a) (b)
圖1邊緣與梯度關(guān)系示意圖
Fig.1Relationshipbetweenedgeandgradient
對(duì)于邊緣,可分別定義為水平、垂直、+45°、-45°四個(gè)方向,圖2為每種邊緣所對(duì)應(yīng)的法線范圍。由圖2可看出,邊緣法線方向可確定邊緣方向,每個(gè)邊緣均有兩個(gè)可能的方向,如法線為0°邊緣和法線為180°邊緣是同一個(gè)水平的邊緣。
由圖 1 (b)可看出,對(duì)于圖像中的一個(gè)邊緣點(diǎn),該點(diǎn)梯度方向上兩側(cè)的灰度是有差異的,可以把該點(diǎn)梯度方向上兩側(cè)部分點(diǎn)的灰度均值作為該邊緣點(diǎn)的灰度特征,也就是邊緣對(duì)比特征。圖 3為計(jì)算不同方向邊緣灰度均值的點(diǎn)。由圖3可看出,對(duì)于不同方向的邊緣用來(lái)計(jì)算灰度均值的點(diǎn)是不同的。其中中間黑點(diǎn)為邊緣點(diǎn),穿過中間黑點(diǎn)的粗直線表示邊緣方向,粗直線上下或者左右兩側(cè)的點(diǎn)為用來(lái)計(jì)算灰度均值的點(diǎn)。
圖2 邊緣及法線范圍Fig.2 Edge and the normal range
(a)水平邊緣 (b)垂直邊緣
(c) +45°邊緣 (d) -45°邊緣
圖3計(jì)算不同方向邊緣灰度均值的點(diǎn)
Fig.3Pointsofcalculatingedgegray-scalemeanindifferentdirections
對(duì)于圖像中坐標(biāo)為(x,y)的點(diǎn),用magDown(x,y)記錄該點(diǎn)沿梯度方向上的灰度均值,用magUp(x,y)記錄該點(diǎn)沿梯度反方向上的灰度均值,也就是說(shuō),用magDown(x,y)和magUp(x,y)來(lái)記錄邊緣對(duì)比特征。這里,要嚴(yán)格按梯度方向來(lái)記錄邊緣的對(duì)比特征,而不是簡(jiǎn)單地用上下或者左右的方式來(lái)記錄,原因是一種邊緣有兩個(gè)可能的梯度方向,而不同梯度方向的邊緣,其實(shí)表示的邊緣含義是不一樣的。以水平邊緣為例,如果梯度方向垂直向下,則表示該水平邊緣上側(cè)的灰度值比下側(cè)灰度值低,但如果梯度方向垂直向上,則表示該水平邊緣上側(cè)的灰度值比下側(cè)灰度值要高,這樣兩種水平邊緣是有區(qū)別的。
邊緣對(duì)比特征原始地反應(yīng)了邊緣周圍的灰度特征,因此可以比較邊緣點(diǎn)之間的邊緣對(duì)比特征來(lái)分析邊緣點(diǎn)之間的相似性。要比較邊緣對(duì)比特征,就要比較灰度值之間的差異。這里針對(duì)8種灰度圖來(lái)說(shuō)明其圖像中灰度的變化。對(duì)于灰度值為5的圖像區(qū)域和灰度值為25的圖像區(qū)域,人眼是無(wú)法分辨出其差別的,它給人的感覺都很黑,但對(duì)于灰度值為65的圖像區(qū)域和灰度值為85的圖像區(qū)域,人眼能夠較容易地區(qū)分。對(duì)于灰度值為65的圖像區(qū)域和灰度值為125的圖像區(qū)域,人眼就很容易區(qū)分其差別。因此,灰度之間差異程度的大小,不僅和灰度差值有關(guān)系,而且和灰度值本身也有關(guān)系[12-13]。
在一幅圖像中分別設(shè)置背景和目標(biāo)灰度值,觀察不同背景下目標(biāo)取何值可以被識(shí)別出來(lái),并記錄背景灰度值和目標(biāo)灰度值。顯然不同圖像和不同人的記錄值是有區(qū)別的,但通過采用多幅圖像和視力正常或者戴眼鏡情況下視力達(dá)到正常水平的多人次的多次測(cè)試,記錄值就具有了較強(qiáng)的代表性,由此整理并總結(jié)出具有典型經(jīng)驗(yàn)的記錄值。
圖4為一次記錄數(shù)據(jù)的圖形顯示結(jié)果,其中,直線表示背景灰度值,直線上下兩條虛線均為目標(biāo)灰度值。由圖4可看出,直線上方的虛線在目標(biāo)灰度值高于背景灰度值的情況下,只有當(dāng)目標(biāo)灰度值大于該虛線的灰度值時(shí)目標(biāo)才能被識(shí)別;直線下方的虛線在目標(biāo)灰度值低于背景灰度值的情況下,只有當(dāng)目標(biāo)灰度值小于該虛線時(shí)目標(biāo)才能被識(shí)別。以圖4中A點(diǎn)為例,A點(diǎn)背景灰度值為170,B點(diǎn)灰度值為145,C點(diǎn)灰度值為191,也就是說(shuō),對(duì)于背景灰度值為170時(shí),目標(biāo)灰度值應(yīng)該小于145或者大于191的情況下,目標(biāo)才能被識(shí)別出來(lái)。由圖4還可看到,兩條虛線關(guān)于中間直線也是大致對(duì)稱的。由于兩條虛線與中間直線的差值相近,同時(shí)為便于計(jì)算,故總結(jié)出一組對(duì)應(yīng)的數(shù)據(jù)m(k)與n(k),k=1,…,24,并稱之為邊緣對(duì)比閾值,即:
圖4一次記錄數(shù)據(jù)的圖形顯示
Fig.4Graphicaldisplayforthedatarecord
(4)
式中:m(k)與n(k)為一一對(duì)應(yīng)數(shù)據(jù),且m(k)對(duì)應(yīng)點(diǎn)的數(shù)值均小于n(k)對(duì)應(yīng)點(diǎn)的數(shù)值。也就是說(shuō),m(k)相當(dāng)于圖4中的直線,n(k)相當(dāng)于圖4中的虛線。其含義是:對(duì)于灰度m(k),若其他灰度要與其區(qū)分開來(lái),則必須大于n(k)。之所以不考慮比m(k)小的灰度,是因?yàn)閷?duì)于要比較的兩個(gè)灰度中總可以選取較小的那個(gè)作為對(duì)應(yīng)的基準(zhǔn)m(k)值。對(duì)于兩個(gè)待比較的灰度值,其區(qū)分步驟如下:
(1)比較得到較小的灰度值v1和較大的灰度值v2。
(2)若v1≥240,則返回值為0,表示不可區(qū)分,否則繼續(xù)步驟3。
(3)若通過k=v1/10得到v1在m(k)對(duì)應(yīng)區(qū)間的索引值,則計(jì)算nT=(n(k+1)-n(k))(v1-m(k))/10+n(k);若v2 對(duì)于兩個(gè)邊緣點(diǎn)(x,y)和(i,j),若它們的邊緣對(duì)比特征magUp(x,y)與magUp(i,j)不能區(qū)分開來(lái),magDown(x,y)與magDown(i,j)也不能區(qū)分開來(lái),則兩個(gè)邊緣點(diǎn)是相似的,否則就不是相似的。 在Canny邊緣檢測(cè)算法中,對(duì)梯度幅值圖像進(jìn)行極大值抑制后會(huì)使用高閾值TH得到高閾值圖像gNH和低閾值TL得到低閾值圖像gNL。gNH中的所有邊緣均標(biāo)記為有效邊緣點(diǎn),對(duì)于gNL中的邊緣點(diǎn)如果和gNH中的邊緣點(diǎn)重合或者在8鄰域內(nèi),則該邊緣點(diǎn)所在的8連通邊緣全部標(biāo)記為有效邊緣點(diǎn),所有的有效邊緣點(diǎn)組成最終檢測(cè)邊緣。由此可見,高低閾值對(duì)于最終檢測(cè)邊緣效果起到?jīng)Q定作用。然而,固定的高低閾值往往不能保證較好的配合效果,從而影響Canny算法的應(yīng)用。 本文提出改進(jìn)的邊緣連接方法是設(shè)置高閾值得到強(qiáng)邊緣圖像,以強(qiáng)邊緣的方向?yàn)閷?dǎo)引,沿著導(dǎo)引方向進(jìn)行連接邊緣,連接時(shí)以邊緣對(duì)比特征為依據(jù),當(dāng)待連接點(diǎn)與當(dāng)前邊緣點(diǎn)相似且兩者的法線夾角小于90°時(shí),該點(diǎn)才可能被連接;當(dāng)待連接點(diǎn)同時(shí)滿足這兩個(gè)條件時(shí),只有兩者法線夾角最小者才被連接,以被連接的點(diǎn)為新的邊緣點(diǎn)執(zhí)行上述迭代操作。具體步驟如下: (1)在gNH中搜索未被搜索過的邊緣點(diǎn)并判斷是否為端點(diǎn),如果是端點(diǎn),則記錄為端點(diǎn)A。端點(diǎn)是一條邊緣的未連接處,定義為8鄰域內(nèi)只有一個(gè)點(diǎn)的邊緣點(diǎn)或者8鄰域內(nèi)有兩個(gè)相鄰點(diǎn)的邊緣點(diǎn)。端點(diǎn)A的8鄰域中離A點(diǎn)最近的點(diǎn)記為B點(diǎn)。圖5為一個(gè)端點(diǎn)示意圖。 (a) (b) (c) (d) 圖5端點(diǎn)示意圖 Fig.5Sketchofendpoints (2)利用端點(diǎn)A的邊緣法線將端點(diǎn)A的8鄰域分為兩部分(見圖5(d)),不包含B點(diǎn)的那部分點(diǎn)作為待檢測(cè)的點(diǎn),另外一部分則忽略。這一步驟的作用在于保證邊緣按當(dāng)前邊緣的大致走勢(shì)連接,這是符合邏輯而非隨意方向的任意連接。在圖5(d)中,虛線假設(shè)為端點(diǎn)A的邊緣法線,則虛線將端點(diǎn)A的8鄰域分成上下兩個(gè)部分,每個(gè)部分含3個(gè)點(diǎn),由于B點(diǎn)在上面,因此只有下面3個(gè)點(diǎn)才能作為待檢測(cè)的連接點(diǎn)。 (3)分別計(jì)算待檢測(cè)連接點(diǎn)的邊緣法線與A點(diǎn)邊緣法線夾角的絕對(duì)值,并將夾角絕對(duì)值命名為法線夾角。若法線夾角小于90°,則繼續(xù)作為待檢測(cè)的連接點(diǎn),否則不再作為待檢測(cè)的連接點(diǎn)。 (4)分別比較待檢測(cè)點(diǎn)與A點(diǎn)的邊緣對(duì)比特征,如果待檢測(cè)點(diǎn)與A點(diǎn)是相似的,則仍然作為待檢測(cè)的連接點(diǎn),否則不再作為待檢測(cè)的連接點(diǎn)。 (5)若已經(jīng)沒有任何待檢測(cè)的連接點(diǎn),則將A點(diǎn)標(biāo)記為已搜索過的點(diǎn)并返回步驟1,否則選取剩下待檢測(cè)點(diǎn)中法線夾角值最小的點(diǎn)作為有效邊緣點(diǎn),然后將A點(diǎn)標(biāo)記為已搜索過的點(diǎn)并返回步驟1。 將改進(jìn)的邊緣連接算法運(yùn)用到Canny算法中,新的Canny算法的基本步驟如下:①用高斯濾波器平滑輸入圖像;②計(jì)算梯度幅值圖像M(x,y)和角度圖像α(x,y);③根據(jù)角度圖像α(x,y)計(jì)算對(duì)比特征圖像magDown(x,y)和magUp(x,y);④對(duì)梯度幅值圖像M(x,y)應(yīng)用非最大抑制;⑤設(shè)置高閾值Th得到強(qiáng)邊緣圖像gNH;⑥對(duì)強(qiáng)邊緣圖像gNH應(yīng)用改進(jìn)的邊緣連接方法連接邊緣。 圖6為原始圖像及其處理過程。選取一幅lena灰度圖像和一幅膠囊缺陷圖像,如圖6(a)、圖6 (b)所示。應(yīng)用不同的梯度算子計(jì)算時(shí),Th的取值是不同的。Th取值原則是保證強(qiáng)邊緣真實(shí)即可,當(dāng)然可以根據(jù)實(shí)際工程需要來(lái)設(shè)置。對(duì)于使用Sobel算子計(jì)算梯度圖像時(shí),Th的取值范圍為50~70,所得到強(qiáng)邊緣圖像如圖6(b)、圖6(e)所示。圖6(c)、圖6(f)分別為兩幅圖的最終邊緣圖。為了便于觀察,基于強(qiáng)邊緣通過連接得到的邊緣點(diǎn)不是標(biāo)記為白色點(diǎn)而是灰色點(diǎn)。由此可看出,改進(jìn)的Canny算法具有很好的邊緣連接能力,高閾值圖像中丟失的許多邊緣,如lena的下巴、帽子頂部、鏡子的內(nèi)輪廓、鏡中的頭發(fā)、模糊的膠囊缺陷邊緣等,均在邊緣連接圖像中得到很好的連接。 (a)原始灰度圖像 (b)強(qiáng)邊緣圖像 (c)最終邊緣圖 (d)膠囊缺陷 (e) 膠囊缺陷強(qiáng)邊緣 (f) 膠囊缺陷最終邊緣 圖6原始圖像及其處理過程 Fig.6Theoriginalimageandprocess 在膠囊缺陷檢測(cè)中,膠囊缺陷的灰度值在同一批次中存在差異,固定的閾值會(huì)出現(xiàn)邊緣間斷或偽邊緣的問題,如缺陷面積、周長(zhǎng)等。而本文提出的Canny改進(jìn)算法,圖6 (e)中中間部分強(qiáng)邊緣點(diǎn)不多,但在圖6(f)中依然連接成很完整的邊緣,這對(duì)于定位圖6(d)中黑色區(qū)域是非常有利的,使得該方法在需要完整邊緣以及準(zhǔn)確定位的場(chǎng)合中有較好的表現(xiàn)。 (1)基于圖像邊緣的本質(zhì)提出邊緣對(duì)比特征,并基于視覺感知實(shí)驗(yàn)得出用于評(píng)價(jià)兩個(gè)灰度是否可以區(qū)分開來(lái)的對(duì)比閾值,將該特征應(yīng)用到Canny算法邊緣連接中,具有很好的邊緣連接能力,且獲取完整干凈的邊緣。 (2)將改進(jìn)的Canny算法運(yùn)用到膠囊缺陷檢測(cè)中,使用Sobel算子計(jì)算梯度圖像時(shí),Th的取值范圍為50~70,既保證了強(qiáng)邊緣的真實(shí),也不需設(shè)置低閾值,從而克服了經(jīng)典Canny算法過于依賴固定高低閾值的缺點(diǎn)。 [1] 汪岳. 基于邊緣檢測(cè)經(jīng)典算法的改進(jìn)研究與實(shí)現(xiàn)[D]. 合肥:安徽大學(xué), 2012. [2] Melin P,Mendoza O,Castillo O.An improved method for edge detection based on interval type-2 fuzzy logic[J]. Expert Systems with Applications, 2010, 37(12): 8527-8535. [3] Zhang Xiaofeng,Zhang Yu,Zheng Ran.Image edge detection method of combining wavelet lift with Canny operator[J]. Procedia Engineering, 2011, 15: 1335-1339. [4] 王小俊, 劉旭敏, 關(guān)永. 基于改進(jìn) Canny 算子的圖像邊緣檢測(cè)算法[J]. 計(jì)算機(jī)工程, 2012, 38(14): 196-198. [5] Wang Bing, Fan Shaosheng. An improved CANNY edge detection algorithm[C]//Computer Science and Engineering, 2009. WCSE’09. Second International Workshop on IEEE, 2009: 497-500. [6] 薛麗霞,李濤,王佐成. 一種自適應(yīng)的 Canny 邊緣檢測(cè)算法[J]. 計(jì)算機(jī)應(yīng)用研究,2010,27(9):3588-3590. [7] 唐路路,張啟燦,胡松. 一種自適應(yīng)閾值的 Canny 邊緣檢測(cè)算法 [J]. 光電工程,2011,38(5): 127-132. [8] 張帆,彭中偉,蒙水金. 基于自適應(yīng)閾值的改進(jìn) Canny 邊緣檢測(cè)方法[J]. 計(jì)算機(jī)應(yīng)用,2012, 32(8): 2296-2298. [9] Tao Sun, Chang Zhigao. An improved canny edge detection algorithm[J]. Applied Mechanics and Materials, 2013, 291-294: 2869-2873. [10]賀賽先,唐艷. 一種基于人類感知的邊緣連接方法[J]. 紅外技術(shù),2005, 27(4): 338-342. [11]王小鵬,王紫婷. 基于視覺感知的雙層次閾值邊緣連接方法[J]. 計(jì)算機(jī)應(yīng)用,2006,26(8):1845-1847. [12]胡媛媛,牛夏牧. 基于視覺閾值的結(jié)構(gòu)相似度圖像質(zhì)量評(píng)價(jià)算法[J]. 深圳大學(xué)學(xué)報(bào):理工版,2010,27 (2):185-191. [13]姚軍財(cái),石俊生,楊衛(wèi)平,等. 人眼對(duì)比度敏感視覺特性及模型研究[J]. 光學(xué)技術(shù),2009,35(3):334-337.2.4 Canny邊緣連接
2.5 改進(jìn)的邊緣連接方法
3 實(shí)例應(yīng)用
4 結(jié)論