王 娜,陳國(guó)棟,何漢鑫,徐魯雄
1(福建師范大學(xué)福清分校 電子與信息工程學(xué)院,福州 350300)
2(無(wú)損檢測(cè)技術(shù)福建省高等學(xué)校重點(diǎn)實(shí)驗(yàn)室(福建師范大學(xué)福清分校),福州 350300)
3(非遺數(shù)字化與多源信息融合福建省高校工程研究中心,福州 350300)
4(福州大學(xué) 物理與信息工程學(xué)院,福州 350108)
隨著醫(yī)療衛(wèi)生領(lǐng)域中虛擬現(xiàn)實(shí)技術(shù)的不斷發(fā)展,虛擬手術(shù)系統(tǒng)降低手術(shù)成本,制定手術(shù)方案,訓(xùn)練外科醫(yī)生等方面發(fā)揮了重大的作用.
近年來(lái),國(guó)內(nèi)外學(xué)者對(duì)醫(yī)學(xué)圖像的三維可視化展開了研究并建立了特定的虛擬手術(shù)系統(tǒng).Lee 等[1]通過(guò)CT掃描的方法構(gòu)建了下頜和上頜的三維數(shù)字模并開發(fā)了一個(gè)骨骼復(fù)雜模型引導(dǎo)的虛擬正頜外科系統(tǒng).Maini等[2]利用虛擬現(xiàn)實(shí)技術(shù)在髖臼骨折手術(shù)前為患者特制預(yù)輪廓鋼板模板,有助于簡(jiǎn)化手術(shù)程序,提高手術(shù)的精確性.Marinkovi?等[3]將簡(jiǎn)化的幾何非線性共旋轉(zhuǎn)有限元公式用于模擬虛擬現(xiàn)實(shí)手術(shù)中的高度非線性的軟組織形變以提高數(shù)值運(yùn)算的精度.Rahman等[4]討論了利用三維虛擬手術(shù)與自編語(yǔ)言矯治器綜合治療特發(fā)性髁突吸收及繼發(fā)頜骨畸形的方法.汪軍等[5]搭建了一種具有力反饋手感的膽囊切除虛擬手術(shù)仿真訓(xùn)練平臺(tái).肖亮等[6]將計(jì)算機(jī)三維手術(shù)計(jì)劃系統(tǒng)用于肝臟外科教學(xué)中,取得了良好的效果.莫建清等[7]針對(duì)膝關(guān)節(jié)鏡手術(shù)術(shù)前規(guī)劃的需求,設(shè)計(jì)并完成膝關(guān)節(jié)鏡手術(shù)規(guī)劃及訓(xùn)練系統(tǒng)的開發(fā)工作.高洪林等[8]采用三維數(shù)字化方法建立了踝關(guān)節(jié)骨折數(shù)字化虛擬手術(shù)設(shè)計(jì)系統(tǒng).黃銘明等[9]使用Unity3D和HTC VIVE開發(fā)了一種下頜骨骨折虛擬手術(shù)培訓(xùn)系統(tǒng).
真實(shí)感繪制和實(shí)時(shí)性研究是虛擬手術(shù)領(lǐng)域廣泛討論的熱點(diǎn)問(wèn)題.Dong等人[10]提出了一種基于二維紋理貼圖的體紋理合成方法.該方法在一些紋理細(xì)節(jié)較少且周期性特征較強(qiáng)的體紋理合成中具有良好的合成效果及合成速度,但在一些紋理細(xì)節(jié)豐富且無(wú)明顯結(jié)構(gòu)性特征的紋理合成中效果不佳.潘翔[11]提出了一種基于復(fù)用計(jì)算的體紋理合成方法,采用復(fù)用計(jì)算的肝臟體紋理合成速度要明顯高于非復(fù)用計(jì)算.但隨著肝臟體模型表面三角面片數(shù)目的增大,將肝臟體紋理從紋理空間映射到肝臟體模型的過(guò)程的耗時(shí)仍是尚未解決的一大難題.綜合國(guó)內(nèi)外學(xué)者在紋理合成領(lǐng)域的相關(guān)研究成果來(lái)看,但多數(shù)體紋理是通過(guò)單張二維樣圖紋理來(lái)合成的,在物體內(nèi)部無(wú)法表現(xiàn)出豐富的紋理細(xì)節(jié),因此很難繪制出具有較高真實(shí)感的體紋理.另外,體紋理的繪制需要對(duì)龐大的紋理數(shù)據(jù)量進(jìn)行計(jì)算和處理,因此很難在保證繪制效果的同時(shí)兼顧繪制的速度.尤其在虛擬手術(shù)領(lǐng)域,需要在建立精細(xì)的手術(shù)模型及場(chǎng)景的同時(shí)還能夠滿足虛擬手術(shù)的實(shí)時(shí)性和交互性要求,這對(duì)現(xiàn)有的硬件性能是一個(gè)極大的挑戰(zhàn).
本文的研究基于計(jì)算機(jī)統(tǒng)一設(shè)備架構(gòu)(Compute Unified Device Architecture,CUDA),以具有高度并行計(jì)算能力的GPU為硬件基礎(chǔ),對(duì)體紋理合成與映射及肝臟模型切割的方法進(jìn)行改進(jìn),使其與GPU的硬件特性相結(jié)合,以此來(lái)提高虛擬肝臟手術(shù)系統(tǒng)中肝臟體紋理合成與映射以及模型切割的速度,從而兼顧其對(duì)真實(shí)感與實(shí)時(shí)性的要求.
在虛擬肝臟手術(shù)的研究中,采用體紋理的繪制方法,不僅可以提高虛擬肝臟模型的真實(shí)感表現(xiàn),還能夠更好的展現(xiàn)切割操作時(shí)模型內(nèi)部切面的紋理細(xì)節(jié).本系統(tǒng)以美國(guó)可視化人體數(shù)據(jù)集(Visible Human Dataset,VHP)為數(shù)據(jù)源,提取連續(xù)的肝臟橫斷面合成樣本體紋理,對(duì)肝臟模型進(jìn)行三維重建,對(duì)建立的肝臟體模型進(jìn)行不同程度的網(wǎng)格消減處理,得到實(shí)驗(yàn)參考模型;同時(shí)對(duì)連續(xù)的肝臟橫斷面的輪廓數(shù)據(jù)進(jìn)行最優(yōu)感興趣區(qū)域(Region Of Interest,ROI)的提取,再進(jìn)行縱向疊加排列,最后生成樣本體紋理.CUDA加速的肝臟體紋理空間合成需要根據(jù)肝臟體模型的大小計(jì)算出能夠包含該模型的體紋理空間的大小,從樣本體紋理中的隨機(jī)位置取出特定大小的體紋理對(duì)紋理空間進(jìn)行填充.CUDA加速的肝臟體紋理映射需要將肝臟體紋理從紋理空間映射到模型的表面形成精細(xì)的紋理以提高真實(shí)感.CUDA加速的肝臟體切割需要采用鼠標(biāo)模擬手術(shù)器械來(lái)對(duì)虛擬肝臟模型進(jìn)行切割的操作.
系統(tǒng)開發(fā)環(huán)境是系統(tǒng)集成開發(fā)的基礎(chǔ),主要包括了系統(tǒng)開發(fā)的硬件平臺(tái)、軟件平臺(tái),其中軟件平臺(tái)包括了操作系統(tǒng)、集成開發(fā)環(huán)境以及一些開放的工具庫(kù).
虛擬手術(shù)中肝臟體實(shí)時(shí)切割系統(tǒng)基于CUDA架構(gòu),以VS2012為平臺(tái),使用OpenGL編寫了虛擬肝臟的3D圖形視覺(jué)渲染程序.實(shí)驗(yàn)用的PC機(jī)采用Windows操作系統(tǒng)并配置了Intel? CoreTMi7-2670QM 2.2 GHz 的CPU,8 GB內(nèi)存,NVIDIA GeForce GT 540 MB的顯卡及2 GB顯存.
模塊化設(shè)計(jì)是從應(yīng)用的需求出發(fā),將系統(tǒng)拆分出不同的功能塊,然后以功能塊為單位進(jìn)行程序設(shè)計(jì).模塊化設(shè)計(jì)的目的是為了降低程序復(fù)雜度,使程序的設(shè)計(jì)、調(diào)試和維護(hù)等操作簡(jiǎn)單化,同時(shí)增加程序的復(fù)用性.
虛擬手術(shù)中肝臟體實(shí)時(shí)切割系統(tǒng)在開發(fā)上遵循模塊化的設(shè)計(jì)思想.系統(tǒng)從整體上可分為4大模塊,分別是數(shù)據(jù)處理模塊、交互模塊、渲染模塊、切割模塊,各大模塊又分別由不同的子模塊構(gòu)成.不同模塊負(fù)責(zé)處理不同的任務(wù),具有不同的功能.系統(tǒng)總體設(shè)計(jì)圖如圖1所示.

