劉 千 葛阿雷 史 偉
(寧夏大學(xué)信息工程學(xué)院 寧夏 銀川 750021)
邊緣檢測是圖像處理和計算機(jī)視覺的基本問題,通過識別數(shù)字圖像中亮度變化明顯的點,來捕捉圖像屬性中的顯著變化,包括深度上的不連續(xù)、表面方向的不連續(xù)、物質(zhì)屬性變化、和場景照明變化等[4]。圖像邊緣中含有大量有價值的信息,所以,圖像邊緣檢測在圖像分析、圖像分割和計算機(jī)視覺中占據(jù)著重要的地位[5]。
傳統(tǒng)的邊緣檢測算法計算簡單,容易實現(xiàn),實時性較好,如Canny算子、Roberts算子、Laplacian算子、Sobel算子、Prewitt算子和LOG算子[6]等,然而精確度較低,很難適用于信息復(fù)雜的唐卡圖像。數(shù)學(xué)形態(tài)學(xué)邊緣檢測算法是基于集合的運算,具有非線性特征,它的邊緣檢測方法提取的邊緣光滑連續(xù),且實時性較強(qiáng),但是對于復(fù)雜的邊緣檢測時會存在模糊不清晰的現(xiàn)象[1]。近年來,卷積神經(jīng)網(wǎng)絡(luò)(CNN)已經(jīng)成為計算機(jī)視覺領(lǐng)域的主流,它極大地提高了圖像分類、目標(biāo)檢測和語義分割等各種任務(wù)的技術(shù)水平。由于CNN具有很強(qiáng)的自動學(xué)習(xí)自然圖像高層次表示的能力,人們越來越傾向于通過訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型進(jìn)行邊緣檢測[7]。用CNN的方法進(jìn)行邊緣檢測更容易只將圖像外輪廓提取出來,去掉繁雜的內(nèi)部細(xì)節(jié)。
為了得到更加清晰連續(xù)的圖像邊緣,本文提出了數(shù)學(xué)形態(tài)學(xué)和RCF(Richer Convolutional Features)網(wǎng)絡(luò)模型[3]相結(jié)合的邊緣檢測。該方法首先用形態(tài)學(xué)方法對原圖像進(jìn)行邊緣檢測;然后,用訓(xùn)練好的RCF網(wǎng)絡(luò)模型對原圖像邊緣提取;最后,對用兩種方法得出的邊緣圖像進(jìn)行基于小波變換的融合,得到更加完整清晰的圖像邊緣。
形態(tài)學(xué)邊緣檢測算子主要是由結(jié)構(gòu)元素對圖像進(jìn)行膨脹、腐蝕或開啟、閉合之后再做差運算得到的[8]。
(1) 腐蝕與膨脹:
設(shè)f(x,y)為原圖像,g(i,j)為結(jié)構(gòu)元素,⊕代表膨脹運算符,Θ代表腐蝕運算符,Df和Dg分別為f和g的定義域,則f與g膨脹和腐蝕運算可分別定義為[9]:
f(x,y)⊕g(i,j)=max{f(x-i,y-j)+g(i,j)|
(x-i,y-j)∈Df,(i,j)∈Dg}
(1)
f(x,y)Θg(i,j)=min{f(x+i,y+j)-g(i,j)|
(x+i,y+j)∈Df,(i,j)∈Dg}
(2)
(2) 開啟與閉合:
° 表示開運算符,·表示閉運算符,開閉運算定義[3]:
f°g=(f⊕g)Θg
(3)
f·g=(f⊕g)Θg
(4)
設(shè)E表示邊緣圖像,多結(jié)構(gòu)抗噪形態(tài)學(xué)邊緣檢測算子的邊緣定義為[10]:

(5)
用簡單的形態(tài)學(xué)算法得到的邊緣圖像實用性較差,抗噪能力低,下面對此算法改進(jìn)。
(1) 算子的改進(jìn)及結(jié)構(gòu)元素的選取:
設(shè)f(x,y)為原圖像,g1、g2、g3i為結(jié)構(gòu)元素,則對形態(tài)學(xué)邊緣檢測算子的改進(jìn)如下:
Ei(f)=[(f·g1°g1)·g2]⊕g3i-[(f·g1)°g2]Θg3i
(6)
式中:g1、g2分別為十字形和菱形結(jié)構(gòu)元素[1],如下所示:

