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