董 領(lǐng),卿粼波,何小海,黃帥坤,何海波
(1 四川大學(xué) 電子信息學(xué)院, 成都 610065;2 成都西圖科技有限公司,成都 610065)
巖心顆粒圖像的分割結(jié)果會(huì)影響后續(xù)磨圓度、面積等參數(shù)分析。一幅巖心圖像通常包含多種類型的礦物顆粒,傳統(tǒng)的手工分割雖然相對(duì)精確,但是操作繁瑣耗時(shí),不能滿足實(shí)際需求,故需要利用計(jì)算機(jī)來實(shí)現(xiàn)巖心顆粒圖像的自動(dòng)分割[1]。
圖像分割算法主要有閾值分割、邊緣檢測(cè)分割、聚類分割、圖論分割等。但這些方法用來提取巖心顆粒圖像都不能取得比較好的分割結(jié)果。首先,巖心圖像里面的顆粒顏色不一,且有些顆粒表面存在復(fù)雜的紋理;其次,顆粒之間的填隙物成分復(fù)雜,以致于有些顆粒與背景之間、顆粒與顆粒之間的界限模糊,很難進(jìn)行區(qū)分[2]。
基于超像素塊的分割方法近年來已被廣泛應(yīng)用于圖像分割領(lǐng)域。宋熙煜等人對(duì)比了多種超像素算法,其中SLIC算法展示了目前最優(yōu)的邊界依從性[3];任大勇等人提出SLIC與分水嶺算法相結(jié)合進(jìn)行分割,但依舊存在比較明顯的過分割現(xiàn)象[4];郭艷婕等人在分割過程中加入紋理特征,并應(yīng)用DBSCAN算法合并超像素塊,但用于巖心圖像處理時(shí)效率低且合并效果并不理想[5]。
本文針對(duì)巖心顆粒在顏色和紋理方面存在的復(fù)雜性,提出一種巖心顆粒圖像分割算法,使用結(jié)合紋理特征的改進(jìn)SLIC算法生成超像素塊,根據(jù)最近鄰接圖算法合并超像素塊,能夠?qū)r心顆粒獲得較為準(zhǔn)確的提取結(jié)果。
算法流程圖如圖1所示。本文算法包括對(duì)巖心顆粒圖像進(jìn)行增強(qiáng)、SLIC分割算法的改進(jìn)以及對(duì)過分割之后得到的超像素塊進(jìn)行合并3個(gè)部分。首先,采用結(jié)合中值濾波的CLAHE算法對(duì)巖心顆粒圖像進(jìn)行預(yù)處理,增強(qiáng)圖像中的顆粒部分,同時(shí)模糊背景部分;其次,利用LBP紋理特征改進(jìn)SLIC算法,對(duì)巖心顆粒圖像進(jìn)行過分割,使得到的超像素塊更加貼合目標(biāo)邊緣;最后,利用顏色均值對(duì)巖心顆粒圖像進(jìn)行兩步合并,最終得到巖心顆粒圖像的邊緣分割結(jié)果。
圖1 算法流程圖
由于巖心顆粒圖像里面的顆粒表面和巖心背景可能存在一些其它顏色的斑點(diǎn)信息干擾,以及圖像本身的噪聲干擾,這些情況可能增加圖像的分割難度,故在對(duì)圖像進(jìn)行分割處理之前,需要對(duì)巖心顆粒圖像進(jìn)行圖像增強(qiáng)操作。普通的直方圖均衡化可能會(huì)使圖像中的部分區(qū)域由于對(duì)比度增強(qiáng)過大而成為噪點(diǎn)。故本文使用一種結(jié)合中值濾波的CLAHE算法來對(duì)巖心顆粒圖像的局部進(jìn)行對(duì)比度增強(qiáng),算法步驟如下:
(1)將圖像I分成N×N個(gè)子區(qū)域,計(jì)算每個(gè)區(qū)域的直方圖h(x),再根據(jù)閾值T0對(duì)直方圖進(jìn)行調(diào)整。對(duì)新直方圖每個(gè)子區(qū)域的四鄰域進(jìn)行插值運(yùn)算,得到對(duì)比度增強(qiáng)后的圖像I';
(2)根據(jù)公式(1)獲得圖像I'的背景二值圖Ibg,其中Im由公式(2)給出并根據(jù)公式(3)對(duì)Ibg進(jìn)行形態(tài)學(xué)處理:
Ibg(x,y)=220,Im(x,y)>T?
(1)
Im=|I'-M5(I')|+|I'-M7(I')|
(2)
(3)
(4)
圖像增強(qiáng)結(jié)果如圖2所示??梢钥闯霰疚乃惴茌^好地對(duì)巖心顆粒圖像進(jìn)行局部增強(qiáng),使顆粒部分更突出,巖心背景部分更模糊,更有利于后續(xù)的分割操作。
(a)增強(qiáng)前 (b)增強(qiáng)后
SLIC算法是先將彩色圖像轉(zhuǎn)化為CIELAB顏色空間和XY坐標(biāo)下的5維特征向量,構(gòu)造距離度量標(biāo)準(zhǔn)進(jìn)行局部聚類。算法具體實(shí)現(xiàn)如下:
(2)距離度量。以2S×2S為搜索范圍,計(jì)算種子點(diǎn)與搜索范圍內(nèi)每個(gè)像素點(diǎn)之間的距離D,式(5)~式(7):
(5)
(6)
(7)
其中,dlab是顏色距離;dxy是空間距離;m是調(diào)節(jié)空間距離的權(quán)重系數(shù);S是種子點(diǎn)間的距離??梢钥闯?,D值越小,則像素之間越相似。
(3)重復(fù)上述步驟,迭代更新聚類中心,直到誤差收斂滿足停止條件。
(4)增強(qiáng)連通性。將出現(xiàn)多連通、尺寸過小、不連續(xù)等情況的超像素塊分配給鄰近的超像素。
巖心顆粒圖像由于存在十分豐富的紋理信息,所以紋理特征對(duì)圖像分割結(jié)果有重要影響。LBP(Local Binary Pattern)算子是一種圖像局部紋理特征提取算法,計(jì)算的是每個(gè)像素和周圍像素間“相對(duì)”的關(guān)系[6]。LBP值計(jì)算公式(8)如下:
(8)
其中,ic是中心像素點(diǎn)灰度值;ip是相鄰像素點(diǎn)的灰度值;s是一個(gè)符號(hào)函數(shù),式(9):
(9)
本文使用圓形LBP特征,設(shè)置采樣點(diǎn)為8個(gè),當(dāng)半徑radius取1、3時(shí)LBP特征圖像如圖3所示。
(a)原始圖像,左為lenna圖,右為巖心顆粒圖像
由圖3可以看出,半徑越小,LBP圖越精細(xì),所以本文選取半徑為1,采樣點(diǎn)為8的圓形LBP特征。
SLIC算法雖然在空間和顏色上具有良好的復(fù)雜度,但是由于不包含紋理特征,當(dāng)目標(biāo)與背景包含不同紋理信息但顏色相近時(shí),不能很好地分割出理想的超像素塊[7]。將LBP紋理特征引入SLIC算法,可以有效解決分割精度不準(zhǔn)確問題。
改進(jìn)的SLIC算法在初始化聚類中心時(shí),需要加入LBP值,即Ck=[lk,ak,bk,xk,yk,LBPk]T,在距離度量步驟加入紋理距離,式(10):
(10)
最終距離公式改為式(11):
(11)
其中,n為調(diào)節(jié)紋理距離的權(quán)重系數(shù)。
加入紋理特征能夠生成更好的貼合提取目標(biāo)邊緣輪廓的超像素塊。如圖4所示,(a)為使用原始SLIC算法分別在eagle圖和巖心顆粒圖像上超像素分割的結(jié)果,(b)為本文算法分別在兩張圖的分割結(jié)果??梢娪迷糞LIC算法進(jìn)行分割,在目標(biāo)和背景存在明顯差異的情況下,某些部分依舊沒有被分割出來,而本文算法所產(chǎn)生的超像素塊比較有效地解決了分割中出現(xiàn)的欠分割問題,分割的結(jié)果更完整。
(a)原始SLIC算法
圖像在經(jīng)過超像素分割之后,被劃分為K個(gè)區(qū)域,每個(gè)區(qū)域的像素具有同一個(gè)標(biāo)簽值。K個(gè)區(qū)域用區(qū)域鄰接圖(Region Adjacency Graph,RAG)表示為G=(V,E),G是一個(gè)無向圖,V是頂點(diǎn)集,每個(gè)頂點(diǎn)代表一個(gè)區(qū)域,E是邊集,表示超像素塊之間的相鄰關(guān)系,邊權(quán)重代表兩個(gè)區(qū)域之間的相似度[8]。
區(qū)域鄰接圖由于計(jì)算效率低,本文用RAG的改進(jìn)算法即最近鄰接圖(NNG)來搜索合并相似區(qū)域。NNG為一個(gè)有向圖Gm=(Vm,Em),其中Vm=V,Em為有向邊的集合。邊指向的是權(quán)重最小的相鄰節(jié)點(diǎn)。RAG和NNG如圖5所示。
圖5 RAG和NNG示意圖
NNG去掉了冗余的邊信息,降低了算法的復(fù)雜度[9]。合并算法步驟如下:
(1)輸入預(yù)分割圖像;
(2)構(gòu)建RAG,根據(jù)邊權(quán)重生成對(duì)應(yīng)的NNG;
(3)將每個(gè)環(huán)兩端的區(qū)域進(jìn)行合并,所有環(huán)合并完成后,更新NNG。
顏色特征是基于像素點(diǎn)的特征,也是衡量圖像相似度常用的特征之一。相鄰超像素塊之間的相似度可以用面積大小和顏色差來度量,計(jì)算公式(12)~(14):
(12)
γ(A,B)=(vA-vB)2
(13)
γ(A,B)<ε
(14)
其中,vi表示超像素塊中第i個(gè)顏色值;sizek表示區(qū)域面積;vk為區(qū)域的顏色均值;γ(A,B)表示區(qū)域相似度;ε表示閾值。
超像素分割之后,先計(jì)算每個(gè)超像素塊的vk,再對(duì)超像素分割圖像進(jìn)行一處或多處背景選點(diǎn),根據(jù)選點(diǎn)對(duì)應(yīng)的標(biāo)簽值去找選點(diǎn)區(qū)域所屬的超像素塊,將其它超像素塊的vk與背景點(diǎn)進(jìn)行是否相似比較,如果相似就將其標(biāo)簽直接劃分為背景進(jìn)行背景區(qū)域融合,本文取背景閾值為0.1。對(duì)剩下的非背景區(qū)域,根據(jù)相似度γ(A,B),利用最近鄰接圖進(jìn)行合并,得到最終的合并結(jié)果。
本文選用BSD數(shù)據(jù)集中的100張圖像以及30張巖心顆粒圖像進(jìn)行實(shí)驗(yàn),對(duì)比了使用SLIC+DBSCAN的算法[5]以及結(jié)合SLIC的分水嶺算法[4],分別選取2張BSD數(shù)據(jù)集圖像和2張巖心顆粒圖像作為展示,其分割結(jié)果如圖6所示。
圖6 分割結(jié)果對(duì)比
由圖6可以看出,對(duì)于目標(biāo)單一且背景差異明顯的圖,如圖6中的第一張圖,3種算法均能分割出目標(biāo);對(duì)于目標(biāo)豐富、背景復(fù)雜的圖像,如圖6中的第二張圖以及兩張巖心顆粒圖像,SLIC+DBSCAN算法存在明顯的欠分割情況,有些地方邊界缺失嚴(yán)重;結(jié)合SLIC的分水嶺算法最終的融合效果不理想,某些地方過分割明顯,且兩種算法在巖心顆粒圖像上效果均不好;而本文算法能在保留好邊界的情況下,去除雜質(zhì),不僅能在公共圖像上比較好地提取目標(biāo),也適用于巖心圖像,提取的結(jié)果更完整。
本文采用經(jīng)典性能指標(biāo)評(píng)價(jià),查全率R(Recall)和查準(zhǔn)率P(Precision)進(jìn)行評(píng)估,計(jì)算公式(15)和公式(16)如下:
(15)
(16)
一般R和P值越大,表示分割性能越好,但是由于R和P值是反比關(guān)系,所以可以用F指數(shù)來衡量,F(xiàn)指數(shù)定義(17)如下:
(17)
由于本文算法提取的邊界只占有一個(gè)像素,用來對(duì)比計(jì)算的人工分割結(jié)果是純手工標(biāo)注,具有一定的誤差,故在計(jì)算客觀評(píng)價(jià)標(biāo)準(zhǔn)時(shí),允許4個(gè)像素的誤差存在。本文從3個(gè)指標(biāo)上和SLIC+DBSCAN的算法以及結(jié)合SLIC的分水嶺算法進(jìn)行對(duì)比,計(jì)算結(jié)果見表1,可以看出在公共數(shù)據(jù)圖上,本文算法分割效果與對(duì)比算法相似,F(xiàn)指數(shù)只是略高于對(duì)比算法;而對(duì)于巖心顆粒圖像,本文算法的分割結(jié)果明顯優(yōu)于其他算法,F(xiàn)指數(shù)也明顯高于對(duì)比算法。因此,本文所提出的算法適用于巖心顆粒圖像的提取,分割結(jié)果更準(zhǔn)確。
表1 不同算法分割結(jié)果評(píng)估
本文提出了一種基于改進(jìn)的SLIC巖心顆粒圖像提取算法。在對(duì)巖心顆粒圖像進(jìn)行分割前,先結(jié)合中值濾波的CLAHE預(yù)處理,對(duì)圖像進(jìn)行局部增強(qiáng),使巖心顆粒目標(biāo)更明顯,同時(shí)模糊巖心背景區(qū)域,讓顆粒目標(biāo)與背景更具有區(qū)分度;利用紋理特征對(duì)圖像分割的影響,在對(duì)巖心顆粒圖像進(jìn)行超像素分割時(shí)加入LBP紋理特征,產(chǎn)生更加貼合目標(biāo)邊界的超像素塊;最后利用最近鄰接圖對(duì)顏色特征相似的區(qū)域進(jìn)行合并,最終分割出巖心顆粒。實(shí)驗(yàn)結(jié)果表明,本文算法對(duì)巖心顆粒圖像的提取結(jié)果比較準(zhǔn)確和完整,能有效減少后續(xù)對(duì)巖心顆粒進(jìn)行分析的復(fù)雜度。