吳楠,李巖芳,蔣振剛
(長春理工大學(xué) 計(jì)算機(jī)科學(xué)技術(shù)學(xué)院,長春 130022)
基于CT圖像的腎臟建模技術(shù)用于對(duì)病患的腎臟CT圖像進(jìn)行幾何建模。該技術(shù)在虛擬手術(shù)、三維可視化、生物系統(tǒng)仿真等領(lǐng)域有著重要的作用[1]。在手術(shù)前,通過使用患者的CT圖像構(gòu)建腎臟模型,可以讓醫(yī)生提前通過模型對(duì)結(jié)石或者病變的地方進(jìn)行分析,從而規(guī)劃手術(shù)路徑,提高腫瘤定位精度,從而提高手術(shù)的成功幾率[2]。
腎臟建模技術(shù)中主要的算法為圖像分割算法,通過圖像分割算法將目標(biāo)分割出來,從而生成模型。常用的圖像分割方法有閾值分割、邊緣分割、區(qū)域生長、水平集、圖割等。閾值分割中主要常用的有Otsu,也稱大津法。閾值分割方法簡單,計(jì)算速度快,但是其分割依據(jù)只有像素的灰度值,沒有圖像的空間信息,所以容易受到噪聲的干擾[3]。區(qū)域生長算法只需要一些種子點(diǎn)便可以分割出目標(biāo),但是因?yàn)樯L準(zhǔn)則通常也只考慮單個(gè)像素的灰度值是否符合要求,并不含有空間信息,所以一般容易受到噪聲干擾[4]。水平集(Level Set)算法在圖像分割的適應(yīng)性較好,只要設(shè)置初始曲線,該算法即可自動(dòng)尋找目標(biāo)的邊緣位置[5,6]。但是由于其過于依賴圖像的梯度信息,如果目標(biāo)的邊緣部分梯度信息變化不大,則很容易導(dǎo)致分割錯(cuò)誤。圖割算法(Graph Cuts)是一種基于能量最小化進(jìn)行目標(biāo)分割的方法[7,8],該算法充分利用了圖像中的灰度和空間信息,是目前分割效果較好的一種算法。
幾何建模是物理建模的基礎(chǔ),好的幾何建模會(huì)提升外表渲染的臨場感,同時(shí)也會(huì)給物理建模帶來便利,提高物理性質(zhì)的真實(shí)度。隨著計(jì)算機(jī)圖形圖像學(xué)的發(fā)展,越來越多的幾何建模方法被提出,每種方法都是針對(duì)一定的需求提出來的,都有其自身適用的領(lǐng)域。如今計(jì)算機(jī)的硬件技術(shù)飛速發(fā)展,計(jì)算速度也越來越快,對(duì)人體軟組織建模算法的速度需求已不再那么高,而如何提高建模的精度和減少人工成本則逐漸成為主要研究方向。為此,本文主要從以下兩個(gè)方面考慮,改進(jìn)建模方法。
(1)對(duì)建模精度的改進(jìn)
人體組織的幾何建模作為虛擬手術(shù)的基礎(chǔ),有著非常重要的地位,建模的精度會(huì)直接影響后面形變仿真的計(jì)算精度和力反饋的真實(shí)感。同時(shí),隨著計(jì)算機(jī)技術(shù)的發(fā)展,人們對(duì)畫面質(zhì)量的要求也越來越高,而提高畫質(zhì)首先需要提高建模的精度。
(2)對(duì)人工交互的改進(jìn)
隨著計(jì)算機(jī)圖形學(xué)的發(fā)展,全自動(dòng)的建模方法已經(jīng)成了未來發(fā)展的方向。自動(dòng)建??梢詷O大的提高工作效率,但是建模效果卻明顯沒有人工建模的質(zhì)量高。所以本文的目標(biāo)是在不降低建模質(zhì)量的前提下,盡量減少建模中的人工成本。
圖像分割是三維建模的基礎(chǔ),進(jìn)行圖像分割的目的就是將病變組織或醫(yī)生所感興趣的組織區(qū)域提取出來,從而能夠幫助醫(yī)生更加準(zhǔn)確地對(duì)病變組織進(jìn)行分析,經(jīng)過圖像分割后對(duì)于敏感區(qū)域的顯示更加清晰,有利于進(jìn)一步的診斷和治療。
為了實(shí)現(xiàn)高建模精度和低人工成本的目標(biāo),本文嘗試了一種新的建模方法,既保留了圖割算法的高精度優(yōu)點(diǎn),又有水平集算法的低人工成本優(yōu)點(diǎn),整個(gè)流程如圖1所示。
首先,先讀取所有CT圖片,并用中值濾波去除噪聲。然后從CT圖片中取出腎臟較為清晰的一張圖,手動(dòng)選取待分割目標(biāo)的中心部位,生成種子點(diǎn)。將圖片和種子點(diǎn)進(jìn)行下采樣降低分辨率,再通過水平集進(jìn)行粗分割。然后,將圖片和水平集分割得到的結(jié)果分別還原成原始圖片的大小,再將分割結(jié)果中的前景和背景分別進(jìn)行腐蝕,減小區(qū)域面積,作為前景和背景種子點(diǎn)。之后會(huì)在兩個(gè)區(qū)域之間產(chǎn)生一個(gè)環(huán)形區(qū)域,如圖2所示。其中白色部分為前景種子點(diǎn),黑色部分為背景種子點(diǎn),中間的灰色區(qū)域?yàn)榇指顓^(qū)域。使用圖割算法,放入上一步得到的種子點(diǎn),進(jìn)一步細(xì)分割此圖片,得到最終的分割結(jié)果。
圖1 建模流程圖
圖2 對(duì)分割結(jié)果的前景和背景分別做腐蝕操作
將當(dāng)前分割結(jié)果的前景和背景分別腐蝕,讀取與此圖片相鄰且未分割的圖片,將剛才腐蝕得到的區(qū)域作為種子點(diǎn),使用圖割算法對(duì)此圖片進(jìn)行分割。一直重復(fù)進(jìn)行本操作,即使用上一張圖片分割區(qū)域的腐蝕結(jié)果作為下一張圖片的種子點(diǎn),直到所有圖片分割結(jié)束。最終將所有圖片的分割結(jié)果堆疊起來,即可得到一個(gè)腎臟模型的三維模型。
在得到三維模型之后,因?yàn)槟P偷姆指钍腔诙S圖像的,所以在相鄰兩個(gè)圖片之間,會(huì)出現(xiàn)過度不平滑的情況,模型中部分區(qū)域會(huì)出現(xiàn)鋸齒,所以需再使用三維中值濾波進(jìn)行平滑處理[9]。
普通的中值濾波是應(yīng)用在二維圖像上的,在處理三維圖像上,二維中值濾波就不再適用。針對(duì)三維模型的特殊性,本文提出了一種快速三維中值濾波算法,將二維圖像上的中值濾波推廣到三維圖像上,并優(yōu)化其速度。
首先,先將中值濾波算法從二維推廣到三維上。取一像素,把該像素周圍r×r×r的三維矩陣范圍里的所有灰度值都保存到一個(gè)數(shù)組中,并將數(shù)組中的值從小到大排序,然后選取中間位置的灰度值輸出,作為當(dāng)前像素點(diǎn)的灰度。遍歷三維圖像上的每個(gè)像素點(diǎn),均使用此方法進(jìn)行處理,即完成一次三維圖像上的中值濾波操作。
分割后的圖像不是灰度圖,而是二值圖像,即只有黑白兩種顏色。針對(duì)這種圖像的特殊性質(zhì),可以將中值濾波簡化。原始的中值濾波在遍歷每個(gè)像素點(diǎn)時(shí),在每個(gè)像素周圍尋找中間灰度值,當(dāng)做這個(gè)像素點(diǎn)的灰度值,而在二值圖像中,只有兩種灰度值,0和255。所以在計(jì)算灰度中值時(shí),只需分別計(jì)算這個(gè)像素周圍白色和黑色像素的數(shù)量即可,如果白色像素的數(shù)量超過了黑色,那么中間像素值即為白色,反之則為黑色。整個(gè)過程的偽代碼如下:
在排序算法中,平均速度最快的算法時(shí)間復(fù)雜度也要O(nlog2n)。而該方法省略了對(duì)像素排序的過程,從而提高了中值濾波的速度。
在硬件方面,本文使用電腦配置為Windows7 64位系統(tǒng),3.20GHz的CPU和10GB的內(nèi)存。軟件方面,使用pycharm和Python為開發(fā)環(huán)境,并使用了vtk和opencv等開源庫,實(shí)現(xiàn)了人體組織建模算法及三維渲染。三維醫(yī)CT圖像數(shù)據(jù)大小是512*512*640。
通過人工手動(dòng)選取初始種子點(diǎn)后,再使用水平集和圖割算法分割,可得腎臟的分割結(jié)果。從原始圖片和分割結(jié)果中,分別取出3張不同位置的圖片進(jìn)行對(duì)比,如圖3、圖4所示。從圖中可以看出每張圖都能準(zhǔn)確的分割出腎臟的輪廓形狀,但是分割邊緣會(huì)有少許的鋸齒。
圖3 腎臟不同位置的原始圖片
圖4 腎臟不同位置的分割結(jié)果
為了使模型更加平滑,在分割后使用三維中值濾波算法,對(duì)模型進(jìn)行平滑處理。模型的主視圖如圖5所示。可以看出,處理后的模型沒有了原來的鋸齒,變得更加平滑,也使模型更加美觀。
圖5 平滑處理效果圖
最后使用vtk對(duì)模型進(jìn)行三維渲染,顯示結(jié)果如圖6所示,此時(shí)可以看出模型反映出了腎臟的真實(shí)形狀。
圖6 模型的三維渲染效果圖
按照是否有人工參與,評(píng)價(jià)的方式主要分為兩類,主觀評(píng)價(jià)和客觀評(píng)價(jià)。主觀評(píng)價(jià)的方法容易含有偏見,而且耗費(fèi)人工成本大,所以通常使用客觀評(píng)價(jià)的方法來計(jì)算分割精度。人工分割的結(jié)果可以作為評(píng)價(jià)的金標(biāo)準(zhǔn),因此這里把人工分割的結(jié)果作為標(biāo)準(zhǔn)的分割結(jié)果,用來分析分割算法的精度。
隨機(jī)抽取3張腎臟的分割結(jié)果,計(jì)算并標(biāo)記使用該算法分割和人工分割的區(qū)別,得到結(jié)果如圖7所示。其中,灰色為完全匹配的部分;淺色為過分割的部分,它在分割結(jié)果中,但不在標(biāo)準(zhǔn)結(jié)果中。可以看出分割錯(cuò)誤的部分主要分布在目標(biāo)的邊緣區(qū)域,過分割和未分割部分的分布情況沒有明顯特征。
再任取一張腎臟的圖片,依次使用水平集、圖割和中值濾波三種算法對(duì)圖像進(jìn)行處理,對(duì)比分析圖片的分割精度,如圖8所示??梢钥闯鰣D割算法比水平集算法的分割精度較高,而之后的平滑處理則對(duì)分割精度影響不大。
為了客觀評(píng)價(jià)分割精度,通過對(duì)比參考文獻(xiàn)[10],本文選用公式(1)的算法來評(píng)估分割結(jié)果的精度。取出5張圖片的分割結(jié)果與標(biāo)準(zhǔn)數(shù)據(jù)進(jìn)行對(duì)比。
其中,R是分割的精度,T是標(biāo)準(zhǔn)分割結(jié)果,F(xiàn)T是過分割部分,TF是未分割部分。
圖7 腎臟不同位置的分割準(zhǔn)確性對(duì)比
圖8 腎臟同一位置使用不同算法處理的準(zhǔn)確性對(duì)比
在模型中從上到下隨機(jī)抽取5張圖片,對(duì)使用不同分割方法所得的分割精度進(jìn)行對(duì)比,得到結(jié)果如圖9所示。從圖中可以看出,水平集算法在分割精度上比圖割算法稍差,一部分原因是由于水平集本身對(duì)形狀復(fù)雜的目標(biāo)分割效果不如圖割算法好;另一部分原因是因?yàn)樵谒郊指铍A段,不要求分割精度太高,對(duì)停止迭代的時(shí)機(jī)沒有充分優(yōu)化。
圖9 腎臟不同位置的圖片使用不同分割算法的精度對(duì)比
公式(1)中T為正確分割的結(jié)果,它分布在模型的各個(gè)位置,所以T和腎臟的面積正相關(guān)。而分割錯(cuò)誤的地方主要集中在腎臟的邊緣部分,這部分像素的數(shù)量和模型的周長正相關(guān)。在模型的頭尾兩端平均分割精度都低于中間的精度,是因?yàn)樵趦啥四I臟區(qū)域的面積小,導(dǎo)致公式(1)中T減小,而FT和TF減小程度沒有那么大,最后導(dǎo)致精度R在兩端的位置較低。
圖10 不同病例的腎臟圖
計(jì)算整個(gè)腎臟的平均分割精度,得到水平集算法為93.16%,圖割算法為94.63%。然后取4個(gè)不同病例的CT圖,如圖10所示,可以看出不同病例CT圖像的畫質(zhì)、對(duì)比度和亮度等都是不同的。
然后分別使用水平集和圖割算法對(duì)這4個(gè)病例進(jìn)行分割并計(jì)算分割精度。再加上之前的病例,將分割精度繪制成折線圖,如圖11所示。從圖中可以看出圖割算法的分割精度都較水平集算法高,而同一種算法的分割精度也會(huì)因?yàn)椴±牟煌兓?,這是由于CT圖像的質(zhì)量和對(duì)比度等因素的不同而導(dǎo)致同一算法的分割精度也會(huì)產(chǎn)生變化。
圖11 不同病例使用兩種算法的分割精度對(duì)比圖
現(xiàn)有圖割算法如果想要得到較好的分割效果,必須要將種子點(diǎn)放在分割邊緣附近才行。圖12為腎臟分割時(shí)錯(cuò)誤的種子點(diǎn)選取,圖13為正確分割的種子點(diǎn)選取。圖12中腎臟部分的右上角有一塊黑色區(qū)域沒有設(shè)置背景種子點(diǎn),被當(dāng)成前景分割出來,最終導(dǎo)致分割錯(cuò)誤。所以即使用種子點(diǎn)將目標(biāo)包圍也不能完美的分割,還需把種子點(diǎn)貼近目標(biāo)的邊緣,才能完美的分割。這就要求對(duì)種子點(diǎn)的選取有很高的要求,如果想得到好的分割結(jié)果,則需要花費(fèi)較多的人工成本去標(biāo)記種子點(diǎn)。
圖12 錯(cuò)誤分割的種子點(diǎn)
圖13 正確分割的種子點(diǎn)
而本文中的算法,只需在待分割目標(biāo)中間手動(dòng)選取一個(gè)種子點(diǎn),即可自動(dòng)完成全部分割過程。且對(duì)種子點(diǎn)的位置沒有限制,只需選在目標(biāo)內(nèi)部即可。由此可見,該方法可在不降低圖割算法精度的前提下,大大減少人工成本。
本文中提出的人體組織建模方法,主要針對(duì)提高建模質(zhì)量和降低人工成本的需求,采用水平集和圖割算法各自的優(yōu)點(diǎn),組合成一個(gè)新的算法。整個(gè)分割過程,只需在待分割目標(biāo)內(nèi)部手動(dòng)選取一個(gè)種子點(diǎn),對(duì)種子點(diǎn)的位置大小均無要求,之后便可自動(dòng)分割出目標(biāo)并生成模型。該算法涵蓋了兩個(gè)算法的優(yōu)點(diǎn),能以極低的人工成本生成高精度的模型,且模型表面平滑,與實(shí)物非常相似。得到的模型可以給虛擬手術(shù),醫(yī)學(xué)教學(xué)和3D打印等領(lǐng)域使用。
雖然本文在建模方面取得了一定進(jìn)展,但是全自動(dòng)建模方法依然是研究的主要方向。如何能不需人工操作,變成完全自動(dòng)化,還需在未來進(jìn)一步的研究,只有克服困難并改進(jìn)這些不足,才能使虛擬手術(shù)技術(shù)踏上一個(gè)新的高度。