侯木舟, 陳英皞
(中南大學(xué) 數(shù)學(xué)與統(tǒng)計(jì)學(xué)院, 湖南 長(zhǎng)沙 410083)
圖像分割技術(shù)在機(jī)器人定位、 導(dǎo)航、 圖像壓縮以及目標(biāo)檢測(cè)等領(lǐng)域具有非常重要的意義[1-3]. 基于活動(dòng)輪廓模型的改進(jìn)的圖像分割算法在算法中引入邊界信息, 使算法形式多樣, 結(jié)構(gòu)靈活. 在活動(dòng)輪廓模型的基礎(chǔ)上發(fā)展得到基于水平集方法的圖像分割方法, 將低維曲線嵌入高一維空間中, 并將曲線嵌入的位置作為零水平集的位置, 用連續(xù)曲線表示目標(biāo)物體的邊緣, 根據(jù)閉合曲線演化理論得到曲線的演化方程, 通過求解方程的能量范函最小值驅(qū)動(dòng)曲線演化.在圖像分割時(shí), 最終零水平集截面的位置就是圖像分割的邊緣.
傳統(tǒng)的邊緣檢測(cè)方法先檢測(cè)圖像中的邊緣點(diǎn), 接著將邊緣點(diǎn)連接成閉合曲線, 構(gòu)成圖像的分隔區(qū)域, 常用邊緣檢測(cè)算子來檢查圖像中灰度、 顏色或紋理中不連續(xù)的部分, 常用的邊緣檢測(cè)算子有非微分算子如Canny算子, 一階微分算子如Sobel算子, Robot算子、 Prewitt算子及二階微分算子Laplacian算子、 Log算子等[4-6]. 但是幾種邊緣檢測(cè)算子運(yùn)算速度慢, 精度較低且輪廓過于粗糙.1987年Kass等人提出了活動(dòng)輪廓方法[7-8], 利用圖像自身幾何特征和圖像數(shù)據(jù)的共同驅(qū)動(dòng)以最小化能量函數(shù)的形式向邊界運(yùn)動(dòng). 但這個(gè)模型是基于能量泛函的優(yōu)化問題, 容易陷入局部極小值[9], 對(duì)于初始輪廓的選擇過于依賴. C-V模型是基于圖像中的區(qū)域分割的水平集模型[10], Chan-Vese模型利用能量泛函最小值驅(qū)動(dòng)曲線演化求解圖像分割的結(jié)果. 但C-V模型需要不斷初始化, 使計(jì)算量大大提高, 演化速率較慢[11-12].
在圖像分割中, 當(dāng)圖像像素較小或者物體邊界較為模糊時(shí), 傳統(tǒng)的水平集方法難以快速且準(zhǔn)確地分割出圖像中目標(biāo)物體的輪廓, 本文通過重新定義δε(x)和Hε(x)函數(shù), 改進(jìn)了距離正則化水平集方法, 提高了圖像分割的精度與速度.
設(shè)由y=f(x)表示平面上的曲線, 或隱函數(shù)形式y(tǒng)-f(x)=0, 表示x與y的對(duì)應(yīng)關(guān)系
φ(x,y)=y-f(x)=0.
(1)
給定的一個(gè)初始封閉曲線C, 這條曲線可以沿著其法線方向向內(nèi)或向外演化, 加入時(shí)間變量t后形成隨時(shí)間變化的曲線簇C(t), 我們將曲線簇C(t)看作高維空間上的一個(gè)曲面φ的零水平集合{φ=0,t},其中水平集是水平面上函數(shù)φ(x,y,t)值相同的點(diǎn)的集合, 零水平集就是所有函數(shù)φ(x,y,t)=0的點(diǎn)的集合,φ(x,y,t)是隨時(shí)間變化的水平集函數(shù).
對(duì)給定的水平集函數(shù)φ(C,t), 則φ(C(t),t)=0是t時(shí)刻曲線C(t)的零水平集, 對(duì)φ(C(t),t)=0關(guān)于時(shí)間t求偏導(dǎo)數(shù)有
(2)
由微分幾何中平面曲線的性質(zhì)可知, 初始輪廓曲線的單位法向量N滿足
(3)
曲線的演化方程為
(4)
式中:F是法向速度函數(shù).
將式(3), 式(4)代入式(2)中化簡(jiǎn)得到水平集基本演化方程
(5)
水平集方法的本質(zhì)是求解關(guān)于時(shí)間變量t的一階非線性偏微分方程式(5), 這個(gè)演化方程屬于哈密頓-雅可比方程, 可按照對(duì)時(shí)間分量Δt與空間變量分離求解的方法進(jìn)行數(shù)值計(jì)算.
在水平集演化前, 先將水平集方程初始化為符號(hào)距離函數(shù).在t=0時(shí)刻的水平集函數(shù)
φ(x,y,t=0)=sgn(x,y,C(t=0))×
dist(x,y,C(t=0)),
(6)
式中: sgn(x,y,C)是符號(hào)函數(shù), 當(dāng)點(diǎn)(x,y)在曲線C外部時(shí), sgn(x,y,C)=1; 當(dāng)點(diǎn)(x,y)在曲線C內(nèi)部時(shí), sgn(x,y,C)=-1. dist(x,y,C)是點(diǎn)(x,y)到曲線C的最近距離. 在建立符號(hào)距離函數(shù)的過程中分為兩個(gè)步驟: 首先確定計(jì)算時(shí)點(diǎn)(x,y)在演化曲線的外部還是內(nèi)部; 接著計(jì)算點(diǎn)到曲線C的最短距離.在曲線演化中保持|φ|=1, 以保證在數(shù)值求解中的離散網(wǎng)格大小為1, 使模型在數(shù)值計(jì)算中保持較高精度.
在曲線基于水平集方法演化過程中, 由于水平集方程的演化不是規(guī)則化的, 隨著演化的進(jìn)行會(huì)產(chǎn)生數(shù)值誤差, 進(jìn)而破壞了水平集演化的穩(wěn)定性.為使得曲線在演化過程中的穩(wěn)定性, 需定時(shí)將零水平集初始化為符號(hào)距離函數(shù).常用的標(biāo)準(zhǔn)算法是求解以下哈密頓-雅可比演化方程直到一個(gè)穩(wěn)定狀態(tài)
(7)
零水平集的定時(shí)重新初始化步驟雖然保證了曲線在演化過程中的準(zhǔn)確性, 但大大增加了計(jì)算量, 降低了模型的運(yùn)算效率. Li等人提出了距離正則化水平集模型(DRLSE)[12]. 在這個(gè)模型中在基于邊緣的水平集能量函數(shù)中增加了一項(xiàng)距離規(guī)則項(xiàng)作為懲罰項(xiàng), 使得水平集函數(shù)能夠自我約束地作為符號(hào)距離函數(shù), 并構(gòu)造了距離正則化項(xiàng), 與輪廓的外部能量一起驅(qū)動(dòng)初始輪廓曲線向?qū)嶋H物體輪廓邊緣演化[13]. 距離正則化能量泛函可以定義為
E(φ)=μRp(φ)+Eext(φ),
(8)
(9)
(10)
由于文獻(xiàn)[8]將δ∈與Hε(x)定義為分段函數(shù), 降低了模型的運(yùn)算速度, 本文將δ∈與Hε(x)定義為連續(xù)函數(shù)的形式
(11)
(12)
模型通過最小化能量函數(shù)E(φ)=μRp(φ)+Eext(φ)求解圖像分割的邊界, 為保持模型求解的穩(wěn)定性, 需要合理地選取Rp(φ)的能量密度函度函數(shù)p(s), 使水平集函數(shù)φ保持符號(hào)距離函數(shù)的性質(zhì), 即|φ|=1.
記s=|那么
(13)
(14)
式中: div是散度.
接著通過尋找如下梯度下降流方程的穩(wěn)定解使能量函數(shù)E(φ)最小化.
(15)
其中, 負(fù)號(hào)表示水平集函數(shù)φ(x,y,t)的方向與距離正則化能量泛函E(φ)的偏導(dǎo)數(shù)方向相反, 是能量函數(shù)E(φ)的最陡梯度下降流.
對(duì)式(8)計(jì)算偏導(dǎo)數(shù)并結(jié)合式(13)~(15)有
(16)
式(16)即為距離正則化演化方程.
結(jié)合圖像輪廓的外部能量泛函的定義, 距離正則化演化方程式(16)可寫為
(17)
選取如下1 024×680的灰度圖像作為測(cè)試圖像, 如圖 1 所示.
圖 1 測(cè)試圖像Fig.1 Test image
首先使用傳統(tǒng)的邊緣檢測(cè)算法利用非微分算子Canny算子和一階微分算子Sobel算子來檢測(cè)圖像的邊緣輪廓, 邊緣檢測(cè)算子與邊緣檢測(cè)圖像如表 1 和圖 2 所示.
表 1 邊緣檢測(cè)算子及其邊緣檢測(cè)圖像Tab.1 Edge detection operator and its edge detection image
圖 2 使用兩種不同的邊緣檢測(cè)算子檢測(cè)的零件輪廓Fig.2 Part contours detected by two different edge detection operators
通過實(shí)驗(yàn)發(fā)現(xiàn), 使用幾種邊緣檢測(cè)算子尋找圖像中目標(biāo)物體邊緣運(yùn)算速度慢, 精度較低且輪廓過于粗糙, 不能很好地將目標(biāo)物體的邊緣從圖像中分離出來.
首先使用傳統(tǒng)方法定義的δ∈與Hε(x)函數(shù)尋找目標(biāo)物體的邊緣輪廓. 選取圖像中心為圓心, 圖像寬度的2/3為半徑的圓作為初始輪廓曲線進(jìn)行演化.
圖 3 使用傳統(tǒng)方法定義的δ∈與Hε(x)函數(shù)時(shí)不同演化次數(shù)得到的輪廓曲線Fig.3 Contour curve obtained with different evolution times using the δ∈ and Hε(x) functions defined by the traditional method
圖 4 使用傳統(tǒng)方法定義的δ∈與Hε(x)函數(shù)時(shí)演化200次得到的輪廓曲線Fig.4 Contour curve obtained by evolving 200 times using the δ∈ and Hε(x) functions defined by the traditional method
由圖 3 發(fā)現(xiàn), 使用傳統(tǒng)方法定義的δ∈與Hε(x)函數(shù)定義的水平集方程運(yùn)算速度較慢, 在80次演化后無法得到目標(biāo)圖像的輪廓. 如圖 4 所示, 讓曲線繼續(xù)演化, 經(jīng)過200次演化, 該水平集模型依舊無法完全分割出目標(biāo)圖像的邊緣, 耗時(shí)超過26s, 速度過慢無法滿足實(shí)際應(yīng)用中的使用需求.
為加快輪廓曲線的演化速度, 我們將目標(biāo)圖像壓縮至原來的1/16, 及將圖像的長(zhǎng)和寬均縮小為原始圖像的1/4, 得到256×170的灰度圖像, 將壓縮后的圖像作為測(cè)試圖像重新尋找目標(biāo)物體的邊緣輪廓曲線.
圖 5 使用壓縮后圖像不同演化次數(shù)得到的輪廓曲線Fig.5 Contour curve obtained using different evolution times of compressed images
如圖 5 所示, 即使使用了壓縮后的圖像, 在80次演化后依然無法得到目標(biāo)物體的輪廓曲線, 但對(duì)比使用壓縮前的圖像, 輪廓曲線的演化速度大大提高. 如圖 6 所示, 讓水平集模型繼續(xù)演化, 在200次演化后, 曲線內(nèi)的面積變化小于2%, 可以認(rèn)為曲線已經(jīng)演化至目標(biāo)物體輪廓上. 但由于使用的是壓縮過的圖像, 圖像精度大大降低, 當(dāng)對(duì)目標(biāo)物體的輪廓精度要求較高時(shí), 傳統(tǒng)的距離正則化水平集方法不能快速而準(zhǔn)確地尋找到目標(biāo)物體的邊緣輪廓. 本文對(duì)傳統(tǒng)水平集方法中的δ∈與Hε(x)函數(shù)進(jìn)行改進(jìn), 使其能更快速且準(zhǔn)確地得到目標(biāo)物體的邊緣輪廓.
繼續(xù)使用圖 1 中的1 024×680的灰度圖像作為測(cè)試圖像.
圖 6 使用壓縮后圖像演化200次得到的輪廓曲線Fig.6 Contour curve obtained by using image compression 200 times after compression
圖 7 使用本文改進(jìn)的δ∈與Hε(x)函數(shù)后不同演化次數(shù)得到的輪廓曲線Fig.7 Contour curve obtained with different evolution times after using the improved δ∈ and Hε(x) functions in this paper
如圖 7 所示, 使用本文改進(jìn)的δ∈與Hε(x)函數(shù)后, 曲線的演化速度大大提高, 且得到的輪廓相較于使用邊緣檢測(cè)算子得到的輪廓更加精確, 輪廓邊緣更光滑. 初始輪廓曲線演化了80次后曲線內(nèi)的面積變化小于2%, 得到了目標(biāo)物體的輪廓曲線如圖 8所示.
圖 8 使用本文改進(jìn)的δ∈與Hε(x)函數(shù)后得到的目標(biāo)物體的輪廓曲線Fig.8 The contour of the target object obtained using the improved δ∈ and Hε(x) functions in this paper
即使我們對(duì)目標(biāo)物體的輪廓精度要求較低時(shí), 本文的方法相較于文獻(xiàn)運(yùn)算速度更快, 在使用壓縮后的圖像尋找目標(biāo)物體邊緣時(shí), 本文的方法僅使用7次演化就得到了目標(biāo)物體的邊緣, 如圖 9 所示. 不同方法的曲線深化時(shí)間對(duì)比如表 2 所示.
圖 9 使用本文改進(jìn)的δ∈與Hε(x)函數(shù)和壓縮后圖像得到的目標(biāo)物體的輪廓曲線Fig.9 Contour curve of the target object obtained using the improved δ∈ and Hε(x) functions and the compressed image
表 2 不同方法的曲線演化時(shí)間對(duì)比
對(duì)圖像中目標(biāo)物體輪廓的提取, 可以提高工業(yè)機(jī)器人的智能化水平, 可以讓其自主地對(duì)目標(biāo)物體進(jìn)行定位與識(shí)別. 本文通過重新定義距離正則化水平集方法的函數(shù), 提高了輪廓曲線演化的速率. 實(shí)驗(yàn)表明, 通過對(duì)傳統(tǒng)的距離正則化水平集方法進(jìn)行改進(jìn), 將尋找目標(biāo)物體的輪廓時(shí)間縮短至原來的1/3, 大大提高了模型的運(yùn)算速度, 擴(kuò)大了模型的適用領(lǐng)域.