王 娜,陳國棟,許少劍
1(福建師范大學 福清分校 電子與信息工程學院,福州 350300)
2(無損檢測技術福建省高等學校重點實驗室(福建師范大學福清分校),福州 350300)
3(非遺數字化與多源信息融合福建省高校工程研究中心,福州 350300)
4(福州大學 物理與信息工程學院,福州 350108)
虛擬現實技術作為仿真技術的重要方向之一,被廣泛地應用在多個領域[1-3].隨著醫學和計算機技術的發展,虛擬手術成為了虛擬現實技術在醫學領域的重要應用之一.虛擬手術具有可重復性的優點,能夠在不依賴于尸源的情況下逼真地模擬臨床手術的全過程,為醫學培訓和科研提供了一種可操作性強又經濟有效的訓練平臺.肝臟是人體內最大的實質性器官,由肝實質和伴隨著一系列管道的間質構成[4].然而肝臟又是一個脆弱器官,一旦出現惡性腫瘤將會危及生命.肝外科手術仍然是治療大多數惡性原發性或繼發性肝損傷最有效的方法[5].
在虛擬肝臟手術的研發中,肝臟的可視化建模[6-8]與形變仿真[9-11]是關鍵技術之一,肝臟的形變如按壓、穿刺、縫合等操作的逼真程度直接影響到虛擬手術的質量.無網格形變技術方法在手術直接操作大變形區域由于無需進行網格重構,不會產生網格畸變,同時又具有光滑過渡的形變優點,因此適合于大變形區域仿真.然而無網格方法的計算量大,會影響運行速度,若在全局模型區域采用該方法會導致計算效率低,嚴重影響虛擬手術仿真的實時性.在肝臟軟組織物理形變方法中,軟組織在手術器械直接施壓作用力的局部范圍內會發生大變形,基于網格形變的方法在這大變形區域內會發生網格畸變,影響形變仿真的真實感.虛擬肝臟手術系統中的形變仿真盡可能在滿足真實感的前提下又同時滿足實時性要求,否則會影響手術訓練或手術方案的制定,甚至給醫生造成誤導.而實時性與真實感一直是研究此領域難以平衡的問題.虛擬肝臟形變仿真手術要體現視覺的逼真感,則需要根據肝臟組織真實的生物特性來建立形變模型,從而能夠精確模擬形變過程并反饋給用戶.
虛擬手術中肝臟形變仿真系統中涉及到的主要研究的內容有:虛擬手術場景中的肝臟幾何建模、虛擬手術場景繪制及模型繪制、虛擬器械與肝臟模型的交互碰撞檢測、肝臟軟組織在器械操作下的形變仿真、力反饋的計算、數值積分計算.針對以上研究內容,該虛擬形變仿真系統的開發分為3個模塊:數據預處理模塊、主程序模塊、反饋模塊.數據預處理模塊主要包括肝臟軟組織的幾何建模及虛擬手術場景的渲染;主程序模塊是系統的核心模塊,該模塊實現鼠標拾取碰撞檢測算法、反饋力計算、肝臟軟組織物理形變算法、形變動力學方程的數值積分計算;反饋模塊將虛擬手術形變過程以圖形視覺的方式反饋給用戶,并且將主程序中獲取的反饋力小、位移、碰撞最鄰近質點信息輸出反饋給用戶,用戶可以對這些數據采集分析,如圖1所示.