這4個結(jié)構(gòu)元素包含了g3中的所有線條的走向,使得圖像各個方向的邊緣都可以被檢測到,保證了邊緣的完整化[9]。
(2) 計算歐式距離:
本文采用上述四個方向的結(jié)構(gòu)元素,通過計算原圖像各像素點四個方向的歐氏距離,實現(xiàn)不同結(jié)構(gòu)元素對權(quán)值的自適應(yīng)選取[1],具體方法如下。
如圖1所示為所選取的3×3圖像子塊模型,中心點P1與其臨近像素點的灰度距離公式表示為:
Om=|Pm-P1|m=2,3,…,9
(7)

圖1 3×3的圖像子塊
由式(7)可知:臨近像素點的灰度距離越大,灰度突變越大,根據(jù)中心像素點與其鄰近像素點之間的灰度距離可以表示邊緣的方向性[1]。設(shè)目標(biāo)區(qū)域的中心點為P1(i,j)、O1、O2、O3、O4分別表示水平、垂直、45°、135°四個方向邊緣的歐氏距離,它們的計算公式如下:
(8)
(9)
(10)
(11)
那么,對于一幅M×N的整體圖像來說,各方向邊緣的歐氏距離公式為:
(12)
(3) 計算權(quán)值和圖像邊緣:
根據(jù)式(12)計算出四個方向的歐氏距離,其對應(yīng)方向為邊界曲線最可能的走向,實驗測試圖像邊界走向與結(jié)構(gòu)元素方向的組合后,得出選取與圖像邊緣走向垂直方向的結(jié)構(gòu)元素對這個區(qū)域檢測效果最好[1]。

(13)
最后把式(6)和式(13)代入式(14)中,則各個方向邊緣的加權(quán)和為形態(tài)學(xué)方法得到的邊緣:
(14)
(4) 算法步驟:
自適應(yīng)數(shù)學(xué)形態(tài)學(xué)圖像邊緣檢測算法具體步驟如下:
① 用結(jié)構(gòu)元素g1、g2對加入椒鹽噪聲的圖像去噪;
② 用歐氏距離計算出原圖像各像素點四個方向的權(quán)值;
③ 用式(6)對去噪后的圖像進(jìn)行四個方向的邊緣檢測;
④ 根據(jù)式(14)求圖像各方向的邊緣加權(quán)和,得到完整的圖像邊緣。
傳統(tǒng)方法通過提取局部的亮度、顏色、梯度、紋理或其他人工設(shè)計特征對圖像的像素點進(jìn)行邊緣或非邊緣的分類。但是圖像邊緣通常具有豐富的語義信息,僅通過局部線索難以得到令人滿意的結(jié)果。
卷積神經(jīng)網(wǎng)絡(luò)通常能夠提取高層次信息,為了查看不同卷積層在邊緣檢測中獲得的信息,我們使用VGG16網(wǎng)絡(luò)[11]生成中間層的邊輸出,該網(wǎng)絡(luò)有5個階段。如圖2所示,顯示了第二階段和第三階段的卷積層輸出。我們發(fā)現(xiàn)隨著網(wǎng)絡(luò)模型階段的增加,卷積特征逐漸變得粗化,中間層包含大量有用的細(xì)節(jié),因此充分地利用CNN提取的所有層的特征。

(a) 原圖 (b) conv2_1 (c) conv2_2

