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