李祥健,朱家明,徐婷宜
(揚州大學 信息工程學院,江蘇 揚州 225127)
自20世紀70年代開始,圖像分割得到了廣大學者的重視,提出了上百種的分割方法,大致可以分為基于邊緣的分割方法、基于區域的分割方法、基于能量泛函的方法、基于特定理論的方法[1]。水平集方法在1988年首次被提出來,用于解決流體力學的問題,它將一個二維演化曲線嵌入到一個三維空間函數中,通過求解這個空間函數的極小值得到最終的演化結果[2]。后來有學者在此基礎上改進了水平集模型,克服了基于邊界水平集模型容易發生邊界泄露、對初始條件苛刻的缺點。
CV模型的提出后,受到了學者的廣泛關注。傳統的水平集由于圖像的離散性以及外界噪聲的影響,經過一段時間演化后會逐漸失去光滑性并出現尖角,因此需要周期性地重新初始化函數。為了解決這個問題,文獻[3]提出在水平集函數中加入能量懲罰項,縮短了水平集演化時間。醫學圖像中往往包含多個目標區域,傳統的單相水平集無法分割,文獻[4]提出多相水平集的方法,用N個水平集函數表示2N個相,但是MRI圖像往往存在灰度不均勻的現象,直接運用多相水平集模型進行分割,很難得到理想的分割結果。因此Wells等人在水平集模型中加入了偏移場矯正,可以較為準確地分割醫學圖像,但算法計算量大,運行時間較長。
醫學圖像存在灰度不均勻和邊界復雜的問題,傳統的雙水平集模型無法達到理想的分割效果,因此本文將Canny算子與水平集模型相結合,首先在Canny算子的基礎上加入梯度模板,用來解決傳統Canny算子無法完全檢測出復雜圖像邊緣的問題;然后將檢測后的圖像融入到雙水平集模型中,通過在水平集模型中加入偏移場來解決灰度不均勻的問題,實驗證明,本文模型既提高了分割的精度,又縮短了分割時間。
Canny算子邊緣檢測根據圖像梯度變化進行檢測[5],將有用的信息從中提取出來。Canny算子在處理圖像邊緣信息時的精確度較高,是一種標準的多級檢測算法,在實際應用中較為廣泛。Canny算子一般包括高斯濾波、計算梯度強度和方向、非極大值抑制以及閾值算法檢測和連接邊緣四個步驟。
高斯濾波主要作用是去除噪聲,一般噪聲都是集中于高頻信號,在分割時會被誤認為是圖像邊緣,所以首先要減少噪聲,才能提高分割時的精確度。圖像中的邊緣會指向不同的方向,所以需要采用不同的方向模板,以保證檢測的準確性,一般采用水平和垂直兩個方向模板。經過模板檢測后圖像的梯度邊緣具有多個像素寬,為得到清晰的梯度圖,通常采用非極大值抑制的方法,將最大的梯度保留下來。最后,通過雙閾值消除噪聲和顏色變化引起的小梯度值。
傳統的Canny算子在計算梯度強度和方向時,一般只從水平和垂直兩個方向進行檢測,梯度幅值和梯度方向如下所示:
(1)
θ=arctan(Gy/Gx)。
(2)
在實際應用中圖像邊緣會指向不同方向,僅從水平和垂直兩個方向檢測,往往會檢測出偽邊緣,為解決這個問題,本文在此基礎上增加了對45°和135°方向的檢測,其梯度幅值和梯度方向如下所示:
(3)
(4)
為比較傳統Canny算子與改進后Canny算子對圖像邊緣檢測的區別,選取了腦部MRI圖像,分別用兩種方法對圖像邊緣進行檢測,檢測結果如圖1所示。
CV模型[6]是由MS模型演化而來,它將MS模型中的分段光滑函數用一個分段常值函數替代,可以將圖像分為目標和背景兩個區域,水平集的能量泛函如下所示:
(5)
式中,c1,c2分別為:
(6)
(7)
傳統的CV模型對單目標和灰度均勻的圖像分割效果較好,但是無法分割多目標的復雜圖像。為了完成對復雜圖像的分割,本文采用DCV模型即雙水平集模型進行分割[7],用兩條水平集函數將圖像分為4個互不重疊的部分Ω1,Ω2,Ω3,Ω4,其能量泛函如下:

