武漢理工大學(xué)自動(dòng)化學(xué)院 汪 創(chuàng)
目前的動(dòng)物精子形態(tài)分析主要是通過計(jì)算機(jī)視覺技術(shù)實(shí)現(xiàn)的。利用圖像處理技術(shù),計(jì)算出每個(gè)精子的橢圓度、頭部伸長、中段角、頂體百分率等參數(shù),進(jìn)而評價(jià)精子質(zhì)量。本系統(tǒng)采用K-means算法對精子圖像進(jìn)行分割,細(xì)化算法對尾部中部進(jìn)行分割,主動(dòng)輪廓模型對頂體進(jìn)行分割,圖像矩進(jìn)行參數(shù)計(jì)算;最終,該系統(tǒng)能夠準(zhǔn)確、自動(dòng)地完成精子形態(tài)分析任務(wù)。它節(jié)省了大量人力,提高了效率。
精子細(xì)胞的形態(tài)學(xué)分析在評價(jià)精子受精能力和輔助受精中起著重要作用。精子質(zhì)量檢測可以提高畜牧業(yè)生產(chǎn)效率,選擇更好的育種(如家畜的繁殖率分析和馬的繁殖)。一般來說,精子形態(tài)學(xué)分析是手工進(jìn)行的,精子質(zhì)量需要通過一系列的標(biāo)準(zhǔn)和統(tǒng)計(jì)數(shù)據(jù)來確定。這是非常主觀和低效的。因此,分析過程的精確性、簡便性和自動(dòng)化程度具有重要的意義。隨著計(jì)算機(jī)視覺技術(shù)的發(fā)展,越來越復(fù)雜的視覺任務(wù)交給計(jì)算機(jī)。該系統(tǒng)是利用計(jì)算機(jī)技術(shù)解決精子形態(tài)分析的一種嘗試。精子圖像分析屬于醫(yī)學(xué)圖像處理領(lǐng)域。主要應(yīng)用的技術(shù)是圖像分割。傳統(tǒng)的圖像分割算法分為5類;第一個(gè)是基于閾值的分割算法,其思想是為前景/背景識(shí)別標(biāo)準(zhǔn)設(shè)置閾值。第二種是基于邊緣檢測的分割算法,該方法主要應(yīng)用于具有較明顯邊緣信息的圖像,第三種是基于區(qū)域的分割方法,最著名的是Meyer提出的分水嶺算法。它的基本思想是把圖像作為測地線的地形,圖像中每個(gè)像素的灰度值表示點(diǎn)的高度。每個(gè)局部最小灰度值及其影響區(qū)域稱為流域,流域邊界形成流域。通過對浸沒過程的模擬,可以說明流域的概念和形成。在每一個(gè)局部最小的表面,刺穿一個(gè)小洞,然后慢慢地將整個(gè)模型浸入水中。隨著浸沒深度的加深,各局部最小值的影響逐漸向外擴(kuò)展,盆地匯流成壩,即流域的形成。第四是將圖像分割算法與圖論的最小割相結(jié)合。目的是去除特定的邊緣,將圖像分割成多個(gè)子圖,實(shí)現(xiàn)分割。第五個(gè)是活動(dòng)輪廓模型,一個(gè)最著名的方法是蛇形分割算法,基本思想是表達(dá)目標(biāo)邊緣使用連續(xù)曲線,并定義一個(gè)能量函數(shù)包括獨(dú)立變量的曲線,所以分割處理等于解決能量函數(shù)。當(dāng)函數(shù)得到最小值時(shí),曲線能量達(dá)到最小,則當(dāng)前曲線位置為前景輪廓。本系統(tǒng)采用K-means和snake算法,K-means算法是一種無監(jiān)督的機(jī)器學(xué)習(xí)算法,其思想是選擇N個(gè)元素作為裂紋處N聚類的中心。然后根據(jù)Eula距離將每個(gè)元素劃分為N個(gè)聚類中的一個(gè)。每次迭代之后,中心將被移動(dòng)到集群的新中心位置。然后繼續(xù)迭代,直到結(jié)果到目前為止沒有變化,然后集群就完成了。此外,還使用各種形態(tài)學(xué)操作,如腐蝕、膨脹、細(xì)化。經(jīng)過大量實(shí)驗(yàn),完成了一套精確、自動(dòng)的精子形態(tài)分析系統(tǒng)。
圖像預(yù)處理的主要目的是獲得整體輪廓。預(yù)處理采用K-means聚類分割,原因是傳統(tǒng)的二值化方法將圖像分割成兩幅值圖像,將深度淺雜質(zhì)染成與精子顏色相似的顏色,我們需要減少雜質(zhì)數(shù),這樣就更容易將雜質(zhì)與精子區(qū)分開來。在精子質(zhì)量的參數(shù)分析中,精子頂體的百分比是一個(gè)非常重要的指標(biāo)。精子頂體是精子頭部周圍的一層膜,所以精子的頭部至少應(yīng)該分為兩種顏色。精子的染色過程是一個(gè)手工的過程,液體密度很難把握,所以液體被染成不同的顏色。該系統(tǒng)采用K-means聚類算法將圖像分為三種不同的顏色,以達(dá)到實(shí)際應(yīng)用的要求。三值分割容易將圖像分為雜質(zhì)、精子和精子頂體。如圖1所示。
圖1 左邊是使用K-means算法分割的圖像,右邊的是二進(jìn)制圖像
從K-means得到的圖像中提取最小聚類,形成一個(gè)全新的二值圖像。但是我們可以看到圖像中仍然有很多雜質(zhì)。由于形態(tài)學(xué)操作者將雜質(zhì)和精子頂體連接,我們首先刪除過小的輪廓。然后膨脹操作將使精子連接在一起。輪廓完成后,繪制外部輪廓。然后檢測來自雜質(zhì)和區(qū)域、周長和形狀因子的精子。因?yàn)樵谝恍﹫D像中,雜質(zhì)的面積和周長與精子相似,所以我們同時(shí)使用形狀因子。形狀系數(shù)的公式4πs / P2。需要設(shè)置形狀因子的上下界,如果形狀因子太大,則表示形狀接近圓形。如果形狀因子太小,說明形狀太復(fù)雜,兩種情況都是雜質(zhì)和。最后的輪廓如下圖2所示。
圖2 最后完整的二進(jìn)制圖像
預(yù)處理過程可以總結(jié)如下。a)使用中值濾波來濾除干擾。b)利用K-meas算法得到一個(gè)三值圖像。c)過濾掉小區(qū)域的輪廓。d)連續(xù)腐蝕3次,共9*9個(gè)元素,然后用相同的時(shí)間撥號(hào)。e)根據(jù)面積、周長和形狀因子消去等高線。f)重繪的外部輪廓。
對于上面得到的大圖,下面的處理和參數(shù)計(jì)算不是很方便。因此,選擇合適的ROI來將每個(gè)精子分割成小圖。為了消除形態(tài)學(xué)算子對邊界的影響,ROI外存在一定的距離擴(kuò)展。然后得到一個(gè)新的小圖像。如圖3所示。
圖3 一個(gè)精子的ROI
A.頭部的分割
其他動(dòng)物精子的尾巴比人類精子的尾巴大。一般的形態(tài)學(xué)操作可用于人類精子分析,但不適用于動(dòng)物。此外,顯微鏡的放大倍數(shù)也可以導(dǎo)致不同的結(jié)果。連續(xù)腐蝕和膨脹的很難得到一個(gè)共同的值,系統(tǒng)充分考慮了這種通用性,我的策略如下,相對于精子上的尾部和雜質(zhì)連接,頭部面積較大。輸入圖像的過程是一個(gè)完整的輪廓,在連續(xù)侵蝕的過程中,圖像不可避免地會(huì)出現(xiàn)一些輪廓,最終只會(huì)出現(xiàn)一個(gè)輪廓。當(dāng)只有一個(gè)輪廓時(shí),侵蝕停止,記錄侵蝕的次數(shù),膨脹相同的次數(shù)。如圖4所示。
圖4 頭部輪廓
B.尾巴的細(xì)化
在精子形態(tài)分析中,尾巴中部是否彎曲是一個(gè)非常重要的參數(shù)。在實(shí)驗(yàn)過程中,我發(fā)現(xiàn)不同的動(dòng)物精子中段有不同的厚度。不同的圖像特征很難確定。人類精子中段可以通過閉運(yùn)算獲得,但動(dòng)物尾巴厚度的變化不明顯,因此本系統(tǒng)采用圖像細(xì)化算法提取尾巴骨架。細(xì)化算法采用Zhang和Susen的算法。細(xì)化的原則是獲得一個(gè)最終代表圖像骨架結(jié)構(gòu)的單一輪廓,準(zhǔn)確地反映出曲率、長度、骨架結(jié)構(gòu)等。下面是第一步:a)相鄰點(diǎn)的像素個(gè)數(shù)大于或等于2,小于或等于6。b) p -P9-P2像素在0- 1計(jì)算中的累積個(gè)數(shù),達(dá)到2。c) p2 *P4*P6 = 0,這三個(gè)位置等于0。d) p4 *P6*P8 = 0,這三個(gè)位置等于0。如圖5所示。
圖5 細(xì)化算法示意圖
第一步和第二步基本上是一樣的。第三步是P2*P4*P8=0。第四個(gè)步驟是P2*P6*P8=0。重復(fù)兩步,直到不再改變。下面是骨架結(jié)構(gòu)的圖像。如圖6所示。
圖6 細(xì)化算法后是的尾部圖像
C.頂體的分割精子頂體是頭部周圍的一層膜,是衡量精子質(zhì)量的重要指標(biāo)。頭部有一個(gè)非常明顯的白環(huán),就是頂體的位置。主動(dòng)輪廓模型蛇算法是最好的分割算法,其結(jié)果可以接近梯度方向的頂部收縮。
1)蛇形理論
snake模型的思想非常簡單,以一些控制點(diǎn)為模板,通過模板本身的彈性變形,通過局部圖像特征匹配調(diào)和,即最小化一定的能量函數(shù),完成圖像分割。Kass提出的snake模型具有一組控制點(diǎn)V (s), =[x (s), y (s)],x和y表示圖像上每個(gè)控制點(diǎn)的位置。能量函數(shù)的定義如下:
第一個(gè)是彈力曲線,第二個(gè)是彎曲能量,前兩個(gè)統(tǒng)稱為內(nèi)力曲線,以保證曲線的連續(xù)性和平滑性,最后一個(gè)是外力(像梯度力)。計(jì)算這個(gè)公式的值。每次迭代都將點(diǎn)向公式的方向移動(dòng)到0,迭代N次。
2)初始輪廓提取
蛇形模型對初始輪廓的要求很高,如果初始輪廓點(diǎn)迭代設(shè)置為head。最后的結(jié)果不太可能會(huì)收縮到頂位,所以這個(gè)系統(tǒng)使用K-means算法得到的兩個(gè)值圖像,與完整的輪廓相比較,二進(jìn)制映射有一個(gè)明顯的漏洞,這個(gè)洞是由頂體引起的,如下圖所示。計(jì)算孔的中心,畫一條垂直于中心長軸的直線,直線和頭部輪廓的上半部分形成初始輪廓。參數(shù)設(shè)置為0.8,參數(shù)設(shè)置為0.2。經(jīng)過50次迭代,得到的輪廓基本收斂到頂體,如圖7所示。
圖7 從左到右,從上到下的圖像是原始的二值圖像,RGB圖像中的初始輪廓,初始輪廓的二值圖像,最終的頂體輪廓
上述圖像分割是為了方便參數(shù)的計(jì)算,然后將數(shù)據(jù)發(fā)送給專業(yè)技術(shù)人員判斷精子是否合格。頭部的七個(gè)主要參數(shù)為:橢圓率、褶皺、伸展度、對稱度、頂體百分?jǐn)?shù)、中間寬度和夾角等參數(shù)。
A.基本參數(shù)的計(jì)算
基本參數(shù)包括頭部的長軸、小軸、面積和周長。如上所述,討論了長軸的計(jì)算方法。短軸由長軸兩側(cè)與長軸垂直的兩點(diǎn)組成。面積和周長是最簡單的圖像矩參數(shù)。面積公式如下:
B.頭部參數(shù)的計(jì)算
這里我們用L表示長軸,W表示小軸,S表示面積,P表示周長。除此之外,我們還需要計(jì)算其他參數(shù)。這些參數(shù)的計(jì)算是基于前面的基本參數(shù)和圖像的分割部分。頭參數(shù):橢圓率= L / W,褶皺=4πs / P2,伸長= L - W / L + W,對稱度=πLW / 4 s。頂體百分比=S(頂體)/ S(頭)。它們很容易計(jì)算。
C .尾部參數(shù)的計(jì)算尾部參數(shù)包括中段寬度及其長軸之間的夾角。根據(jù)經(jīng)驗(yàn),精子的長度和頭部的長度是一樣的,所以把尾巴上的長軸的長度和精子的中間部分一樣。我想直線l是頭頂點(diǎn)和中間頂點(diǎn)之間的連接。角參數(shù)是指l與長軸之間的角,用來確定尾巴是否彎曲。通過變換距離計(jì)算寬度,圖像的距離變換是前景點(diǎn)到最近的背景聲點(diǎn)的距離。計(jì)算骨架點(diǎn)到等高線距離的平均值作為寬度,可以客觀地表示中間寬度。
本系統(tǒng)使用帶有win64編譯環(huán)境的OpenCV庫進(jìn)行開發(fā),實(shí)驗(yàn)對象為豬精子,實(shí)驗(yàn)圖像中有6個(gè)精子。其中一個(gè)是無效的精子。實(shí)驗(yàn)數(shù)據(jù)如圖8所示。
圖8 參數(shù)結(jié)果表
第二個(gè)精子的伸展度是不夠的。其他精子參數(shù)在正常范圍內(nèi)。其他種類動(dòng)物精子參數(shù)的標(biāo)準(zhǔn)需要由相關(guān)人員提供。
該系統(tǒng)考慮了不同動(dòng)物精子形態(tài)的多樣性。使用K-means作為整體分割,蛇算法作為整體分割。最后,我完成了簡單版的系統(tǒng),可以解決簡單的情況。有一些情況是這個(gè)系統(tǒng)無法解決的。在預(yù)處理步驟中,忽略復(fù)雜的細(xì)胞交叉情況。當(dāng)雜質(zhì)和頭部連接在一起時(shí),我們不能輕易區(qū)分它們,這種情況會(huì)導(dǎo)致錯(cuò)誤的結(jié)果。這個(gè)系統(tǒng)將來需要在這些方向上進(jìn)行改進(jìn)。