葉 楠,陳國棟
(福州大學(xué)物理與信息工程學(xué)院,福建福州 350002)
隨著計算機圖形技術(shù)及虛擬仿真技術(shù)的不斷發(fā)展,計算機輔助技術(shù)在肝臟疾病診斷和治療上的應(yīng)用也越來越廣泛[1]。如何能有效表現(xiàn)和分析出血管管道結(jié)構(gòu)已成為一個重要的研究熱點。肝臟管道的可視化研究主要包括血管的分割、血管骨架的提取、管道的三維重建以及可視化的顯示。其中,骨架作為幾何形態(tài)的一種很重要拓撲描述方式,能簡潔地表示物體的基本形狀結(jié)構(gòu)特征,減少物體描述的信息量。在一個血管管道可視化系統(tǒng)中,骨架的表示方式起到了關(guān)鍵性的作用。
目前,在血管管道的應(yīng)用上,三維的骨架提取算法主要有4種類型:基于細化的方法、基于距離場的方法、基于Voronoi圖的方法和基于廣義勢能場的方法[2]。這些方法存在各自的優(yōu)缺點[3]:細化法能較好地保留骨架的拓撲結(jié)構(gòu)、居中性和連通性,不足在于不能得到精確骨架點;距離場法能夠滿足骨架的幾何特性,但在物體細小狹窄的地方難以保證骨架的連通性和完整性,且中心性容易受邊界的影響;Voronoi圖法可以得到較為滿意的拓撲結(jié)構(gòu)和幾何特性,缺點是在時效上并不樂觀,不適合數(shù)據(jù)量較大的物體;廣義勢場法[4-6]是從場的方向出發(fā),生成的骨架具有良好的連通性和光滑性,只是在時間復(fù)雜度上較高。實際使用時,人們往往根據(jù)所需的應(yīng)用領(lǐng)域選擇相應(yīng)的方法。肝臟血管管道的三維數(shù)據(jù)集是由一系列的二維切片構(gòu)成的,數(shù)據(jù)量較大;管道的拓撲結(jié)構(gòu)呈樹形結(jié)構(gòu),在血管末梢上,血管半徑較窄,為了使骨架能夠精確表達出肝臟血管管道的拓撲結(jié)構(gòu)、管道的半徑等信息,對肝臟血管管道骨架的提取提出了以下要求[7-8]:
1)骨架能夠保存原始肝臟血管管道模型的拓撲結(jié)構(gòu);
2)骨架具有良好的居中特性,骨架線位于原始肝臟血管管道中心線附近;
3)骨架應(yīng)具有連通性、平滑性和單像素寬;
4)骨架算法應(yīng)適用在三維空間中;
5)骨架算法對三維物體的位置和噪聲不敏感,具有一定的魯棒性。
針對以上各算法比較結(jié)果和骨架要求,本文采用了基于廣義勢場法的肝臟管道骨架可視化仿真方法。對原始數(shù)據(jù)預(yù)處理分割出血管后,三維重建獲得肝臟血管管道的形態(tài)結(jié)構(gòu)模型,利用廣義勢場提取出管道的中心路徑關(guān)鍵點以及相應(yīng)的血管半徑,繼而跟蹤關(guān)鍵點得出管道骨架,然后結(jié)合OpenGL實現(xiàn)可視化。本方法優(yōu)點在于能適用在三維空間中,充分保留了血管管道的拓撲結(jié)構(gòu),并保證了骨架的平滑度。實驗結(jié)果證明了該方法的有效性和可行性。
美國數(shù)字化可視人體數(shù)據(jù)集來源于美國國立醫(yī)學(xué)圖書館提出的“可視人體計劃”工程中采集到的人體截面圖像,本文采用該數(shù)據(jù)集中的肝臟數(shù)據(jù)作為數(shù)據(jù)源[9]。
肝臟血管圖像的分割是肝臟管道三維重建過程中的第一步,也是至關(guān)重要的一步。在諸多分割算法中,區(qū)域增長算法是圖像分割中簡潔而有效的方法,由于血管圖像的連通性,以及血泡的封閉性,使得區(qū)域增長算法適用于血管分割。其中,連接門限閾值法(Connected Threshold)就是區(qū)域增長法中的一種。
連接門限閾值法是采用了注水迭代來實現(xiàn)訪問種子像素的鄰域。圖形學(xué)中注水是滿水法填充,是用來填充區(qū)域的[10]。用戶可以提供一個特定的灰度區(qū)間[最小閾值,最大閾值],當(dāng)種子點的鄰近像素的灰度值落入上述區(qū)間內(nèi)時,該算法會將此像素包含入生長區(qū)域中,通過反復(fù)迭代直至沒有新的區(qū)域增加為止。
由于采用的數(shù)據(jù)集具有彩色成分圖像,因此,為了增強血管強度,先對數(shù)據(jù)集進行灰度處理,并進行圖像濾波消除噪聲,可減少對分割結(jié)果的影響。
在本項研究中,按照上述方法,以Visual Studio 2010為開發(fā)環(huán)境結(jié)合C++和ITK開發(fā)包對數(shù)據(jù)進行了血管分割處理,下面為編號為n=1 509的圖像分割結(jié)果。圖1a為原始圖像,圖1b為灰度圖像且去噪后的圖像,紅色的點即為種子點,圖1c為采用[10,33]閾值區(qū)間得到的分割結(jié)果。
圖1 連接閾值法分割肝臟血管圖像
數(shù)字化虛擬肝臟管道骨架可視化研究的關(guān)鍵是三維重建,建立具有立體空間、各方位旋轉(zhuǎn)的肝臟管道模型[11]。本項研究在上述血管圖像分割的基礎(chǔ)上,使用VTK(Visualization ToolKit)開發(fā)工具包對圖像序列進行了面繪制的三維重建。主要是通過VTK提供的vtkBMPReader讀取肝臟血管分割后的一系列二維圖形,產(chǎn)生三維信息,并采用vtkContourFilter濾波器抽取等值面為255的血管,而且為了提高渲染的速度和效果,在等值面上利用vtkPolyDataNormals產(chǎn)生一系列的法線,增強平滑感,最后利用窗口進行渲染顯示。
本項實驗一共采用了VCH-F1的147幅600×630肝臟數(shù)據(jù)集圖像,灰度等級為255。三維重建后的肝臟管道整體結(jié)構(gòu)圖如圖2所示。
圖2 三維重建后的肝臟管道整體結(jié)構(gòu)圖
文中提出的廣義勢場法是以靜電斥力場為基礎(chǔ),對三維空間中肝臟血管管道骨架的提取。通過生成斥力場,對體素進行歸類,檢測關(guān)鍵點,直至生成單像素寬的骨架。下面對算法給出更近一步的描述。
算法基于離散體素的表示,斥力場源是通過在體數(shù)據(jù)表面邊界點上放置同種點電荷來生成的。對于體素歸為三類:外部點、內(nèi)部點和邊界點。體素值為0的即為外部點,體素值有非零值即為內(nèi)部點,若某內(nèi)部點體素的6鄰域中至少有1個值為0,則該體素為邊界點。由于肝臟血管管道數(shù)據(jù)集的生成有人工摻雜、噪聲影響以及分割和重建算法自身的不足,因此,體數(shù)據(jù)中或多或少地存在一些孔洞和內(nèi)腔。為了提高計算結(jié)果的精確性,利用形態(tài)學(xué)的孔洞填補方法進行處理,可保證體數(shù)據(jù)中不存在孔洞。
根據(jù)上述的約定,掃描體數(shù)據(jù),把邊界點坐標(biāo)都存放于數(shù)組B中,現(xiàn)假定內(nèi)部點中存在一點A,如果有一邊界點與該A點的3個方向上的絕對距離都小于等于閾值(這里取值為100),則認為該邊界點對點A有產(chǎn)生場強,若大于該閾值,則可忽略該邊界點的作用。點A處的勢場值可定義為對該點A有產(chǎn)生場強的邊界點C與該點到邊界點的歐氏距離R的m次冪成反比,公式表達式如下
式中:FAC為點A處的斥力;CA為從邊界點C到點A的方向向量;R為C與A間的距離;m為力的階數(shù)(若m=2即為牛頓斥力),m的值越大,邊界點對內(nèi)部點的作用就越大,反之,m的值越小,產(chǎn)生的勢場就越平滑。由于一體素共有26鄰域鄰接,所以在點A處的勢場值由其26鄰接點的平均值決定,最后的勢場值可歸一化為
式中:數(shù)組B存放邊界點的坐標(biāo)。每個邊界點上的點電荷對每個內(nèi)部點產(chǎn)生斥力的總和即稱為斥力場。
本部分的輸入即為上述歸一化后的勢力場,輸出即為所需的關(guān)鍵點列表。所謂的關(guān)鍵點是斥力場為0處的點,它是矢量場的表示拓撲結(jié)果的方式之一,也常作為矢量場可視化的表現(xiàn)內(nèi)容。計算關(guān)鍵點處勢場的Jacobian矩陣特征值和特征向量,根據(jù)特征值實部和虛部正負符號不同,關(guān)鍵點可分為三類:當(dāng)所有特征值實部為負時,該關(guān)鍵點為吸引點;當(dāng)所有特征值實部為正時,該關(guān)鍵點為排斥點;當(dāng)特征值的實部和虛部有正有負時,稱該關(guān)鍵點為鞍點。核骨架的生成將從鞍點開始,具體步驟如下:
1)遍歷所有的鞍點,每個骨架段以鞍點為起始點生成;
2)從鞍點出發(fā),沿著正特征值對應(yīng)的特征向量為方向,按一定步長前進;
3)若計算出的當(dāng)前位置和起始位置相同,則算法結(jié)束;
4)若下一點是某骨架段A中的點a,則將該點加入到當(dāng)前段,并且作為段結(jié)束的端點,將A段在點a處分開,即A段分成了兩段;
5)若下一點是關(guān)鍵點,則直接加入當(dāng)前段,并且作為段結(jié)束的端點;
6)若下一點不是骨架點或關(guān)鍵點,將該點歸進當(dāng)前骨架段,沿著該點的合力方向(即該點的勢場值),繼續(xù)前進;若前進過程中步數(shù)過多,超出規(guī)定的步數(shù)值,則算法結(jié)束。
算法流程圖如圖3所示。
圖3 算法流程圖
經(jīng)過上述的計算,最終輸出核骨架的骨架點。
利用Visual C++和OpenGL在計算機上實現(xiàn)了上述算法,計算機的配置為Core 2 Duo E4700 2.6 GHz的CPU,2 Gbyte的RAM,NVIDIA GeForce GT 430顯卡。對骨架化后的肝臟管道可視化結(jié)果如圖4所示。
算法骨架提取所需的時間統(tǒng)計信息如表1所示。
從表1中可以看出,在計算三維勢場值時需要占用較長的時間,這是因為在對體數(shù)據(jù)進行讀取后,需要遍歷各個邊界點,邊界點的數(shù)量多少將決定了算法時間的長短。
本文首先對肝臟血管管道做了一系列的前期工作,進行了血管分割和三維重建,繼而提出了一種有效的三維骨架化方法。該方法假定在物體邊界點上放置同種點電荷作為斥力場源,然后通過計算勢場值檢測關(guān)鍵點,得出單像素寬的血管骨架點。實驗結(jié)果表明了該方法的可行性和有效性。
圖4 對骨架化后的肝臟管道可視化結(jié)果
表1 肝臟血管骨架化統(tǒng)計信息
:
[1]翟朝亮,陳國棟,王娜,等.基于體紋理的肝臟可視化仿真方法研究[J].電視技術(shù),2012,36(17):169-172.
[2]CORNEA N D,SILVER D,MIN P.Curve-skeleton properties,applications,and algorithms[J].IEEE Transactions on Visualization and Computer Graphics,2007,13(3):530-548.
[3]CHEN Y,DRECHSLER K,ZHAO W,et al.A thinning-based liver vessel skeletonization method[C]//Proc.Conference on IEEE 2011 International Internet Computing & Information Services(ICICIS).[S.l.]:IEEE Press,2011:152-155.
[4]CHUANG J H,TSAI C H,KO M C.Skeletonisation of three-dimensional object using generalized potential field[J].IEEE Trans.Pattern Analysis and Machine Intelligence,2000,22(11):1241-1251.
[5]CORNEA N D,SILVER D,YUAN X,et al.Computing hierarchical curve-skeletons of 3D objects[J].The Visual Computer,2005,21(11):945-955.
[6]馬銳,伍鐵如.基于廣義勢場的三維形體多層次線骨架構(gòu)建[J].計算機應(yīng)用,2011,31(1):16-19.
[7]CHEN Y,DRECHSLER K,LAURA C O,et al.A graph description and analysis framework of liver vascular system[J].Journal of Computational Information Systems,2011,7(6):1998-2005.
[8]王昌.高精度肺部氣道樹的分割及骨架中心線的提?。跠].合肥:中國科學(xué)技術(shù)大學(xué),2010.
[9]美國數(shù)字化可視人體數(shù)據(jù)集[EB/OL].[2013-03-10].http://vhnet.nlm.nih.gov/.
[10]彭微.連接門限閾值法在肝臟CT圖像分割上的應(yīng)用[J].咸寧學(xué)院學(xué)報,2011,31(6):72-73.
[11]方馳華,周五一,黃立偉,等.虛擬中國人女性一號肝臟圖像三維重建和虛擬手術(shù)的切割[J].中華外科雜志,2005,43(11):748-752.