圖1 虛擬手術中肝臟形變仿真系統架構圖
為了使本設計能用于大多數科研實驗室常見的PC平臺,以提高程序代碼的可重用性和可移植性,操作系統采用Windows,開發環境為OpenGL開放工具庫,同時AutoCAD、3ds Max等3D圖形設計軟件制作的模型文件可以轉換成OpenGL的頂點數組及面片數組,OpenGL可以根據頂點數組及面片數組繪制模型.本論文采用OpenGL來渲染虛擬手術場景、繪制肝臟模型、并且將模型形變過程動態的顯示在屏幕上.計算機硬件采用Intel? CoreTMi7-2670QM 2.2 GHz 的CPU,8 GB內存,NVIDIA GeForce GT 540 M 的顯卡及2 GB顯存.
在該系統的開發中,為了能提供友好、人性化、可視化的圖形交互界面,方便用戶使用.本系統在MFC上創建用戶界面,OpenGL完成圖形的繪制顯示,從而實現可視化交互系統.
該系統的界面如圖2所示,系統界面設計分為3個區域:第1個區域為控制區,用戶可以對實驗參數進行設置;第2個區域為對實驗數據輸出區域,用于輸出反饋力大小、位移等.第3個區域為視圖區域,用于對形變仿真結果的三維顯示.
根據虛擬手術形變的特征,結合上述網格與無網格的優缺點,本文提出一種肝臟網格與無網格混合模型的構建方法:將軟組織動態劃分3個區域,即手術大變形區域、非手術區域、交界區域.在手術大變形區域采用無網格法,非手術區域采用網格法.在手術區域采用無網格方法可以避免大形變中的網格畸變問題,有利于實現形變仿真的真實感,同時手術區域較小則區域模型節點數也較少,手術區域采用無網格法可以達到實時性要求;在非手術區域采用基于質點彈簧的網格形變方法,充分發揮了質點彈簧在實時性上的優點,同時非手術區域形變較小采用質點彈簧法也不會發生網格畸變,模擬形變效果也較好.本文提出的基于網格與無網格混合的形變方法發揮兩者在形變仿真中的優勢,在真實感與實時性兩者之間進行折中,能夠適用于虛擬肝臟形變手術仿真.

圖2 系統界面圖
肝臟網格與無網格混合模型的構建方法為:采用完全的質點彈簧模型作為初始模型,手術中將大變形區域產生網格畸變的質點彈簧模型能夠自適應地轉換成無網格建模區域,而變形不顯著的區域仍然保留質點彈簧模型,從而將這兩個區域混合起來.同時對混合模型中在無網格區域與質點彈簧區域之間建立過渡單元.
為了研究可以自動依據手術器械操控區域及施力大小而動態轉換的混合模型,設計了一種區域可變的網格向無網格動態自適應轉換算法,算法流程圖如圖3所示.
算法主要分為以下4個步驟:
步驟1.從VHP (Visible Human Dataset)數據集中提取肝臟輪廓.通過在HSV(Hue,Saturation,Value)顏色空間中大致的提取出肝臟輪廓,再加以簡單的人工交互曲線擬合的方法找到肝臟的輪廓.接下來選取面繪制的方式對肝臟進行三維重建,使用輪廓線上的點來構建肝臟模型,再對所構建的肝臟模型做表面的平滑處理,最終得到理想的肝臟模型.
步驟2.當手術器械作用于肝臟軟組織表面時,對質點彈簧模型需要搜索與碰撞點位置最鄰近的質點作為器械的施力點,該質點受到作用力從而位移發生變化,與該質點相連接的彈簧長度變化,從而產生彈簧力逐層帶動其他質點運動產生形變.鼠標交互操控中根據拾取算法來檢測是否對模型進行手術施力,最后搜索與拾取點最鄰近的模型質點作為實際施力點.

圖3 算法流程圖
步驟3.針對虛擬器械操作肝臟軟組織過程中可能發生的情況進行動態劃分:對手術區域產生的較大形變采用無網格法進行模擬;其余非手術區域受力較小產生的形變也較小,則采用基于質點彈簧的網格形變方法來模擬;而兩者之間通過過渡節點完成信息的傳遞.該步驟分為3個子步驟:
步驟3.1.無網格模型動態形變可以利用牛頓第二定律對各個節點分析,從而肝臟模型的彈性變形可以用下式來模擬:

步驟3.2.在質點彈簧系統中每個質點由于受到總作用力而產生運動,總的作用力包含了內力與外力兩部分,其中內力是由質點彈簧系統形變產生的彈簧力和阻尼力組成,外力主要為肝臟軟組織受到手術器械的拉力及壓力.而每一個質點在力作用下的運動形變滿足牛頓第二定律,則質點彈簧模型中任何一個質點i的動力學方程為:

