楊瑋婕,徐建瑜
(寧波大學信息科學與工程學院,浙江 寧波 315211)
斑馬魚如今已成為一種關鍵的模式生物并廣泛應用于藥物實驗[1],毒性檢查以及遺傳篩查等領域[2,3]。由于其遺傳學與人類相似,具有外部受精和快速發(fā)育過程以及半透明身體等優(yōu)勢,使斑馬魚成為了醫(yī)藥生物等方面科學研究的理想選擇,因此斑馬魚成為高通量篩選中最受歡迎的物種之一[4]。然而,由于胚胎數量之多產生的大量數據對數據分析和建模造成了阻礙。基于斑馬魚的實驗產生圖像數據如此之多,以至于很難通過手動的方式進行分析[5]。因此自動分析斑馬魚圖像,以及對斑馬魚圖像中信息量化的需求日益增長。
經過藥物培養(yǎng)的斑馬魚胚胎在發(fā)育過程中會對其生理結構的某一部分或者某幾個部分產生不定性的影響,因此正確的對斑馬魚胚胎圖像按照生理結構進行分割,也可以稱為語義分割,對醫(yī)學藥物對脊椎動物的影響進行定性定量分析有著重要的意義。斑馬魚胚胎按其生理結構而言主要可以分為三部分,分別是斑馬魚頭部,魚體軀干血管以及斑馬魚卵黃部分?;谝陨涎芯勘尘埃x擇與背景對比度較高的斑馬魚胚胎圖像,并能對圖像按照其生理結構使用不同顏色進行標注分割,是本文的主要研究目標。
如今有很多不同的圖像分割技術,如基于閾值的,邊緣化的基于聚類的,基于神經網絡等。本文針對圖像語義分割技術進行了研究,語義分割[6]方法可以認為是基于圖像內容的圖像分割,即不是簡單地將圖像分割歸為邊界檢測或區(qū)域查找,而是利用圖像中的內容信息,例如特征相似性、圖像語義等來確定圖像中區(qū)域的劃分。目前發(fā)展較成熟的語義分割的運用有:1)Moorer[7]等人于2008年基于最小分割的概念提出Superpixel Lattice算法。該算法以一維圖像邊界代價圖(boundary cost map)作為輸入,該圖保存了兩個像索之間存在邊界的概率。以迭代的方式在圖像水平和垂直方向尋找最有可能通過分割邊界的路徑。使圖像被劃分成斷開的小塊。該方法生成的圖像塊形狀比較規(guī)則,接近網格結構,分割準確度也較高。2)楊雪[8]等人提出了一種在區(qū)域層面上基于紋理基元塊的識別與集成后圖像的語義分割算法,該算法采用紋理等原始特征,考慮到像素之間的關系,以及保持對象之間的紋理邊緣信息,從而分割出輪廓清晰的對象。3)Long等人[9]建立了一種端到端,像素到像素的“完全”卷積神經網絡,該網絡是一種輸入任意尺寸像素即可輸入同樣大小像素的高效學習網絡。將該網絡擴展到語義分割領域,用以改進多分辨率層組合架構,獲得了很好的分割效果。
但是以上方式都有一個限制條件,那就是需要大量的學習樣本,但是每一批特定的藥物某一階段實驗所使用的斑馬魚實驗組非常有限,并且斑馬魚不同生長時期某種藥物對其產生的生理結構影響都會有所差別,所以必須單獨研究,且不同的藥物實驗組之間圖像基本沒有相互參考的價值,因此可以提供學習的樣本非常少。在這種情況下,本文使用圖像處理進行斑馬魚圖像的語義分割,通過設置并優(yōu)化參數,最終達到理想的效果。目前研究中較為成熟有效的圖像分割方法主要有分水嶺算法、聚類算法中的K-means聚類算法以及區(qū)域生長法中的漫水填充算。根據目前已有的語義分割研究現狀,針對本文課題研究方向即對樣本數量固定的生物圖像進行生理結構化分割,沒有成熟固定的算法研究。因此本文使用上述三種方法分別進行分割,根據最終分割效果對比得到最佳分割方案。
針對本文所研究問題,本文采用三種不同算法并進行改進,最終選擇效果最佳的分割效果,流程如圖1。
圖1 斑馬魚圖像語義分割流程圖Fig.1 Semantic segmentation of zebrafish image
根據圖1得出本文的目標實現路線為:分別通過改進型分水嶺算法,減法聚類尋找圖像質心結合K-means聚類算法,減法聚類尋找圖像質心結合漫水填充算法對實驗源圖像進行分割,根據分割效果得出更有效的分割模型。
減法聚類是一種找到最佳數據點的方法,它根據數據密度來定義周圍的數據點的聚類質心[10]。該方法源自Chiu[11]提出的一種基于密度指標的模糊聚類算法。減法聚類法非常簡單而有效,它先預估聚類中心的數量和初始位置,然后根據數據映射成一個空間的網格點,并根據密度計算公式計算每個數據點的密度值,所以附近有很多數據點的網格點會有很高的密度值。所有網格點中具有最高密度值的將被選為第一個聚類中心。在選擇第一個聚類中心后,再通過修正密度計算指標試找到其余網格點中第二個最可能稱為聚類質心的點。
減法聚類算法的執(zhí)行步驟如下:
1)假定有n個數據點的集合:X= {x1,x2,x3…xn},每個點被認為是一個潛在的集群中的聚類質心。 數據點xn的成為質心點的密度計算公式如下:
(1)
其中‖·‖代表歐幾里何距離,ra是數據空間中的超球半徑,它是一個正常數,用于定義與周圍數據的距離,因此衡量數據點成為數據質心可能性的關鍵是a點與所有其他數據點的距離函數。
2)計算出每個數據點的密度后,選擇密度值最大的數據點作為第一個集群中心。此時將x1和p1分別視為第一個聚類中心及其相應的密度。然后通過使用如下公式計算其余每個數據點的密度值:
(2)
rb是數據空間中的超球體懲罰半徑,它是一個正常數。式(2)中減去一定數量的點位從每個數據點作為距離第一個聚類中心的距離的函數,因此在第一個集群中心附近的數據點將大大降低概率,也就意味著被選擇成為下一個聚類中心的機會較少。計算完成每個數據點的修正概率后,找到可能性最高點作為下一個聚類中心。
3)在執(zhí)行完第二步之后,使用公式(3)判別式進行判別。若判別式成立則停止密度值進一步計算,即意味著聚類質心點尋找完畢,否則,繼續(xù)執(zhí)行第二步的計算。
Pi/P1<δ
(3)
其中,參數δ(δ<1)是事先給定的參數,它直接決定了聚類質心點的個數。
目前研究中較為成熟有效的圖像分割方法主要有分水嶺算法、聚類算法中的K-means聚類算法以及區(qū)域生長法中的漫水填充算,下面主要介紹一下三種分割方案的原理。
分水嶺算法,其思想來自地理學的方法,變換的思想來源于地形學,它將圖像看作是地形學上被水覆蓋的自然地貌,圖像中的每一點的灰度值可以理解為拓撲圖上的地形高度,拓撲地貌上局部區(qū)域的極小值及其所能影響到的所有區(qū)域被稱作集水盆,找到該集水盆邊界線也就是分水嶺是水嶺分割算法的主要目標[12]。分水嶺算法分為兩個步驟:一個是排序過程,一個是洪泛過程。首先對每個像素灰度級進行從低到高排序,然后在從低到高實現淹沒的過程中,對每一個局部極小值在h階高度的影響域采用先進先出(FIFO)結構進行判斷及標注。分水嶺變化得到的是輸入圖像的集水盆圖像,集水盆之間的邊界點,即為分水嶺。顯然,分水嶺表示的是輸入圖像的極大值點。因此,為得到圖像的邊緣信息,通常把梯度圖像作為輸入圖像,即
g(x,y)=grad(f(x,y))=
(4)
式中,f(x,y)表示原始圖像,grad(f(x,y))表示對圖像求梯度運算。
K-means聚類算法發(fā)展至今已經較為成熟,在彩色圖像分割領域也是常用方法之一[13]。聚類的方法很多,其中K-means聚類分割,因其理論可靠、算法簡單、收斂速度快、能有效處理大數據量而得到廣泛的應用。聚類是將一組數據分成特定數量的組的一種方法,在K-means聚類中,它將一組數據分割成k個數據組[14,15]。
它將給定的一組數據分為k個不相交的群集。 K-means算法由兩個獨立的階段組成:第一階段計算k質心,第二階段計算每個點到最近的簇來自相應數據點的質心。一旦完成分組,重新計算每個聚類的新質心,并基于該質心計算每個中心與每個數據點之間的新距離,并且指定具有最小距離的集群中的點。分區(qū)中的每個成員對象和其質心總和定義為一個集群。每個簇的質心與該群集中的所有對象距離的總和都是最小的。所以K-means是一種迭代算法,它可以為每個對象在所有集群中找到與它所在集群距離最小集群的質心。
K-means算法原理是:設有由n個m維數據構成的數據X={xi|xi∈Rm,i=1,2,...,n},將X劃分為由K個聚類集構成的集合,每個聚類集之間的數據具有較高相似性,不同聚類集之間的數據彼此相差較大。本文使用K值確定的聚類方法,這種方法適合處理數據量較大的數據集。
首先為數據集選定K個數據作為初始中心;剩余的每個數據,通過技術數據到每個初始中心的距離,選定距離最近的類作為它的歸屬類;接著在每個歸屬類中重新計算K個類的聚類中心,并再一次確定每個數據的歸屬類;通過不斷重復這個過程,直到聚類中心不再變更。常用的計算距離主要有Minkowski distance,Euclidean distance以及CityBlock distance三種方法。這三種方法距離計算公式分別如下:
1) Minkowski distance方法的計算公式為
(5)
式(2.23)中λ可取任意值。
2) Euclidean distance方法的計算公式為
(6)
3) CityBlock distance方法的計算公式為
(7)
在使用以上三種公式進行聚類是,數據集分別以星形、圓形和菱形的方式逼近中心。由于本文研究對象主要以圓形或橢圓形為主,因此選擇式(6)進行計算距離。
漫水填充方法的基本思想就是,根據選中種子點區(qū)域以及相連區(qū)域,接著將該區(qū)域替換成指定的顏色,以此用來標記或者分離圖像的一部分進行處理或分析[16]。漫水填充算法是一種區(qū)域填充算法,其本質是種子填充算法,此方法適用于填充內部定義的區(qū)域。內部定義的區(qū)域是指該區(qū)域中所有像素具有相同顏色或亮度值的區(qū)域,而外部區(qū)域具有不同的顏色或亮度值。該方法的思想是先確定區(qū)域內某一點為種子點,然后搜索種子點鄰域上的點,如果該點未被訪問過同時又滿足填充的條件,就填充該點,并且將這點當作新種子點繼續(xù)搜索。種子填充法可以用函數F(x,y)來描述,種子點是F(x,y)的輸入,輸出則是填充后的圖像信息矩陣,其中[1]x, y代表填充像素點(x,y)后的圖像信息矩陣,[0]x, y代表沒有填充(x,y)像素點。這樣便有種子填充算法的遞歸函數表示,如下面式(8)所示:
(8)
其中C是填充條件,C(x,y)=true代表像素點(x,y)符合填充的條件,C(x,y)=false代表像素點(x,y)不符合填充的條件。C可能是灰度條件C1,代表填充在規(guī)定灰度范圍內的連通區(qū)域;可能邊界條件C2,代表填充一個封閉的輪廓內部區(qū)域;也可能是C1和C2的交集C1∩C2代表填充一個封閉輪廓里符合規(guī)定的灰度范圍的連通區(qū)域。
基于漫水填充算法為了爭取連通區(qū)域,需要調整四方向或八方向搜索選項中連接區(qū)域閾值大小和方向。這兩種方向填充后的結果是不同的,如圖2所示:
圖2 四方向和八方向填充結果Fig.2 Four-way and eight-direction padding results
有多種算法可以實現漫水填充算法,比如遞歸算法、掃描線算法等。遞歸式效果穩(wěn)定,速度較快,較為常用。在本文選擇的遞歸式-4連接填充算法表示如下所示:
(1)輸入:待分割圖像image,種子點seed,目標顏色target-color,填充顏色fill-color(隨機);
(2)如果當前像素點seed顏色與目標顏色target-color不同,返回;
(3)填充過程:執(zhí)行Flood-fill(image,當前像素點的左邊節(jié)點,target-color,邊節(jié)點,target-color,fill-color);
執(zhí)行Flood-fill(image,當前像素點的右邊節(jié)點,target-color,fill-color);
執(zhí)行Flood-fill(image,當前像素點的上
邊節(jié)點,target-color, fill-color);
執(zhí)行Flood-fill(image,當前像素點的下邊節(jié)點,target-color,fill-color);
(4)填充完成。
在漫水填充算法實現過程中,如果訪問圖像中的某個像素,則將vis [x] [y]標記為1,并直接返回函數;如果沒有訪問,則將[x] [y]設置為1,然后依次訪問左、右、上、下四個方向的鄰接關系。漫水填充算法代碼表示如下所示:
1voidFlood_Fill(intx,inty)
2 {
3if(vis[x][y]==1)return;
4vis[x][y]=1;
5if(x+1 6if(x-1>=0)Flood_Fill(x-1,y); 7if(y+1 8if(y-1>=0)Flood_Fill(x,y-1); 9 } 漫水填充法需要用到的二個參數:起始種子點,目標顏色判定規(guī)則和替換顏色。漫水填充法是一個非常有用的算法,經常被用來標記或分割圖像的某些部分以便對其進行進一步處理和分析。 本文中所使用的實驗圖像源為熒光斑馬魚圖像由環(huán)特生物科技有限公司提供。由于圖像的前景與背景得到的對比度高,并且生理結構之間圖像的區(qū)別很明顯,肉眼即可觀察出來,所以對于計算機分割結果可以有一個良好的評判。 分水嶺分割屬于區(qū)域閾值分割,因此不需要生長點或是聚類中心點,可自動根據圖像灰度級分割出圖像的集水盆圖像。但是本文屬于語義分割,僅僅根據圖像灰度圖難以達到想要的效果,同時,傳統(tǒng)分水嶺分割算法具有一個較大弊端,即往往產生過分割。本文對傳統(tǒng)分水嶺算法進行改進,將距離變換與分水嶺算法配合使用[17],計算距離變化可以使用函數bwdist進行計算,該函數可以使用D=bwdist(f)。分割過程如圖3所示: 圖3 分水嶺分割流程Fig.3 Watershed segmentation process 圖4 分水嶺算法分割結果Fig.4 Watered segmentation processa.原圖;b.分割效果圖a.Original image;b.Segmentation result 根據上述流程,本文的分割效果如圖4所示。 從圖4分割結果可以看出,雖然本文分水嶺算法結合距離變換分割結果對于過分割問題有所改善,但是分割效果十分不理想,主要表現為未精確區(qū)分出前景背景部分,分割效果粗糙,將圖像細節(jié)未凸顯出來,因此沒有后續(xù)進一步對斑馬魚各部分量化等研究的價值。 通過使用減法聚類算法找到圖像中聚類的個數和聚類質心位置,之后通過K-means聚類算法來對圖像進行聚類分割,并使用不同顏色將圖像中不同集群進行填充,分割流程如圖5所示。 圖5 K-means聚類算法分割流程Fig.5 K-means clustering algorithm segmentation process 但是在分割過程中,減法聚類雖然可以確定出聚類個數,但是并不是本文確定的聚類個數,本文需要將斑馬魚分割為頭部,軀干以及卵黃三個部分,所以k=3,因此通過調節(jié)公式(6)直至聚類個數為三個。 根據上述流程,本文的分割效果如圖6示。 圖6 K-means聚類算法分割結果Fig. 6 K-means clustering algorithm segmentation resultsa.原圖;b.分割效果圖a.Original image;b.Segmentation result 從圖6分割結果可以看出,使用K-means聚類算法單從分割效果來說,分割地非常良好,邊緣細節(jié)清楚銳利,前后背景區(qū)分非常明顯,比起分水嶺算法效果有了很好地提升。但是,圖像并沒有按照斑馬魚胚胎生理結構分割,卵黃與軀干分為一個整體,因此沒有達到本文研究所要的語義分割目的。 通過使用減法聚類算法找到圖像中聚類的個數和聚類質心位置,之后通過K-means聚類算法來對圖像進行聚類分割,并使用不同顏色將圖像中不同集群進行填充,分割流程如圖7所示。 圖7 漫水填充算法分割流程Fig.7 Flood-filled algorithm segmentation process 同樣的,減法聚類也應通過調節(jié)公式(6)直至生長點個數成為三個。 圖8 漫水填充算法分割結果Fig. 8 Flood-filled algorithm segmentation resulta.原圖;b.分割效果圖a.Original image;b.Segmentation result 從圖8分割結果可以看出,使用漫水填充算法不僅達到了K-means聚類算法中邊緣細節(jié)清楚銳利,前后背景區(qū)分非常明顯的分割效果,與此同時,圖像分割結果可以明顯區(qū)分出了斑馬魚胚胎的頭部,軀干以及卵黃三部分,為之后的藥物自動定量研究提供了很好的基礎,可以通過統(tǒng)計不同顏色的像素值或者計算面積等多種方法實現每一部分的計算。 本文通過分別使用距離變換結合分水嶺算法、減法聚類結合K-means聚類算法以及減法聚類結合漫水填充算法對熒光斑馬魚胚胎圖像進行生理結構的分割,最終通過對三種算法的分割效果對比,可以發(fā)現只有漫水填充算法實現了本文研究所要達成的語義分割效果,不僅正確分割出了斑馬魚主要的三部分生理結果,并且圖像前后背景區(qū)分精準,同時分割細節(jié)清楚,成為文研究最為理想的分割算法。同時,本文填補了在目標圖像數量有限的情況下,對圖像生物進行生理結構語義分割研究領域的空白,具有一定的參考價值。但是分割結果仍然不盡完美,仍然存在一定程度過分割的情況,并且通過調節(jié)參數也不能很好地避免這個問題,可見算法還有進一步改進的空間。通過本文的研究,對于后續(xù)生物分割研究領域有很大的參考價值,例如可以分別計算分割出的生物圖像各個部分的像素值從而統(tǒng)計各部分的生理占比平均值或者研究藥物對生物的生理影響等。4 實驗過程及結果
4.1 改進型分水嶺算法分割
4.2 K-means聚類算法分割
4.3 漫水填充算法分割
5 結論