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

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

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

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

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

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

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

圖3 RCF網絡結構

表1 VGG16網絡模型感受野和步長

layerconv3_1conv3_2conv3_3pool3conv4_1conv4_2rf size243240446076stride444888

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

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

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

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

圖6 本文算法流程圖
實驗中改進的形態學邊緣檢測算子和圖像融合是在Win10系統下利用MATLAB 2017b編程實現的;RCF網絡模型是在Linux系統caffe框架下對訓練好的VGG16模型進行修改后在標準數據集上訓練得到的。
分別用形態學算法、RCF邊緣檢測模型以及融合這兩種邊緣圖像的方法對唐卡圖像邊緣提取,檢測結果如圖7、圖8所示。

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

(c) 傳統形態學邊緣檢測(d) 改進的形態學邊緣檢測

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

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

(c) 傳統形態學邊緣檢測(d) 改進的形態學邊緣檢測

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

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