汪 強(qiáng),何毅斌,吳林慧,杜 偉
(武漢工程大學(xué) 機(jī)電工程學(xué)院,湖北 武漢 430205)
1987年Kass等[1]提出了主動(dòng)輪廓(snake)模型,將圖像分割問題轉(zhuǎn)換為求解能量泛函最小值問題,通過構(gòu)造能量泛函,在能量函數(shù)最小值的驅(qū)動(dòng)下,使得輪廓曲線主動(dòng)變形并向目標(biāo)邊緣逐漸逼近,收斂到目標(biāo)邊界,但對(duì)于凹陷邊界的逼近效果不好。在此基礎(chǔ)上,Xu等[2]提出了GVF snake模型,用新的力代替了傳統(tǒng)外力,較好地解決了對(duì)初始輪廓線位置敏感的問題,但抗噪性較差。近年來,snake模型應(yīng)用十分廣泛,如惠衛(wèi)華[3]將GVF snake模型用于圖像放大,明顯提高了放大圖像的質(zhì)量;唐克倫等[4]提出了基于矩陣分塊化的算法,一定程度上提高了外力場(chǎng)的迭代速度;蔣小波[5]利用邊界跟蹤算法采樣生成初始輪廓線,有效提高了圖像分割的分割精度;劉丹等[6]結(jié)合區(qū)域生長(zhǎng)與GVF snake用于超聲圖像分割,獲得了較好的分割結(jié)果。
本文以鋼板表面缺陷為研究對(duì)象,通過各向異性擴(kuò)散預(yù)處理,部分?jǐn)U散、部分插值求解GVF場(chǎng),并基于canny算子設(shè)置初始輪廓線等方法,有效解決了傳統(tǒng)模型圖像抗噪性差、邊緣特征保留能力不足、輪廓線擬合度不高等問題,實(shí)現(xiàn)了輪廓的準(zhǔn)確收斂。
主動(dòng)輪廓模型是在整個(gè)圖像域定義一條帶能量的參數(shù)化初始輪廓曲線,對(duì)其能量泛函求最小值,能量最小時(shí)的曲線位置就是目標(biāo)輪廓。
設(shè)初始輪廓曲線為:
X(s)=[x(s),y(s)]s∈[0,1].
(1)
其中:x(s)為初始輪廓點(diǎn)的水平坐標(biāo);y(s)為初始輪廓點(diǎn)的垂直坐標(biāo);s為弧長(zhǎng)參數(shù)。
其能量泛函為:
(2)
其中:X′(s)為彈性能量;X″(s)為剛性能量;α和β分別為彈性系數(shù)和剛性系數(shù);Eext(X(s))為外部能量,即外部力,表示曲線和圖像局部特征吻合的情況,使輪廓線向目標(biāo)邊界靠攏。
外部能量一般為:
(3)
(4)
其中:Gσ(x,y)為二維高斯函數(shù),σ為標(biāo)準(zhǔn)方差,標(biāo)準(zhǔn)方差越大,則能量場(chǎng)的捕獲范圍越大;為梯度算子;I(x,y)為圖像灰度值。
當(dāng)原始圖像目標(biāo)與背景差別明顯時(shí)采用式(3);有噪聲或者其他因素干擾時(shí)采用式(4)。對(duì)式(2)求解能量泛函最小值的必要條件是滿足歐拉方程:
αX″(s)-βX?(s)-Eext=0.
(5)
方程(5)為非靜態(tài),數(shù)值計(jì)算困難,可引進(jìn)時(shí)間輔量求解,將X(s)當(dāng)做時(shí)間t的動(dòng)態(tài)函數(shù),可得偏微分方程:
Xt(s,t)=αX″(s,t)-βX?(s,t)-Eext.
(6)
當(dāng)方程(6)收斂即求得穩(wěn)定解時(shí),可得到能量最小的snake曲線。
針對(duì)圖像中存在的低對(duì)比度、低信噪比問題,傳統(tǒng)模型不能取得較好的處理效果,在此基礎(chǔ)上提出各向異性擴(kuò)散濾波的方法對(duì)圖像進(jìn)行預(yù)處理。各向異性擴(kuò)散濾波可平滑圖像,克服高斯濾波的缺陷,保留圖像邊緣。各向異性擴(kuò)散濾波模型由P-M方程描述,即:
(7)
(8)
其中:k為常數(shù)項(xiàng),用來控制對(duì)邊緣的靈敏度,通常經(jīng)驗(yàn)選取或者用圖像噪聲相關(guān)的函數(shù)來表示。
GVF snake模型的實(shí)質(zhì)是通過引進(jìn)的GVF力場(chǎng)擴(kuò)大捕獲范圍,使得輪廓線的放置位置要求降低,但運(yùn)算量極大,導(dǎo)致運(yùn)行時(shí)間較長(zhǎng),計(jì)算代價(jià)較高。求解GVF場(chǎng)的實(shí)質(zhì)就是在邊界圖像上初始時(shí)給出一個(gè)顏色很深的polygon,通過一次次迭代的方式,將自身的信息擴(kuò)散到周圍的區(qū)域,變成一個(gè)尺寸倍增的顏色較淺的polygon。因此,為了減少GVF場(chǎng)的運(yùn)算量,可以采用部分?jǐn)U散、部分插值的方法來求解GVF場(chǎng)。設(shè)圖像的灰度圖為f(x,y),其像素點(diǎn)的數(shù)量為N,且迭代擴(kuò)散的函數(shù)為:
V(x,y)=Diffusion(x,y).
(9)
用隔點(diǎn)線性插值的方法,令m=x+y,當(dāng)其為奇數(shù)時(shí),采用擴(kuò)散迭代求解GVF場(chǎng);當(dāng)其為偶數(shù)時(shí),采用線性插值的方法求解GVF場(chǎng)。則計(jì)算方法如下:
(10)
綜上所述,提出的改進(jìn)算法主要步驟如下:
(1) 讀取待處理圖片I,將圖像灰度化得到I-gary。
(2) 進(jìn)行各向異性擴(kuò)散,用像素散度對(duì)四個(gè)方向求偏導(dǎo),結(jié)合四個(gè)方向的導(dǎo)熱系數(shù)判斷邊界并進(jìn)行保留。由輸入的迭代次數(shù)進(jìn)行迭代擴(kuò)散,最終平滑圖像并保留邊界,得到圖I-AD。
(3) 計(jì)算圖I-AD的邊緣圖。舍棄傳統(tǒng)的計(jì)算方法,先計(jì)算圖像兩個(gè)方向的梯度,然后進(jìn)行歸一化處理得到邊緣圖像矩陣f。
(4) 進(jìn)行GVF場(chǎng)計(jì)算。采用部分?jǐn)U散、部分插值的方法進(jìn)行計(jì)算,得到邊緣圖像矩陣f。
(5) 采用基于邊緣提取算子的初始輪廓定義方法定義初始輪廓曲線。先用canny邊緣提取算子提取邊緣信息,然后擬合一條把邊緣信息包含在內(nèi)的且盡可能貼合的曲線,并置于經(jīng)過各向異性擴(kuò)散的圖像中。
(6) 使用snakedeform函數(shù)使得初始輪廓曲線在GVF外力場(chǎng)作用下發(fā)生形變。在形變過程中定義輪廓點(diǎn)間的最大、最小距離,選取合適間距進(jìn)行插值操作,優(yōu)化曲線。
(7) 初始輪廓曲線經(jīng)多次迭代后得到最終輪廓曲線,即可以得到圖像感興趣區(qū)域的輪廓。
為了檢測(cè)本文所提算法的提取效果,基于MATLAB R2019a對(duì)所拍攝的鋼板表面缺陷圖片進(jìn)行感興趣區(qū)域輪廓提取。先對(duì)原圖進(jìn)行各向異性處理, 然后進(jìn)行邊緣圖和GVF場(chǎng)計(jì)算,最后進(jìn)行曲線迭代并得到結(jié)果。提取過程及結(jié)果如圖1~圖6所示。
圖1 各向異性擴(kuò)散處理結(jié)果
圖2 邊緣圖 圖3 邊緣梯度圖
圖4 GVF場(chǎng)圖 圖5 曲線迭代演化圖
圖6 提取結(jié)果
實(shí)驗(yàn)結(jié)果表明:
(1) 經(jīng)過各向異性擴(kuò)散處理后的圖像能夠有效地突出邊緣,去除部分噪點(diǎn)或無關(guān)像素的干擾。
(2) 部分?jǐn)U散、部分插值的GVF場(chǎng)計(jì)算方法減少了計(jì)算量,并且在一定程度上改善了模型抗噪性能差的缺點(diǎn)。當(dāng)部分插值擴(kuò)散越過噪點(diǎn)時(shí),能夠很好地減少噪聲的影響。
(3) 用canny算子提取大致輪廓線來定義初始輪廓線的方法能夠得到較好的最終輪廓曲線。
(4) 與傳統(tǒng)算法模型相比,本文算法能夠更好地保留感興趣區(qū)域的邊緣特征,具有較好的抗噪能力,且定位精度和擬合性高。
傳統(tǒng)的主動(dòng)輪廓模型抗噪性差,且對(duì)初始輪廓曲線位置要求較高;GVF snake模型一定程度上改善了初始輪廓曲線的位置要求,邊緣特性保持較好,但收斂性較差,同樣抗噪性差;本文的改進(jìn)GVF snake算法有效地解決了初始輪廓線的設(shè)置問題,提高了抗噪能力,較好地保留了邊緣特性,且輪廓擬合性高,在干擾較多的情況下也能較好地提取感興趣區(qū)域的輪廓特征。