張小鳳,劉向陽
(河海大學 理學院,江蘇 南京 211100)
圖像分割是指將圖像分割成一些互不重疊的區域,各區域內部具有相同或相近的某些特定屬性,而不同區域之間的屬性則相差明顯,其實質就是按照像素的屬性進行聚類的過程[1-2]。圖像分割是圖像處理與計算機視覺領域的基本技術之一,它是圖像分析和模式識別的重要組成部分,其目的是為了將圖像中人們所感興趣的部分提取出來,為后續處理分析打下基礎[3]。因為聚類圖像分割方法是一種無監督的機器學習算法,所以在圖像分割中應用廣泛。
傳統的聚類圖像分割方法有k-means聚類算法[4]、模糊聚類算法[5-6]、基于密度的聚類算法[7]和譜聚類算法[8]等。k-means聚類算法思想簡單,實現方便,但由于其聚類中心的選取具有不確定性,不能得到理想的結果。FCM[9-10]作為模糊聚類算法的代表,有很多優點,但也存在聚類數目的選取以及算法迭代復雜度過高等問題。基于密度的聚類算法聚類速度快且能夠有效處理噪聲點,但當聚類的密度不均勻、聚類間距相差很大時,聚類質量較差,且可實性很差。譜聚類算法只需要數據之間的相似度矩陣,所以對于處理稀疏數據的聚類很有效。它是屬于圖論的范疇,因此不可避免地存在圖論分割算法的缺點,當聚類的維度非常高時,譜聚類的運行速度和最終分割結果都會受到影響。
上述聚類算法都是基于單個像素進行圖像分割的,這樣可能造成圖像分割結果的不穩定性,且有很大的噪音。針對這些不足,提出了基于圖像超像素分析的圖像分割方法。該方法是基于超像素對圖像進行聚類,因為超像素更有利于局部特征的提取與結構信息的表達,并且能夠大幅降低后續處理的計算復雜度[11]。首先利用SLIC算法[12]對圖像生成超像素并用其代替像素作為圖像處理的基本單元[13],然后計算每個超像素的顏色均值,提取超像素的顏色均值、聚類中心的空間位置以及顏色均值的方差作為超像素的特征屬性,再計算兩兩超像素之間的距離,得到超像素的距離矩陣。最后利用基于密度峰值的聚類算法(DPCA)[14]對超像素進行聚類。
超像素[15]是指具有相似顏色、亮度、紋理等特征的像素組成的有一定視覺意義的不規則像素塊,即同一個超像素內的像素具有很大的相似性。它是利用像素之間特征的相似性將像素進行分組,用少量的超像素代表大量的像素來表達圖片特征。而且超像素能捕獲圖像的冗余信息,降低圖像后續處理的復雜度,通常作為圖像處理的預處理步驟。超像素已經成為計算機視覺領域中的重要技術,廣泛應用于圖像分割、圖像分類以及目標跟蹤等圖像分析領域。
簡單的線性迭代聚類算法(SLIC)[12]能生成大小均勻、形狀規則的超像素,且邊界黏連、運算速度和分割質量都優于其他的超像素分割算法。SLIC算法主要是應用k-means生成超像素,首先將彩色圖片轉換為CIELAB顏色空間和空間坐標下的5維特征向量[Labxy]T,用5維特征向量來構造像素的度量標準,然后對像素進行聚類,完成超像素過程。
具體步驟如下:

(2)在種子點的3×3鄰域內,將種子點移到該鄰域內梯度值最小的地方。這樣做的目的是為了避免種子點落在梯度較大的輪廓邊界上,以免影響后續聚類效果。
(3)在每個種子點周圍的鄰域內為每個像素點分配類標簽,對于每個搜索到的像素點,分別計算它到該種子點的距離,將它分配到與其距離最近的類內。重復此步驟直到殘余誤差收斂。這里的距離包括顏色空間和距離空間,搜索范圍為2S×2S,相比k-means算法要計算每個像素之間的距離,SLIC算法很大程度上提高了計算的速度。
距離定義如下:
(1)
其中,dc,ds分別表示顏色距離和空間距離;S表示種子點之間的距離;m表示顏色與空間差異的權重,m越大生成的超像素越緊湊,m越小生成的超像素越不規則,但圖像邊界黏連很好。

將每個超像素看成圖像處理的基本單元[8],計算兩兩超像素之間的歐氏距離dij,形成一個m×m維的矩陣d=(dij)m×m,其中dij定義如下:
(2)
(3)
(4)
dij=d1c+γd1s+αd3
(5)
其中,d1,d1和d3分別表示超像素Ci和Cj之間的顏色距離、中心位置距離和超像素的協方差距離;m為超像素個數;γ為中心位置權重,當γ越大時,距離權重較大,但此時圖像分割越不穩定,可能把不一樣的區域分割在一起,當γ越小時,會把同一個區域分割成多個部分;α為紋理特征權重,當α越大時,圖像的紋理分割得越清晰,可能會把同一個區域分成很多小的部分。文中當γ的取值范圍為[0,1],α取值范圍為[0,0.1]時,分割效果最好。在以下實驗中,將γ,α設置為最佳值。
2014年Alex Rodriguez[14]等提出了基于密度峰值的聚類算法(DPCA)。DPCA的主要思想是計算每個像素的局部密度值ρi和“距離”δi(δi是指與具有更高局部密度點的距離),以尋找聚類中心。聚類中心具有兩個特點:第一,其本身的密度很大,即它被密度均不超過它的鄰居所包圍;第二,與其他局部密度更大的數據點之間的距離相對更大。文中用該算法實現了對超像素的聚類,且詳細過程如下所述。
(6)
其中函數