圖1 系統(tǒng)總體結(jié)構(gòu)圖
數(shù)據(jù)處理模塊是構(gòu)建虛擬手術(shù)中肝臟體實(shí)時(shí)切割系統(tǒng)的基礎(chǔ).該模塊負(fù)責(zé)提取VHP數(shù)據(jù)集中連續(xù)橫斷面圖像,采用區(qū)域的圖像分割算法從連續(xù)的橫斷面圖像中提取出肝臟輪廓的區(qū)域,然后對(duì)肝臟輪廓進(jìn)行層間插值,利用VTK (Visualization ToolKit)工具包結(jié)合面繪制方法構(gòu)建出肝臟的三維模型.交互設(shè)計(jì)是系統(tǒng)設(shè)計(jì)中必不可少的環(huán)節(jié),交互模塊主要負(fù)責(zé)處理人機(jī)交互,提高系統(tǒng)的易用性和可控性.渲染模塊是利用虛擬現(xiàn)實(shí)和計(jì)算機(jī)三維成像技術(shù)為外科醫(yī)生呈現(xiàn)出的具有真實(shí)感的虛擬肝臟模型.切割操作是虛擬肝臟手術(shù)中最基本的操作之一,醫(yī)務(wù)工作者需要通過(guò)對(duì)虛擬肝臟模型的切割來(lái)模擬虛擬肝臟手術(shù)的進(jìn)行.當(dāng)切割操作完成后,醫(yī)務(wù)工作者需要實(shí)時(shí)地觀察到切割面的肝臟紋理.
數(shù)據(jù)處理模塊包括肝臟輪廓提取子模塊和肝臟模型三維重建子模塊.
肝臟輪廓提取子模塊:肝臟輪廓提取是指從連續(xù)的橫斷面圖像中提取出肝臟輪廓的區(qū)域.三維重建是指利用單視圖或多視圖建立三維物體在計(jì)算機(jī)中的數(shù)學(xué)模型,它是虛擬現(xiàn)實(shí)中進(jìn)行分析、處理和操作的基礎(chǔ).在虛擬肝臟手術(shù)的研究中,肝臟模型的三維重建是后續(xù)研究工作的基礎(chǔ).
肝臟模型三維重建子模塊:肝臟模型三維重建需要對(duì)肝臟輪廓進(jìn)行層間插值,利用VTK工具包結(jié)合面繪制方法構(gòu)建出肝臟的三維模型.在基于樣圖的二維紋理合成中,首先需要獲取二維的樣圖作為合成的參考.在三維空間中,合成體紋理也需要獲取能夠反映全局特征的紋理信息的三維樣本塊,即樣本體紋理.在本文的研究中,需要以肝臟的輪廓中提取出的ROI區(qū)域?yàn)槎S紋理樣本,來(lái)合成包含豐富紋理信息的三維紋理塊.
交互設(shè)計(jì)是系統(tǒng)設(shè)計(jì)中必不可少的環(huán)節(jié),交互模塊主要負(fù)責(zé)處理人機(jī)交互,提高系統(tǒng)的易用性和可控性.交互模塊包括鼠標(biāo)交互子模塊、鍵盤交互模塊和GUI參數(shù)設(shè)置模塊.
鼠標(biāo)交互子模塊:負(fù)責(zé)接收和處理鼠標(biāo)事件,將事件轉(zhuǎn)換為不同的指令傳遞給不同的模塊以執(zhí)行相應(yīng)的任務(wù):傳遞給渲染模塊,用于改變攝像頭的位置以控制觀察的角度及距離;傳遞給形變計(jì)算模塊,用于選中并拉動(dòng)模型頂點(diǎn)以設(shè)置外力;傳遞給四面體切割算法模塊,用于控制手術(shù)刀模型,形成分割面.
鍵盤交互子模塊:負(fù)責(zé)接收和處理鍵盤事件,將事件轉(zhuǎn)換為指令專遞給相應(yīng)的模塊.鍵盤事件主要針對(duì)渲染模塊,不同的按鍵對(duì)應(yīng)不同的指令,用于控制仿真場(chǎng)景中的物體,如地板、場(chǎng)景盒等,是否進(jìn)行渲染,或者控制肝臟模型的渲染屬性,如是否顯示包圍盒,網(wǎng)格線等.
GUI參數(shù)設(shè)置子模塊:主要針對(duì)形變仿真的參數(shù),負(fù)責(zé)提供設(shè)置接口,使用戶能夠?qū)@些參數(shù)進(jìn)行交互式地調(diào)整.
渲染模塊包括樣本體紋理生成子模塊、肝臟體紋理合成與映射子模塊.
樣本體紋理生成子模塊:在基于樣圖的二維紋理合成中,首先需要獲取二維的樣圖作為合成的參考.在三維空間中,合成體紋理也需要獲取能夠反映全局特征的紋理信息的三維樣本塊,即樣本體紋理.在本文的研究中,需要以肝臟的輪廓中提取出的ROI區(qū)域?yàn)槎S紋理樣本,來(lái)合成包含豐富紋理信息的三維紋理塊.
肝臟體紋理合成與映射子模塊:為了將體紋理樣本映射到肝臟體模型上形成紋理細(xì)節(jié)豐富且真實(shí)感強(qiáng)的肝臟體紋理,需要建立精細(xì)的肝臟體紋理空間.本文通過(guò)合成一個(gè)能夠包含肝臟模型大小的體紋理空間,將體紋理從紋理空間映射到模型空間中,來(lái)生成具有真實(shí)感的肝臟模型.
切割模塊的主要功能是完成切割操作.切割操作是虛擬肝臟手術(shù)中最基本的交互方式之一,通過(guò)切割不僅需要將模型分割成兩個(gè)部分,還要將紋理從肝臟體紋理空間映射到切割面上,形成真實(shí)的切割面紋理.本系統(tǒng)采用鼠標(biāo)來(lái)模擬虛擬手術(shù)器械進(jìn)行切割操作,切割模塊包括碰撞檢測(cè)子模塊和模型網(wǎng)絡(luò)重構(gòu)模塊.
碰撞檢測(cè)子模塊在切割仿真的不同階段起著不同的作用:在切割未執(zhí)行階段,碰撞檢測(cè)主要用于確定切割操作的起始時(shí)間和起始位置;而在切割操作完成之后,碰撞檢測(cè)則用于檢測(cè)仿真物體與其他場(chǎng)景物體的接觸情況,進(jìn)而做出相應(yīng)的處理,產(chǎn)生必要的碰撞反應(yīng).
模型網(wǎng)絡(luò)重構(gòu)子模塊將用戶通過(guò)鼠標(biāo)在屏幕上劃動(dòng)形成連續(xù)的切割線量化為若干切割線段,然后將每一條線段投影到肝臟模型上與模型的表面產(chǎn)生交點(diǎn),連接交點(diǎn)形成一個(gè)有界平面.接著通過(guò)徑向基函數(shù)來(lái)擬合線段集所產(chǎn)生的有界平面來(lái)生成一個(gè)新的平面,即切割面.
貝塞爾曲線[12]由起始點(diǎn)、錨點(diǎn)(即終止點(diǎn))和控制點(diǎn)組成,通過(guò)調(diào)整控制點(diǎn),可以使其形狀發(fā)生變化.貝塞爾曲線有以下幾種形式,用于繪制各類二維平面上的曲線形狀.
(1)一階貝塞爾曲線:

其中,B(t)為t時(shí)刻下的點(diǎn)的坐標(biāo)值,p0為起始點(diǎn),p1為終止點(diǎn).
(2)二階貝塞爾曲線:

二階貝塞爾曲線由p0、p1和p2三個(gè)定點(diǎn)確定,在二維平面上表現(xiàn)為一條平滑的拋物線.
(3)n階貝塞爾曲線:
通過(guò)低階貝塞爾曲線的參數(shù)形式,可以推導(dǎo)出基于給定點(diǎn)p0、p1、p2直至pn的n階貝塞爾曲線通式為:

本文采用人工確定關(guān)鍵點(diǎn)結(jié)合貝塞爾曲線擬合的方式來(lái)提取肝臟的輪廓,為了獲得較好的實(shí)驗(yàn)效果,需要找到合適的控制點(diǎn).首先沿著肝臟的輪廓間隔地指定擬合的關(guān)鍵點(diǎn),關(guān)鍵點(diǎn)的位置盡量貼合肝臟輪廓的邊緣,依次連接輪廓上各關(guān)鍵點(diǎn)組成一個(gè)多邊形.連接該多邊形各邊上的中點(diǎn),得到中點(diǎn)的連線段.在改中點(diǎn)的連線段上找出一關(guān)鍵點(diǎn),使得該點(diǎn)分線段的比與相鄰兩邊的長(zhǎng)度比相等,最后平移中點(diǎn)的連線段,使該線段上的關(guān)鍵點(diǎn)與對(duì)應(yīng)的頂點(diǎn)重合,從而完成曲線擬合.曲線擬合示意圖如圖2所示.