其中,Xi是質點的位移矢量,質點i受到的彈簧力、阻尼力、拉力及壓力分別用Fd、Fk、Ft、Fp表示,其他質點受到器械作用力為零.
步驟3.3.對過渡單元節點受到無網格區域的作用力和質點彈簧區域的作用力這兩者的合力,其形變方程為:

步驟4.質點彈簧模型根據無網格模型傳遞過來的位移,計算質點彈簧模型內質點受到的彈力,則質點彈簧模型由于彈力作用,帶動了整體質點彈簧模型質點的位移運動.同時質點彈簧模型將反作用的彈力通過過渡連接點傳遞給無網格模型,無網格模型由此也獲得了質點彈簧模型的彈力作用,從而完成了肝臟的網格與無網格混合模型的構建.
該算法結合了網格與無網格方法的優缺點,本質上是一種基于網格與無網格混合的物理模型的肝臟軟組織形變仿真算法,能夠滿足形變仿真的真實感與實時性要求.
數據預處理模塊完成肝臟軟組織幾何建模:根據真實肝臟軟組織的醫學影像信息建立肝臟的幾何模型,將建立好的肝臟模型載入到系統中,模型載入的過程不需要具有實時性,因此該模塊可以作為一個獨立模塊,數據預處理過程需要存儲模型頂點信息、面片信息、每個頂點相連接的拓撲信息,完成實驗前期預計算.
肝臟三維模型用三維建模軟件3ds Max完成文件格式轉換,針對于不規則部分進行細分,從而劃分出盡可能多的規則形狀,最后利用該軟件繪制出對應的圖形.而一些無法進行再次劃分的形狀,采用分解的方法,對圖形的基本單元劃分成單個功能單元,再利用編輯器進行調整和設置.對于一些規則的圖形則只需要進行多次的裁剪、編輯、放大、縮小,就可以提高模型的精密度.三維肝臟模型是由頂點和三角面片組合而成的,通過頂點信息定義出邊的信息,接著通過邊的信息構成面片的信息.頂點和三角形面片的數量越大,三維模型就越精細.為了提高形變仿真的真實感,所構建的三維肝臟模型的頂點數設置為1527個,三角形面片數為3050個,由3ds Max建立的肝臟模型如圖4所示.在建立肝臟的幾何面模型的基礎上,結合肝臟的生物力學特性就可以對肝臟軟組織物理建模,因此肝臟幾何建模是是研究物理形變模型的前期準備工作.

圖4 由3ds Max建立的肝臟模型
在完成建立肝臟模型后,需要將模型載入系統,并繪制模型及虛擬手術場景.肝臟軟組織模型繪制及虛擬手術器械繪制是在MFC環境中調用OpenGL函數實現.將3ds Max所建肝臟模型導出為ASE的文件格式,保留了模型頂點及面的拓撲信息,該信息用于質點彈簧模型的建立及無網格模型表示,ASE文件讀取用C++程序語言中ifstream類來實現的.并將其在MFC框架用OpenGL函數繪制該模型如圖5所示.

