胡慧琳,舒忠
(荊楚理工學院,荊門448000)
圖像邊緣特征提取的實現算法主要包括三類:微分算子法(如:一階微分法中的Roberts 算子、Sobel 算子、Prewitt 算子和Kriseh 算子,二階微分法中的Laplacan 算子、Marr-Hildreth 算子,等等)、曲面擬合法(如:Prewitt 算子等)和一階導數法(如:Canny 算子等)。以上算子實現的關鍵前提有三點:一是以上算法所描述的邊緣特征的實質是灰度值;二是通過圖像梯度幅值來表示圖像的邊緣特征;三是邊緣特征圖的獲取通過二值化閾值選取控制。無論采用何種方法實現圖像邊緣特征提取,圖像在進行二值化轉換時的閾值準確性至關重要。
圖像邊緣檢測技術的應用,最早起始于上世紀50年代末期,在進行圖像增強的相關實驗中,由于圖像邊緣的部分的灰度值變化非常明顯,因此,可以通過梯度來描述圖像變換后灰度值的變化幅度,從而形成了最早、最原始的一階微分算子[1-2]。后續以邊緣定位精準確提高為目標的研究,又出現了以二階導數為運算手段的邊緣檢測算子[3]。由于圖像中噪聲和邊緣信息具備相似性,通過引入噪聲和邊緣信息分離的濾波器,推出了一系列非常典型的邊緣檢測算子,如:LOG 算子(屬于二階微分邊緣檢測,通過二維高斯函數去噪與二階導數結合運算,不考慮方向性)和Canny 算子(屬于一階偏導邊緣檢測,通過有限差分計算梯度幅值和方向)等[4]。至目前,基于灰度值變化特征的圖像邊緣檢測技術應用,主要是依據多尺度分析理論,通過時域和頻域結合(以小波變換為基礎),并將這些圖像濾波原理應用于一階偏導或二階偏導運算中,提出了多尺度變換的邊緣檢測算法[5-6]。
圖像邊緣特征提取必須在準確檢測邊緣的基礎上實現,檢測到的邊緣信息通過梯度幅值表示,對于所獲取的邊緣信息通常使用二值圖像進行描述,獲取二值圖像的關鍵是準確設定閾值。閾值設定的準確與否,通過邊緣信息的完整性和正確性判定。其中,完整性是指檢測到的邊緣信息沒有遺漏,正確性是指檢測到的邊緣信息準確無誤,正確性的主要表現是對圖像中的噪聲進行隔離。
圖像邊緣檢測的閾值設定方法主要包括兩大類:一是全局閾值法,二是局部閾值法。全局閾值法實現主要依據的思想是:圖像中屬于邊緣信息的梯度幅值大于其他信息的梯度幅值,所確定的閾值首先是沒有充分考慮到噪聲,更重要的是忽視了對圖像細節的處理,對圖像邊緣信息的完整性和正確性描述并不理想。局部閾值法的提出主要是對全局閾值法中存在的細節處理問題進行改進,通過對圖像進行分塊,設定不固定閾值進行分類處理,但這種方法更容易將噪聲信息定義為圖像邊緣,同時,圖像分塊規則對邊緣提取也會產生一定的影響。在對圖像梯度幅值進行表示時,最能夠確保梯度幅值統計準確性的就是直方圖,因此,可以通過圖像灰度直方圖進行閾值設定,這種方法的關鍵同樣需要考慮對圖像中的噪聲進行隔離。
本文的研究,主要是針對圖像一維直方圖中對邊緣信息進行表示過于籠統,有效邊緣信息區分度較低的問題,通過構建圖像二維直方圖,實現對圖像中非邊緣信息的隔離,減輕圖像邊緣檢測閾值設定的難度,提高閾值作用的準確度,并應用于Canny 算子中,完成高效、精確的圖像邊緣特征提取算法,為后續的圖像精準認別處理提供保障。研究的主要內容圍繞最佳閾值設定展開。
以直方圖分析為基礎的圖像邊緣檢與邊緣特征提取,其閾值設定方法通常采用多算法融合的方式進行,例如:Otsu 算法與Canny 算子結合應用[7]、二維Otsu 模型的提出[8-9]等,這些算法能夠在一定程度上提高準確度,但是最佳閾值的最終確定需要通過多次實驗測試。
在已有的直方圖閾值設定算法中,針對不同類型的圖像,其梯度幅值相似度的區分能力并不高,特別是對圖像邊緣信息中一些梯度幅值偏小的信息,就很難檢測到。另外,這些算法需要滿足兩個條件:一是邊緣信息的界定需要采用啟發式機制進行判定,算法復雜,不易確定邊緣信息;二是圖像邊緣檢測前需要進行高要求的處理,特別是邊緣輪廓的平滑度處理。常用的直方圖閾值設定算法主要有Otsu 算法、MSA 算法和Rosin 算法等。
Otsu 算法實現原理[10]:以8 位灰度圖像為例,其全像素的灰度值取值范圍為[0,255],在該取值范圍內找到一個閾值T,將圖像的灰度值的分布分成兩個類,分別用P1和P2表示,其中,P1的灰度值取值范圍為[0,T],P2的取值范圍為[T+1,255],則P1和P2所占圖像全部像素的個數A1和A2分別為:
公式(1)中的H(r)表示圖像的直方圖。
P1和P2兩類的平均灰度值B1和B2分別為:

整個圖像的平均灰度值C 為:

則P1和P2兩類的內間方差F(T)為:

當計算的內間方差F(T)為最大值時,則可以將其定義為最佳閾值T。
由于以上Otsu 算法是基于一維Otsu 算法,當圖像中出現噪聲時,所得到的歸一化直方圖H(r),對圖像灰度值分布的描述并不準確,因此,出現了二維Otsu 算法解決噪聲影響問題。
二維Otsu 算法實現原理:同樣以8 位灰度圖像為例,設定圖像維度為M×N(橫向像素個數×縱向像素個數),灰度值取值范圍為[0,255],設f1(x,y)為圖像某一個空間坐標像素點的灰度值,f2(x,y)為包括該像素點在內的全部鄰域像素點的平均灰度值,則有:

其中,ceil[]表示運算結果向上取整。
通過公式(4),可以構建一個基于某個像素點灰度值(橫向,設定用i 表示)和該像素點鄰域平均灰度值(縱向,設定用j 表示)的直方圖,由于該直方圖中空間參量對應了二個灰度值參量,因此,可以視為二維直方圖。如果使用i 和j 分別表示二個灰度值參量,則直方圖中某一個點就可定義為f(i,j),可以用于表示該點出現的頻率,其中,0 ≤i,j ≤255,是閾值確定的關鍵條件。其閾值選取數學模型的含義可詳見圖1所示。
在圖1 中,二維Otsu 算法將圖像的組成信息分割為4 個區域,其中,區域1 表示圖像背景部分(也就非主體部分的畫面)的灰度值分布區域,區域2 表示圖像主體部分的灰度值分布區域,區域3 表示圖像邊緣細節的灰度值分布區域,區域4 表示圖像噪聲的灰度值分布區域,4 個區域的交點T(i1,j1)即可確定為閾值。該算法在進行灰度值分布統計時,對區域3 和區域4 部分的像素點統計將會大量忽略,對于多數圖像閾值的確定并不實用。

圖1 二維Otsu算法圖像信息分布結構圖
圖像第2 次迭代矢量表示為Z2(I),圖像維度為,通過次迭代
MSA 算法的閾值選取,首先對圖像矢量化后計算直方圖,然后通過k 次重復迭代計算直方圖的分段灰度最大值,最后采用平均最大值法確定閾值[11]。
以8 位灰度圖像為例,圖像的第1 次迭代矢量表示為Z1(I),定義I 為圖像M×M 維的區域部分,其像素灰度值為i,i ∈{0,1,2,…,255},直方圖表示為HZ(1)(i)。后,可以得到矢量圖像n∈k,其直方圖可表示為。此時,通過公式計算出Pn(i)的最大值,則直方圖中的兩個分段灰度最大值T1=arg max(Pn(i))和T2=arg((Pn(i))=0),其最佳閾值為圖2 所示為MSA 算法的最佳閾值選取圖示。