(8)
水平集函數在演化過程中,經過一段時間后會失去光滑性,導致計算結果偏離真實情況,因此在演化過程中需要多次重新初始化水平集函數[8],造成演化過程耗時太長,為了避免這個現象,提出在水平集模型中加入能量懲罰項,采用單肼勢函數作為距離規則化項,表達式如下:
(9)
(10)
式(9)是距離規則化項表達式,式(10)有唯一的極小值點x=1,由梯度下降流公式得:
(11)
式(11)是一個擴散方程,擴散率D=φdp(|?φ|),當|?u|趨近于0時,擴散率為負無窮大,會影響數值計算的準確性。為了解決這一問題,本文采用雙肼勢函數來代替單肼勢函數,其表達式為:
(12)
式中,方程的擴散率為有界常數,避免了趨于無窮大的現象,提高了數值解精度。
醫學圖像在成像過程中,由于光照或者成像設備的原因,會導致灰度不均勻的現象[9],也就是偏移場,偏移場的產生會影響對圖像病灶區域的分割,造成診斷結果的不準確性。目前普遍采用的MRI圖像模型如下:
J(x)=b(x)I(x)+n(x),
(13)
式中,J(x)為觀測到的圖像,b(x)表示偏移場,I(x)為真實圖像,n(x)表示噪聲[10]。通常采用一組正交基函數來線性擬合偏移場,或者通過log轉換運算將偏移場線性化[11],然后引入一個高斯核窗口函數來限定鄰域區間,得到最終的能量方程為:
E=λ1?ΩK(y-x)|J(x)-b(x)c1|2H(φ)dxdy+
λ2?ΩK(y-x)|J(x)-b(x)c2|2(1-H(φ))dxdy。
(14)
這種模型中用分段常值來表示圖像灰度,并且認為灰度的不均勻變化是一個平滑的過程,但實際中真實圖像的灰度不是分段常值,而且偏移場也不是連續光滑的[12],這樣會影響最終分割結果的精確度。為了解決這個問題,本文采用一個模糊隸屬度函數來表示含偏移場的圖像,假設圖像中含有n個不同的組織,每一個組織的灰度值為一個常數,那么含偏移場的圖像可以表示為:
(15)

(16)
用Canny算子對圖像進行邊緣檢測,將處理結果G(x,y)代替水平集算法中的原圖I(x,y),并且在水平集距離規則化項中采用雙肼勢函數,最后加入偏移場擬合得到能量方程:
E=E(c1,c2,c3,c4,φ1,φ2)+βp(φ)+J(φ)=
(17)
式中,Mi(φ)表示圖像的4個區域,其中,i=1,2,3,4。
(18)
根據Euler-Lagrange方程求解,得到水平集方程分別為:
((u0-c1)2-(u0-c3)2)Hε(φ2)-
βdiv(dp(|?φ1|)?φ1),
(19)
((u0-c1)2-(u0-c3)2)Hε(φ1)-
βdiv(dp(|?φ2|)?φ2) ,
(20)

(21)
本文算法流程:首先通過改進的Canny算子對圖像進行邊緣檢測,避免了偽邊緣的產生,然后在偏移場模型中加入了模糊隸屬度函數,解決了灰度不均勻問題,最后將Canny算子和偏移場融入到雙水平集模型中,實現了對邊界復雜、灰度不均勻圖像的分割。
實驗環境:Matlab 2014a,Windows7,CORE i5 -3230M,CPU 2.60 GHz,4.00 GRAM。
實驗參數:μ=0.001*2552,Δt=0.01,v=1,水平集函數迭代次數為50次。
為了驗證本文Canny算子改進后對醫學圖像的分割效果,選取了圖2(a)作為原始圖像,其邊界較為簡單,圖2(b)是傳統Canny算子的分割效果圖,圖2(c)中Canny算子用自適應中值濾波替換高斯濾波[13],圖2(d)是本文模型的分割效果圖,從最終的分割效果圖可以看出本文模型優于其他兩種方法,能很好地分割出圖像邊緣。

(a) 醫學圖像
為了驗證本文模型對復雜圖像分割的有效性,選取了圖3(a)作為原圖,分別用三種Canny算子對其進行分割,從最終分割效果圖可以看出,其他兩種算法會出現偽分割現象,而本文模型能準確地分割出邊緣。

(a) 醫學圖像
為了驗證本文模型對于灰度不均勻圖像的分割效果,選取了兩幅信息量不同的醫學圖像。圖4(a)的信息量較小,通過去除偏移場之后能很好地保留原圖像的信息,圖4(d)的信息量較大,從效果圖4(f)可以看出,去除偏移場之后仍然能夠保持原圖像的基本結構信息,證明了本文模型對于灰度不均勻圖像能夠起到很好的分割效果。

(a) 醫學圖像1
為了比較本文與DCV模型以及LGIF模型[14]在分割精度以及運行時間上的區別,選取了圖5(a)作為原始圖像,分別迭代30次之后效果圖如圖5(b)、(c)、(d)所示。

(a) 原始圖像
表1記錄的是分別采用DCV模型、LGIF模型和本文模型迭代30次所需要的時間,可以看出本文模型運行速度要快于其他兩種模型。

表1 3種不同模型運行時間比較Tab.1 Comparison of running time of three different models
為了更加科學直觀地比較三種方法對醫學圖像的分割效果,本文采用JS指標[15]對分割結果進行分析:
(22)
JS的值決定分割結果的好壞,值越大說明算法的分割效果越好。3種不同算法的JS指標如表2所示,可以看出本文模型可以更好地獲取原圖像的信息,并且雙肼勢函數的加入提高了函數數值解的精度,使得曲線演化更加準確,分割的時間也大大縮短。

表2 3種算法分割的JS值Tab.2 JS values divided by three algorithms
針對醫學圖像中灰度不均勻、邊界復雜的問題,本文在Canny算子的基礎上加入45°和135°方向上的梯度模板,解決了傳統Canny算子檢測時出現偽邊緣的問題,提高了對于復雜邊界圖像的檢測能力,在偏移場模型中加入模糊隸屬度函數,提高了分割的準確度,最后在距離規則化項中使用雙肼勢函數,提高了圖像的分割效率。實驗結果表明,本文模型相比于DCV模型以及LGIF模型,在分割速度上更快,而且對于圖像的分割精度也更高。