(d) conv3_1 (e) conv3_2 (f) conv3_3圖2 卷積層輸出
近期,許多應(yīng)用CNN的邊緣檢測方法被提出。Ganin等通過CNN和最近鄰搜索,提出N4-Fields[12]。Shen將輪廓數(shù)據(jù)分成子類,并通過學(xué)習(xí)模型參數(shù)在子類上擬合,提出DeepContour[13]。Hwang等將輪廓檢測作為逐像素的分類問題,利用DenseNet對每個像素點提取特征,然后用SVM進(jìn)行分類,提出Pixel-wise Deep Learning for Contour Detection(CSCNN)[14]。Xie等提出Holistically-Nested Edge Detection (HED),實現(xiàn)圖像到圖像的訓(xùn)練和預(yù)測,其網(wǎng)絡(luò)模型是以VGG16為基礎(chǔ),通過一個內(nèi)核大小為1的conv層、一個deconv層和一個softmax層,實現(xiàn)多個side output,并將這些輸出融合得到邊緣檢測結(jié)果[15]。
綜上,這些基于CNN的方法大多只利用了每個卷積階段的最后一層的特征,由于不同卷積層之間的信息是可以互補(bǔ)的,所以存在信息利用不充分的問題。本文應(yīng)用的RCF是一種全卷積網(wǎng)絡(luò)高效地利用了每一個CNN層的特征來完成邊緣檢測。
2.2.1RCF邊緣檢測及網(wǎng)絡(luò)結(jié)構(gòu)
RCF網(wǎng)絡(luò)結(jié)構(gòu)是通過修改VGG16網(wǎng)絡(luò)結(jié)構(gòu)[11]得到的,由13個conv層和3個完全連接層組成,它的conv層分為5個階段,在每個階段之后連接一個池化層。每個conv層獲得的有用信息隨著感受野大小的增加而變得更粗。圖3為RCF網(wǎng)絡(luò)結(jié)構(gòu)[3],表1為VGG16網(wǎng)絡(luò)的詳細(xì)感受野和步長[3]。

圖3 RCF網(wǎng)絡(luò)結(jié)構(gòu)

表1 VGG16網(wǎng)絡(luò)模型感受野和步長

layerconv3_1conv3_2conv3_3pool3conv4_1conv4_2rf size243240446076stride444888

layerconv4_3pool4conv5_1conv5_2conv5_3pool5rf size92100132164196212stride81616161632
RCF網(wǎng)絡(luò)結(jié)構(gòu)與VGG16相比,進(jìn)行修改如下:
(1) 去掉所有的全連接層和第五池化層。去除所有的全連接層主要目的是得到全卷積網(wǎng)絡(luò),存在第五池化層會使步幅增加兩倍,不利于圖像邊緣定位。
(2) 對VGG16中的每個卷積層連接一個卷積核大小為1×1×21的卷積層,每個stage中所有的1×1×21卷積輸出進(jìn)行元素相加(eltwise layer),得到一個復(fù)合特征。
(3) 每個eltwise layer后面加一個deconv layer用于放大特征圖尺寸。
(4) 在每個deconv layer后面連接一個cross-entropy loss/sigmoid layer。
(5) 所有的deconv layer輸出進(jìn)行連接,隨后使用一個1×1 conv layer進(jìn)行特征圖融合,最后使用一個cross-entropy loss/sigmoid layer得到輸出。
由于VGG16中conv層的大小不同,它可以學(xué)習(xí)包括底層和對象層在內(nèi)的多尺度信息,這些信息有助于邊緣檢測。圖4顯示了唐卡圖像在RCF模型中從上到下每個階段的輸出。RCF模型結(jié)合了所有可訪問的conv層使用了更豐富的特性,因此它能夠?qū)崿F(xiàn)更高的精度。

圖4 RCF模型每階段輸出
2.2.2損失函數(shù)
RCF網(wǎng)絡(luò)模型在設(shè)計損失函數(shù)時,首先將數(shù)據(jù)集中的每張圖像,根據(jù)人工標(biāo)記結(jié)果,產(chǎn)生一張邊緣概率圖,范圍從0到1。0表示在這個像素上沒有人標(biāo)記為邊緣點,1表示在這個像素上所有人都標(biāo)記為邊緣點。概率高于η的像素點為正樣品,概率等于0的像素點為負(fù)樣本。像素邊緣概率少于η的點為有爭議點不計入損失函數(shù)的計算中。
損失函數(shù)為:
(15)

圖像融合是將相同對象的兩幅或多幅圖像合成為一幅圖像,從而獲取到對同一場景的更為精確、更為連續(xù)、更為全面的圖像描述[16]。
本實驗采用離散小波變換DWT(Discrete Wavelet Transform)[17]融合用改進(jìn)的形態(tài)學(xué)邊緣檢測算子和RCF邊緣檢測模型兩種方法得到的邊緣圖像。圖像融合的基本流程如圖5所示。

圖5 圖像融合流程圖
基于以上改進(jìn)的形態(tài)學(xué)邊緣檢測算子和RCF邊緣檢測模型,本文采用三層二維DWT[17]進(jìn)行圖像融合,具體算法流程如圖6所示。