圖2 MSA算法的最佳閾值選取圖示
MSA 算法可以實現圖像中主體部分與背景部分的分離,并融合了圖像邊緣細節平滑度處理的機制,但對平滑度處理的要求過高,其實用性并不強。
一維Rosin 算法的主要思想是:以灰度值出現的頻率和灰度值大小構建圖像灰度分析坐標,也就是圖像的直方圖,在平面直方圖中,將灰度值出現頻率高的坐標點與灰度值出現頻率低的坐標點通過直線連接,計算出直線到直方圖曲線的最大距離,求得最大距離對應于直方圖曲線上的點坐標,該點對應的灰度值即為最佳閾值。一維Rosin 算法的最佳閾值選取方法詳見圖3 所示。

圖3 一維Rosin算法的最佳閾值選取方法圖示
一維Rosin 算法對圖像像素之間存在的關聯要素沒有進行較好地描述,直方圖中對最大梯度幅值定義不準,其閾值選取時的偏差較大。
常用的邊緣檢測算法包括:Sobel 算子、Roberts 算子、Prewitt 算子、LOG 算子和Canny 算子等。近幾年來,還出現了很多改進的檢測算法[12-13]。在眾多的算法中,文獻[14]對Canny 算子的優勢進行了證明。
Canny 算子實現圖像邊緣檢測的基本流程是:高斯濾波平滑處理邊緣→一階偏導計算灰梯度幅值及方向→保留最大值機制的灰梯度幅值篩選剔除(目的是強化邊緣細節)→通過高閾值與低閾值結合實現邊緣連接→二值化輸出圖像。
由表1可以看出浙江省的觀光采摘節慶具有較明顯的淡旺季之分,從旺季到淡季的分布依次為夏季、春季、秋季、冬季,說明果樹資源這一因素對浙江省的觀光采摘節的發展仍起著關鍵作用。為了使觀光采摘節慶的淡季轉旺,旺季更加具有競爭力,有必要分析影響觀光采摘節的關鍵因素即果樹資源的作用機制,即不同主導果樹采摘節的數量和樹種種類在四季的分布。
本文提出的算法中,將以Canny 算子為基礎,通過后文介紹的構建Rosin 二維直方圖確定閾值,實現圖像邊緣的提取。
通過前文對圖像邊緣檢測閾值設定常用方法進行分析,參照地二維Otsu 直方圖算法的實現原理,在一維直方圖Rosin 算法的基礎上,通過構建二維直方圖實現閾值設定。算法的關鍵包括兩個方面:一是構建二維直方圖,二是確定閾值的選取方法。
在二維Otsu 算法的基礎上,首先將鄰域以a×a 的維度進行定義,在M×N 維8 位的圖像f(x,y)中,如果將某個像素點的灰度值設定為f1(x,y),則該像素點的鄰域平均灰度值f2(x,y)可以定義為:

在構建的直方圖中,是以單像素點灰度值、單像素點鄰域平均灰度值和某個灰度值出現的頻率為參數的直方圖,其中包含的三個參數對于后續的閾值運算將會造成較大的麻煩,因此,需要進行參數合并處理。由于圖像中某個像素點的灰度值和該像素點的鄰域平均灰度值的取值范圍都為[0,255],因此,在構建直方圖時,可以將單像素點灰度值、單像素點鄰域平均灰度值進行合并構建數學模型,可以將其定義為f(i,j)(x,y),0 ≤i,j ≤255。
依據一維Rosin 算法原理,在圖4 中,最高的峰值點為某個(或某些)像素灰度值和該像素領域平均灰度值出現的次數最多的像素點,最高及附近的峰值點基本上可以較好地描述整個圖像的邊緣特征,以最高的峰值點為起點,向各個方向的最低峰值點畫直線,找到各個方向到對應直線的最大距離所對應的點,這些點對應的灰度值即為可用閾值。單一地從這些點中選取對應的灰度值作為閾值,對于整幅圖像而言,并不具備代表性,因此,應通過統計后取平均值的方法確定閾值。