(7)
參數dc為截斷距離,使得每個數據點的平均鄰居個數約為總數據點的1%~2%。由定義可知,ρi表示S中與Ci之間的歐氏距離小于dc的超像素的個數,定義如下:

(8)
由定義可知,當Ci具有最大局部密度時,δi表示S中與Ci距離最大的超像素與Ci之間的距離;否則,δi表示在所有局部密度大于Ci的超像素中,與Ci距離最小的超像素與Ci之間的距離。
這里把每個超像素看作一個數據點。一般選取局部密度較大的且同時有很大“距離”(與最近鄰的高局部密度的超像素的距離)的數據點為聚類中心。計算綜合考慮ρ值和δ值的一個量,定義為:
γi=ρiδi,i∈IS
(9)

對于非聚類中心數據點的歸類,是按照ρ值從大到小的順序進行遍歷的,它與局部密度比它大的最近鄰的數據點為同一個類簇。

(10)


文中方法主要包括兩步,第一步是利用SLIC算法對圖像進行超像素分割,生成超像素,然后計算每個超像素的顏色均值,提取超像素的特征屬性[liaibixiyidlidaidbi]T,之后再利用式5計算兩兩超像素之間的歐氏距離dij,得到超像素的距離矩陣d=(dij)m×m;第二步是把生成的超像素作為圖像處理的基本單元,利用基于密度峰值的聚類算法對生成的超像素進行聚類。文中算法流程如圖1所示。
首先輸入要分割的圖像、超像素的大小和最終分割類簇,根據圖像的大小計算超像素個數,并在圖像內均勻分配種子點(等于超像素個數),在聚類中心的2S×2S鄰域內利用式1計算每個像素到聚類中心的距離D;然后將每個像素分配到距離其最近的聚類中心所在的類簇中,迭代更新聚類中心的位置,得到超像素,再根據式5計算兩兩超像素之間的距離dij,得到超像素的距離矩陣d=(dij)m×m,并計算每個超像素的局部密度ρi和與局部密度比它大的最近鄰的超像素的距離δi;最后對超像素進行聚類,輸出分割結果。

圖1 文中算法流程
為了驗證該方法的可行性和有效性,選取了一些自然圖像和紋理圖像進行分割實驗,并與SLIC算法和DPCA聚類算法進行了比較。
紋理圖像的分割結果如圖2所示。可以看到,使用SLIC算法進行紋理圖像分割不能把區域分割開來;使用DPCA聚類算法對圖像進行分割會產生很大的噪聲,并且把同一區域分割成很多小的部分。圖(d)是文中算法的分割結果。對于每種對比算法,都將內部參數設置為最佳;對于文中算法,將超像素的大小設置為K=80或K=100,從上至下分別取γ=0.5,α=0.05,γ=0.5,α=0.001。由實驗結果可以看到,文中算法得到的分割結果要優于其他兩種方法。

圖2 紋理圖像的圖像分割結果
自然圖像的圖像分割結果如圖3所示。可以看到,使用SLIC算法進行圖像分割不能把目標物與背景分割開來;圖(c)中,第一張圖DPCA聚類算法未能把目標物分割出來,其他兩張圖的分割結果也都有很大的噪聲;圖(d)是文中算法分割結果。將超像素的大小設置為K=80或K=100,從上至下分別取γ=0.1,α=0.05,γ=0.5,α=0.01,γ=0.1,α=0.01。由仿真實驗結果可看出,文中算法能夠很好地將目標物與背景分割出來,且有相對較好的分割效果。

圖3 自然圖像的圖像分割結果
圖4中,圖(a)、(c)為原始圖像,圖(b)、(d)為文中算法分割結果。從圖(b)可看出,因為目標物的顏色不相似,小狗身上的黑色區域不連通,該算法不能把目標物分割開。而在對超像素進行聚類的過程中,缺乏對空間信息的考慮,所以對這類圖像進行圖像分割時,會把原本應該分割成同一區域的分割成了很多部分,達不到分割的效果。從圖(d)可看出,天空、白云和山脈分割效果較好,而目標物因為與背景顏色很相近,未把它分割出來。這些缺點也是后續要繼續努力的地方。

圖4 文中算法分割結果
針對傳統圖像分割方法基于單個像素對圖像進行分割造成的分割結果不穩定等問題,提出了一種基于圖像超像素分析的圖像分割方法。通過構建超像素的距離矩陣,將SLIC算法與DPCA聚類算法相結合,實現對圖像的分割。實驗結果表明,該方法有較好的分割效果,能夠將目標物和背景清晰地分割開。但該方法也存在一定的不足,未來做進一步改進,把SLIC算法和DPCA聚類算法更好地結合在一起,使分割效果達到更好。