圖5 用OpenGL繪制的肝臟模型
主程序模塊是虛擬肝臟形變仿真的核心模塊,該模塊主要包括碰撞檢測子模塊、物理形變子模塊和數值計算子模塊.在虛擬主模擬程序中,首先調用數據預處理模塊,繪制肝臟組織模型及場景繪制,建立虛擬的手術環境;然后用戶通過鼠標拾取的操作實現交互操控肝臟軟組織,程序獲取鼠標交互的輸入信息,調用碰撞檢測模塊算法,檢測該虛擬器械是否與肝臟模型發生碰撞.若發生碰撞根據鼠標操作計算外力大小即反饋力計算,計算外力的同時進入形變計算模塊,根據實驗預先想要仿真何種物理形變模型,則調用相對應的物理形變算法,物理形變算法有基于質點彈簧的網格形變算法、無網格形變算法、兩者模型混合的形變算法,完成物理形變算法后需要對形變模型的動力學方程數值積分進行計算,并且計算形變過程中的位移大小.最后,更新形變后的模型幾何數據信息,調用圖形繪制模塊,將形變后的肝臟模型在顯示器上視覺反饋給用戶.
3.2.1 碰撞檢測子模塊
碰撞檢測子模塊是形變計算的前提準備步驟,當鼠標拾取操作作用在肝臟模型區域,需要檢測該操作位置在模型上的最鄰近質點,同時搜索該質點的局部區域為實現動態轉換的混合形變模型作前期工作,并把碰撞檢測到的質點輸出到信息輸出區反饋給用戶.
3.2.2 物理形變子模塊
物理形變子模塊是在肝臟軟組織幾何建模的基礎上,根據肝臟軟組織的生物力學特性分別完成質點彈簧、無網格、質點彈簧與無網格混合的物理形變建模.該模塊將3種形變計算模型集成在一起,對這3個形變模型分別建立一個可交互操作界面.在各個形變模型界面對控制區的實驗參數進行初始化設置,用戶交互操作時檢測到鼠標拾取的模型碰撞點,則可以按照需要的形變仿真模型切換到相應的形變模型算法中.系統通過模擬相應的模型在操控力作用下產生的形變過程,將形變整體過程反饋給用戶.圖6、圖7、圖8分別為肝臟質點彈簧模型形變界面、肝臟無網格模型形變界面、混合模型形變界面.首先用戶根據想要仿真的物理模型,鼠標點擊切換到相應的形變界面,并載入肝臟模型,完成相對應的物理形變模型繪制模型;其次根據實驗仿真可以在控制區對實驗參數進行重新設置,最后在鼠標交互操作下模擬肝臟軟組織的物理形變,系統在OpenGL視圖區將形變過程反饋給用戶.

圖6 肝臟質點彈簧模型形變界面

圖7 肝臟無網格模型形變界面

圖8 混合模型形變界面
3.2.3 數值計算子模塊
數值計算子模塊是在對肝臟軟組織模型的各個質點進行受力分析后,需要對模型質點的運動方程進行求解,得到軟組織質點在每個時間步長內的位置,進而對肝臟軟組織形變進行實時仿真.用于模型運動方程求解的數值算法主要有顯示歐拉積分與隱式歐拉積分,它們將二階微分方程轉化為一階常微分方程,通過迭代求解一階常微分方程進而得到質點的速度及位置.
一個良好的反饋模塊能夠加強虛擬形變手術系統的沉浸感和真實感.反饋模塊功能主要包括視覺反饋與力反饋.本系統的視覺反饋是在視圖區進行三維場景展示,其中實現肝臟模型對象的視覺可視化需要對模型圖形繪制,繪制方式以網格和點云表示,網格表示質點彈簧模型,點云表示無網格模型.在肝臟軟組織模型的形變過程中,采用OpenGL完成虛擬場景渲染及在每隔一個時間步長繪制肝臟模型形變,用戶可以通過視圖區獲取在虛擬手術場景中器械操控肝臟軟組織的形變過程.同時,在力反饋方面,雖然該系統未引入力反饋裝置,但根據鼠標拾取操作來模擬虛擬器械操控肝臟模型.并且對因操控下形變過程的反饋力及節點位移進行計算,把形變位移及反饋力大小在信息輸出區反饋給用戶,從而提供了虛擬的力反饋環境.
本文以真實、實時模擬虛擬手術中肝臟軟組織的形變為目標,綜合了計算機圖形學、人機交互技術、彈性力學、數值計算等多門學科知識,結合了肝臟軟組織的生物力學特性,肝臟三維幾何建模和鼠標拾取的碰撞檢測方法,主要對虛擬肝臟軟組織形變手術中要同時達到真實感與實時性的要求進行研究.首先介紹了系統的整體架構、實驗平臺和界面設計;然后給出系統的算法設計;繼而再分別介紹本系統的幾個主要模塊功能.通過對本系統在架構、界面設計以及功能上的介紹,明確了本系統的工作完成目標和結果,并驗證了算法的可行性,實現了虛擬手術中肝臟形變仿真系統.