圖6 本文算法流程圖
實驗中改進(jìn)的形態(tài)學(xué)邊緣檢測算子和圖像融合是在Win10系統(tǒng)下利用MATLAB 2017b編程實現(xiàn)的;RCF網(wǎng)絡(luò)模型是在Linux系統(tǒng)caffe框架下對訓(xùn)練好的VGG16模型進(jìn)行修改后在標(biāo)準(zhǔn)數(shù)據(jù)集上訓(xùn)練得到的。
分別用形態(tài)學(xué)算法、RCF邊緣檢測模型以及融合這兩種邊緣圖像的方法對唐卡圖像邊緣提取,檢測結(jié)果如圖7、圖8所示。

(a) 原圖像 (b) canny算子邊緣檢測

(c) 傳統(tǒng)形態(tài)學(xué)邊緣檢測(d) 改進(jìn)的形態(tài)學(xué)邊緣檢測

(e) rcf邊緣檢測 (f) 本文中方法邊緣檢測圖7 唐卡圖像邊緣檢測

(a) 原圖像 (b) canny算子邊緣檢測

(c) 傳統(tǒng)形態(tài)學(xué)邊緣檢測(d) 改進(jìn)的形態(tài)學(xué)邊緣檢測

(e) rcf邊緣檢測 (f) 本文中方法邊緣檢測圖8 唐卡阿彌陀佛往生圖像邊緣檢測
實驗表明,相比單個的形態(tài)學(xué)算法和RCF邊緣檢測[3]模型,本文的方法提取出圖像的邊緣更加完整清晰,目標(biāo)物體的內(nèi)部和外部的輪廓都比較完整,同時去掉了更多無效的細(xì)節(jié)信息,總體更符合人類的視覺認(rèn)知,更有利于唐卡圖像后續(xù)的分析研究。
本文應(yīng)用BSDS500[19]作為數(shù)據(jù)集。BSDS500是一種廣泛應(yīng)用于邊緣檢測的數(shù)據(jù)集。它由200個訓(xùn)練圖像、100個驗證圖像和200個測試圖像組成[18]。我們利用訓(xùn)練集和驗證集優(yōu)化網(wǎng)絡(luò)模型,并利用測試集評估網(wǎng)絡(luò)模型。
為了從客觀上說明不同邊緣檢測所表現(xiàn)出的效果,本文使用峰值信噪比PSNR[20](Peak Signal to Noise Ratio)和邊緣保持度EPI[21](Edge Preservation index)作為評價指標(biāo)來衡量邊緣檢測效率。
(1) 峰值信噪比定義為:
PSNR=10×log(2552/MSE)
(16)
其中255是8 bits表示法的最大值(Peak),MSE表示原圖像與處理圖像之間均方誤差MSE[20](Mean Square Error):
(17)
式中:m、n表示圖像的尺寸,I、K分別表示原圖像和處理后的圖像,PSNR值越大,說明噪聲含量越小。給數(shù)據(jù)集BSDS500[18]加入5%椒鹽噪聲以增強(qiáng)RCF模型的抵抗噪的能力。
(2) 邊緣保持度定義為:
式中:Ps為用本文方法提取的邊緣圖像,Po為標(biāo)準(zhǔn)數(shù)據(jù)集人工標(biāo)注的邊緣圖像,i為行數(shù),j為列數(shù)。EPI的值越大,說明邊緣信息保留的越豐富全面。唐卡圖像EPI值和PSNR值如表2所示。

表2 五種算法關(guān)于指標(biāo)EPI和PSNR的比較
對于改進(jìn)的形態(tài)學(xué)邊緣檢測算法和RCF邊緣檢測[3]存在的不足,本文給出了一種基于改進(jìn)的形態(tài)學(xué)與RCF邊緣檢測[3]相結(jié)合的邊緣檢測算法。該算法將分別用改進(jìn)的形態(tài)學(xué)算法和RCF網(wǎng)絡(luò)模型提取的邊緣圖像進(jìn)行基于小波變換的融合得到新的邊緣。既提高了圖像邊緣的平滑性,又提取到了更清晰完整的輪廓,同時還獲得了更強(qiáng)的抗噪聲能力,較之前的方法更加符合人類的視覺認(rèn)知,有利于后續(xù)研究。