圖2 曲線擬合示意圖
區(qū)域生長(zhǎng)法的基本思想是根據(jù)像素的相似性生長(zhǎng)的原則來(lái)劃分集合構(gòu)成分割的區(qū)域.首先在預(yù)分割的區(qū)域內(nèi)確定一個(gè)種子點(diǎn),該點(diǎn)必須是待分割區(qū)域內(nèi)具有代表性的點(diǎn),種子點(diǎn)可以是單個(gè)像素點(diǎn),也可以是相似的像素點(diǎn)區(qū)域.在種子點(diǎn)的鄰域內(nèi)尋找與該點(diǎn)相似的像素,相似性的判定的原則是計(jì)算周邊像素點(diǎn)與種子點(diǎn)彩色、梯度、灰度等量間的距離是否在差值范圍內(nèi),將符合條件的像素點(diǎn)包含到種子點(diǎn)的區(qū)域內(nèi),然后以新區(qū)域內(nèi)的像素點(diǎn)作為新的種子點(diǎn)繼續(xù)生長(zhǎng),直到找不到滿足條件的像素點(diǎn)為止[13].
假設(shè)相鄰的斷層圖像為第k–1層和第k+1層,需要通過(guò)插值法計(jì)算出第k層的圖像輪廓數(shù)據(jù).但由于肝臟的輪廓包含了大量的點(diǎn),直接對(duì)其進(jìn)行形狀插值將引入大量的計(jì)算,為了簡(jiǎn)化計(jì)算,通常采用的方法是在原始的輪廓中尋找一個(gè)點(diǎn),使剩下的點(diǎn)構(gòu)成的多邊形的面積與原來(lái)最接近.以此類推,分別找到面積差值最小的m個(gè)點(diǎn).本文采用了等分圓周的方法來(lái)簡(jiǎn)化輪廓點(diǎn)數(shù),從而獲得最逼近原始輪廓的多邊形.首先假設(shè)原始輪廓上的點(diǎn)數(shù)為N,經(jīng)過(guò)簡(jiǎn)化后輪廓上的最終點(diǎn)數(shù)為M(M 過(guò)Ck+1的質(zhì)點(diǎn)作一條平行于Z軸的直線,平移Ck?1使該直線經(jīng)過(guò)其質(zhì)點(diǎn),然后將Ck?1投影到Ck+1所 在的平面上,記其投影輪廓為Ck′?1.接下來(lái)以質(zhì)點(diǎn)為起點(diǎn),任意角度為起始角度,間隔角度為 3 60?/M向外作射線,射線與Ck′?1和Ck+1的交點(diǎn)即為新的輪廓點(diǎn),只要M值足夠大,就能夠使新的輪廓點(diǎn)連接成的多邊形盡可能地逼近原始輪廓線,分別記簡(jiǎn)化后的輪廓為Ck′′?1和Ck′+1,假設(shè)第k–1,k,k+1層Z方向上的坐標(biāo)為zk?1,zk和zk+1,則計(jì)算Ck的插值公式為: 基于CUDA的并行計(jì)算主要分為以下6個(gè)步驟,計(jì)算流程如圖3所示. 圖3 基于CUDA的并行計(jì)算流程圖 步驟1.在利用CUDA進(jìn)行并行計(jì)算之前,需要在GPU上為需要進(jìn)行運(yùn)算的數(shù)據(jù)及運(yùn)算結(jié)果申請(qǐng)相應(yīng)的顯存空間. 步驟2.在GPU中分配好相應(yīng)的顯存空間后,將內(nèi)存地址中需要在GPU上進(jìn)行運(yùn)算的數(shù)據(jù)拷貝至顯存空間中. 步驟3.在利用CUDA進(jìn)行GPU計(jì)算時(shí),需要啟動(dòng)合適的線程數(shù)來(lái)覆蓋并行計(jì)算的規(guī)模.例如進(jìn)行網(wǎng)格節(jié)點(diǎn)著色計(jì)算時(shí),定義Kernel函數(shù)名為facePointKernel,其線程表達(dá)式為facePointKernel<<<(faceNum+1023)/1024,1024>>>(…),其中faceNum為表面網(wǎng)格節(jié)點(diǎn)數(shù),<<<(faceNum+1023)/1024,1024>>>表示啟動(dòng)的線程塊數(shù)為(faceNum+1023)/1024,每個(gè)線程塊啟動(dòng)1024條線程,(…)中為需要轉(zhuǎn)移到GPU上計(jì)算的數(shù)據(jù). 步驟4.設(shè)置Kernel函數(shù)即CUDA的核函數(shù).所有的并行計(jì)算都在Kernel中進(jìn)行,為了保證計(jì)算的并行性,需要建立線程索引,使索引的每一個(gè)線程都運(yùn)行一次Kernel函數(shù)中的計(jì)算. 步驟5.在Kernel中完成計(jì)算后,需要將計(jì)算的結(jié)果傳送回主機(jī),將數(shù)據(jù)從GPU的顯存拷貝到CPU的內(nèi)存中. 步驟6.在CUDA上完成計(jì)算后,也需要釋放動(dòng)態(tài)分配的顯存空間,以免造成泄漏. 在虛擬肝臟手術(shù)中,需要利用人體連續(xù)橫斷面中肝臟輪廓的數(shù)據(jù)來(lái)生成肝臟模型以及肝臟的樣本體紋理塊.本文采用了美國(guó)可視化人體項(xiàng)目的VHP圖片集來(lái)作為研究的數(shù)據(jù)來(lái)源,因此對(duì)VHP數(shù)據(jù)集進(jìn)行肝臟輪廓的提取就成為了研究工作的基礎(chǔ). 對(duì)VHP數(shù)據(jù)集進(jìn)行肝臟輪廓提取是對(duì)一系列圖像進(jìn)行處理的過(guò)程,因此在進(jìn)行輪廓提取的操作之前,需要先將數(shù)據(jù)集導(dǎo)入到系統(tǒng)中.為了確保數(shù)據(jù)集能夠順序地在系統(tǒng)中進(jìn)行處理,在導(dǎo)入前對(duì)數(shù)據(jù)集采用依順序編號(hào)命名的原則,使系統(tǒng)在導(dǎo)入數(shù)據(jù)集的過(guò)程中能夠按照各圖片的文件名進(jìn)行先后次序的排列.系統(tǒng)利用OpenCV的cvLoadImage()函數(shù)來(lái)實(shí)現(xiàn)圖像數(shù)據(jù)的讀取,由于VHP數(shù)據(jù)集的圖像數(shù)據(jù)較大,包含了許多無(wú)用的信息,為了避免進(jìn)行過(guò)多的處理,需要先對(duì)讀取的圖像進(jìn)行裁剪處理,根據(jù)肝臟所在區(qū)域大小將圖像裁剪成分辨率為600×630的圖像集.在如圖4所示的系統(tǒng)界面中,能夠查看導(dǎo)入到系統(tǒng)后經(jīng)過(guò)裁剪的每一張肝臟橫斷面圖像. 圖4 圖片導(dǎo)入與顯示 肝臟輪廓提取的精度直接影響到三維重建后肝臟模型的還原程度,為了提高圖像分割的精度,本系統(tǒng)采用人工參與肝臟輪廓關(guān)鍵點(diǎn)的指定,再用貝塞爾曲線擬合曲線的方法來(lái)標(biāo)記出肝臟的輪廓,由于導(dǎo)入到系統(tǒng)中的圖像為連續(xù)的肝臟橫斷面圖像,因此相鄰兩層之間的輪廓差異性較小,可以采用當(dāng)前圖像指定的關(guān)鍵點(diǎn)作為下一張圖像的起始點(diǎn),再進(jìn)行細(xì)微的調(diào)整即 可.隨著肝臟輪廓的變化,只需根據(jù)需要對(duì)關(guān)鍵點(diǎn)的數(shù)量進(jìn)行增加或刪除,便可以方便地標(biāo)記出VHP數(shù)據(jù)集中各橫斷面上的肝臟輪廓.貝塞爾曲線擬合的結(jié)果如圖5所示. 圖5 擬合結(jié)果 通過(guò)人工擬定關(guān)鍵點(diǎn)及貝塞爾曲線的擬合,在連續(xù)的橫斷面圖像中標(biāo)記出肝臟區(qū)域的輪廓,然后對(duì)肝臟的區(qū)域進(jìn)行分割提取.圖像分割結(jié)果如圖6所示. 圖6 圖像分割結(jié)果 利用分割出的肝臟輪廓數(shù)據(jù),采用層間插值及面繪制的方法對(duì)肝臟模型進(jìn)行三維重建.層間插值的目的是為了建立更精細(xì)的肝臟模型.根據(jù)VHP數(shù)據(jù)集提供的數(shù)據(jù),其相鄰的橫斷面之間的距離為1 mm,為了改善斷層的過(guò)渡情況,提高模型的精度,在相鄰兩層切面之間插入額外的兩層切面,插值面的輪廓形狀由相鄰的兩切面計(jì)算得到.本系統(tǒng)采用基于多邊形逼近的形狀插值法來(lái)進(jìn)行層間的插值,首先利用等圓周的方法來(lái)簡(jiǎn)化原輪廓上點(diǎn)的數(shù)量,以獲得最大程度逼近原始輪廓面積的多邊形,再利用3.3中的插值公式進(jìn)行插值輪廓的計(jì)算.在進(jìn)行層間插值后,構(gòu)建模型的切面的總層數(shù)為188+187×2=562層. 本系統(tǒng)采用VTK工具包結(jié)合Marching Cubes面繪制的方法,利用562層切面輪廓進(jìn)行肝臟模型的三維重建.在尚未進(jìn)行網(wǎng)格數(shù)簡(jiǎn)化的情況下,即網(wǎng)格簡(jiǎn)化率為1時(shí),未進(jìn)行網(wǎng)格削減的肝臟表面網(wǎng)格模型如圖7所示. 圖7 尚未進(jìn)行網(wǎng)格削減的肝臟表面網(wǎng)格模型 未經(jīng)過(guò)網(wǎng)格簡(jiǎn)化處理的模型包含了過(guò)多的頂點(diǎn),這將給后續(xù)的映射計(jì)算及切割帶來(lái)大量的數(shù)據(jù)計(jì)算,造成系統(tǒng)實(shí)時(shí)性的降低.為了避免這種情況的發(fā)生,需要對(duì)初始模型進(jìn)行一定程度的網(wǎng)格削減工作.本系統(tǒng)采用了VTK封裝的VTKDecimatePro網(wǎng)格削減類,通過(guò)設(shè)置不同的簡(jiǎn)化率來(lái)減少初始模型表面的網(wǎng)格數(shù)目,網(wǎng)格簡(jiǎn)化率為0.3時(shí)所生成的肝臟體模型如圖8所示. 圖8 簡(jiǎn)化率為0.3的肝臟表面網(wǎng)格模型 本文實(shí)現(xiàn)了肝臟體模型的切割和切面體紋理的快速繪制.本文分別在GT 540M和GTX 650的GPU以及Intel? CoreTMi7-2670QM 2.2 GHz的CPU上進(jìn)行了實(shí)驗(yàn),并選用了頂點(diǎn)數(shù)14 663,三角面片數(shù)18 676的肝臟模型作為切割模型,針對(duì)3組不同形狀的切割進(jìn)行了實(shí)驗(yàn)數(shù)據(jù)的記錄,并與CPU下的切面紋理的映射速度進(jìn)行了對(duì)比,切割效果如圖9所示. 圖9 切割效果圖 由圖9可以看出,利用鼠標(biāo)模擬虛擬手術(shù)刀具在肝臟模型上畫出的曲線,可以將肝臟模型切割成任意形狀,且能夠看到切割產(chǎn)生的新平面上的紋理.表1所示為圖9中3組不同切割形狀的模型在GPU和CPU下的切割時(shí)間對(duì)比. 表1 3組不同切割形狀的切割時(shí)間對(duì)比(單位:s) 本文的主要工作包括肝臟模型的肝臟輪廓提取和三維重建.在肝臟輪廓提取的工作中,首先分析了各圖像分割算法的利弊,提出了一種人工干預(yù)的曲線擬合方法來(lái)標(biāo)記肝臟區(qū)域的輪廓,接著通過(guò)區(qū)域生長(zhǎng)法提取出該輪廓區(qū)域.然后采用面繪制的方法,結(jié)合層間插值技術(shù),利用VTK工具包進(jìn)行肝臟模型的三維重建工作,建立了肝臟網(wǎng)格表面模型,并引入CUDA技術(shù),提高運(yùn)算效率,為醫(yī)學(xué)診斷和手術(shù)規(guī)劃提供了輔助工具.

3.4 基于CUDA的并行計(jì)算

4 實(shí)現(xiàn)





5 切割效果與分析


6 結(jié)論