在公式(7)中,Qd為各方向對應閾值在直方圖中出現的次數,n 為可用閾值的總個數,各參數必須滿足這一條件,則有:

在公式(8)中,f(i,j)n(x,y)表示全部可用閾值,則T 可以定義為最高閾值,而最低閾值可以定義為0.4T。通過該閾值分割后的圖像可以表示為:

針對圖像f(x,y),本文提出算法的圖像邊緣檢測流程是:
(1)設計高斯濾波器,進行圖像邊緣平滑處理。其關鍵是計算高斯系數K,,其中,σ為高斯函數標準差。必須依據高斯函數標準差,確定高斯濾波器的變換矩陣。
(2)將圖像轉換為矩陣表示,使用高斯變換矩陣計算灰梯度幅值及方向。定義圖像中的像素點坐標為(i,j),則從x 和y 兩個方向進行一階偏導計算的偏導數為Px[i,j]和Py[i,j],則灰梯度幅值N[i,j]和方向θ[i,j]分別為:

(3)沿梯度方向,對8 鄰域內的梯度幅值進行比較,找出灰度極大值。計算梯度幅值可以采用線性插值方式實現,只要找到灰度極大值即可。
(4)采用Rosin 二維直方圖算法確定高閾值和低閾值,并通過遞歸跟蹤算法找出全部邊緣實現連接。
選取三幅圖像進行MATLAB 仿真實驗,在閾值確定方面,分別使用二維Otsu 算法、MSA 算法和本文提出算法,并結合應用Canny 算子對三幅原稿圖像進行邊緣特征提取,然后以高、低閾值檢測結果與運算時間兩個參數為客觀評價依據,對本文提出的算法可行性和優良性進行評價。在使用本文算法進行邊緣檢測時,需要完成對三幅實驗圖像進行二維Rosin 直方圖構建,其直方圖見圖4 所示,通過三種方法進行邊緣特征提取的測試結果如圖5 所示,表1 為三種邊緣特征提取算法的高、低閾值檢測結果對比表,表2 為三種邊緣特征提取算法的運算時間對比表。

圖4 三幅實驗圖像的二維Rosin直方圖


圖5 三種算法提取的邊緣效果圖

表1 高、低閾值檢測結果對比表

表2 三種邊緣特征提取算法的運算時間對比表
以上實驗比較結果可以說明:二維Otsu 算法閾值的確定受到背景部分的影響較大,邊緣丟失最為嚴重;MSA 算法閾值的確定受到背景部分的影響較小,邊緣丟失不嚴重,且包含了少量非邊緣信息;本文算法閾值的確定受到背景部分的影響程度與MSA 算法相似,但邊緣丟失并不嚴重,邊緣的連接性較好。三種算法的運算時間基本相似,運行總體偏慢的主要原因是都采用了多算子融合的算法,但本文算法的運算效率稍占優勢。
本文針對基于直方圖閾值分割中存在的問題進行分析,以二維直方圖構建實現閾值確認為主要研究方向,提出了基于Rosin 算法與Canny 算子結合的圖像邊緣特征提取算法。研究中發現:①基于一維直方圖閾值設定的方法,基本已不能適用于圖像邊緣提取;②在已有的基于二維直方圖閾值設定方法中,對圖像邊緣的完整形成和圖像噪聲的劃分并沒有特別大的作用;③采用Rosin 算法確定閾值更易于實現,且具有較強的實用性;④基于Rosin 算法的二維直方圖構建擴大了閾值選取的參考范圍,較好地兼容了局部與全局的因素;⑤像素灰度值與像素鄰域平均灰度值融合、閾值權重三個參量是閾值準確選取的關鍵;⑥Rosin 算法與Canny 算子同樣具備較好的融合性。通過MATLAB 仿真實驗的結果也表明了本文提出算法對閾值的選取準確,且在運算效率、易行性和實用性方面具有較大的優勢。