徐振豪 何良華



摘要:隨著醫學與計算機科學的不斷融合,醫學影像三維可視化技術在醫學領域扮演著重要的角色。為了幫助醫務人員更直觀觀察前列腺癌及其周圍器官分布情況,在Unity 3D平臺上實現了對前列腺醫學影像的三維重建及交互的系統。將醫學分割處理后的結果作為數據輸入,通過一種改進的線性插值算法獲得內插二值圖像,利用面繪制算法生成三角形網格模型、網格平滑算法進行迭代優化,最終渲染出三維可視化模型,在unity上以系統的形式進行展示和交互。
關鍵詞: 前列腺; 三維可視化; Unity3D; 面繪制算法; 線性插值算法; 網格平滑算法
中圖分類號: TP391? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)01-0008-03
Abstract:With the continuous integration of medicine and computer science, the 3D visualization technology of medical images plays an important role in the medical field. In order to help medical staff observe prostate cancer and the distribution of its surrounding organs more intuitively, implements a 3D reconstruction and interactive system for prostate medical imaging on the Unity 3D platform. Taking the result of medical segmentation as input, the interpolated binary image is obtained through an improved linear interpolation algorithm, the triangle mesh model is generated by MC algorithm, and a mesh smoothing algorithm is used for iterative optimization. Finally, a 3D visualization model is rendered, which is displayed and interacted on Unity.
Key words:prostate;3D visualization;unity3D;marching cubes;linear interpolation; mesh smoothing
近年來,隨著計算機軟硬件技術的不斷發展,醫學三維可視化也逐步發展成了一個熱門的領域。通過醫學三維可視化技術,醫護人員的觀察對象從MRI、CT等二維斷層序列轉變為醫學器官所對應的三維模型,這使得醫護人員更直觀看到三維器官且可以根據三維模型來判斷病灶的相對位置、大小、形狀等信息。隨著圖像可視化研究的日益發展與成熟,它的開發工具包也逐漸進行大眾的視野,其中最為常見的就是ITK、VTK和MITK。國內有學者利用VTK和VS實現了幾種面繪制和體繪制方法的三維重建及交互[1],但VTK運行速度慢、重建結果存在鱗狀效應的缺點仍無法根治。為此,中科院自動化所的田捷博士帶領的團隊開發出MITK[2]。MITK集成了醫學影像領域內各算法,是一個集醫學影像分割、配準、三維可視化為一體的框架,填補了VTK+ITK的缺陷。MITK框架集成了基于閾值的分割算法、區域增長算法以及交互式分割算法,較好地應用于肺部、腳踝等CT圖像的三維可視化,但是對于復雜的前列腺影像器官三維可視化的工作而言,MITK并不是一個有效的選擇,該框架提供的分割算法并不能將直腸、精囊、前列腺、精囊做正確分割并重建三維模型。除此之外,龐大復雜的MITK系統存在編譯安裝不方便、不利于二次開發等問題。作為游戲引擎開發的Unity平臺,它構建的可視化項目主要覆蓋在地理空間、游戲開發、虛擬現實等領域。相比而言,很少有人將Unity技術應用到醫學三維可視化領域,這將是一個全新的嘗試。基于Unity 3D平臺實現的醫學三維可視化系統最終會生成可執行文件,具有界面友好、可移植性強、GPU視覺渲染效果強等特點。為此,本文基于Unity平臺實現了一個前列腺三維可視化交互系統,并實現了一種改進的基于深度優先篩選的二值斷層圖像的線性插值算法。
1 算法實現
本系統以前列腺MRI影像分割后的結果作為輸入,先使用基于深度優先篩選的二值斷層圖像的線性插值算法從而得到內插斷層圖像,再使用面繪制算法生成前列腺的三角片網格模型,再利用網格平滑算法迭代優化三角片,最終生成三維前列腺模型。
1.1數據預處理
經醫學影像分割算法之后,我們將從原始MRI數據獲取到NIFTI格式的分割結果,其中包括前列腺、直腸、精囊、腫瘤這四個器官。將NIFTI格式的分割結果轉化成二值化斷層序列,將對應器官的二值化斷層序列放在相對應的文件。以實驗中前列腺患者所用的核磁共振儀為例,上述4個器官經處理后均生成24張二值化斷層序列圖像,存放于與之對應的文件夾下。
1.2線性插值
在醫學三維可視化過程中,由于受限于斷層掃描設備、圖像存儲空間、安全性等因素,相鄰斷層之間存在一定的距離,這使得重建出的三維模型的層間分辨率遠低于二維斷層圖像的層內分辨率,該重建結果存在失真的問題。因此,為了得到更真實的前列腺可視化結果,就必須對這些斷層序列進行插值處理[3]。由于斷層序列圖像存在特殊性以及為了降低運算復雜度,本文所提出的插值算法只根據相鄰斷層圖像的輪廓信息內插出中間斷層的輪廓信息,然后經過填充得到最終的中間斷層圖像。另外,考慮到患者可能存在不規則的病變精囊或腫瘤,利用深度優先算法遞歸確定匹配輪廓來解決可能存在的問題。這就是本文提出的基于深度優先篩選的二值斷層圖像的線性插值算法。
本文是基于胡曉飛提出的一種簡單而有效的輪廓線匹配算法[3]。該方法將S和T的質點作為圓心劃分為4個象限,每個象限都有一對匹配線段,然后再根據特定的匹配準則確定最佳匹配點對,使之成為圖1的情況,最終通過線性插值計算出[Ri]。她提出的匹配準則是盡可能將S上的輪廓線點集平均分配給T上的輪廓線點集。
該方法對于解決前列腺影像中類橢圓器官:前列腺、直腸等具有較好的應用。但精囊和腫瘤并不能直接使用該方法進行內插。一方面是精囊分為左右精囊、患者可能存在多個腫瘤因而待插值圖像中存在多個封閉區域。另一方面是病變的精囊或腫瘤可能存在不規則形狀會導致上述方法在劃分象限后出現多條輪廓線。如圖2所示是前列腺MRI影像中的一張橫截面切片,從上到下分別表示前列腺、精囊、直腸。從中可以看出精囊存在兩個封閉區域且形狀復雜不規則。
基于上述分析,本文對胡曉飛學者提出的算法做出一定改進以應用于前列腺影像的插值工作。接下來主要介紹本文實現的算法步驟:
對于相鄰兩張待插值的二值斷層圖像,起始圖像記為S,另一記為T,S與T之間需要內插的M張記為[Ri,i∈M]。
首先,計算內插層數M。分割得到NIFTI格式數據的頭文件中對應的pixdim體素維度字段保留相鄰斷層層間間隔以及每個斷層所對應的厚度。由此可以求出相鄰斷層需要的內插層數M。
其次,提取圖像的邊緣輪廓。考慮到精囊和腫瘤存在多個封閉區域,此處使用COCO數據集進行格式互換時的binary_mask_to_polygon函數[4],可提取mask圖像中的所有封閉區域的輪廓線點集,以list的數據結構存儲所有輪廓線的點集,有效解決了精囊和腫瘤存在多個封閉區域的問題。
接下來要計算出待插值的輪廓線的質心坐標。對于每張二值圖像,可獲取對應器官的輪廓線,計算出所有輪廓線上點的質心坐標[x0,y0]:
其中,[xi,yi]為這些像素點的坐標,N為輪廓線上像素點總數。
下一步就是確定S和T輪廓線的匹配線段。考慮到病變精囊或腫瘤可能存在不規則形狀會導致每個象限存在多條輪廓線,本文對每個象限的輪廓線進行深度優先遍歷,搜索并記錄該象限中所有存在的輪廓線,篩選出像素點數最多的輪廓線作為該象限的最佳輪廓線。最后,進行閉環檢測,由于經上述處理后各象限的輪廓線可能存在間斷現象,利用二維的線性插值補充輪廓點確保每張斷層圖像最終篩選出的輪廓線形成一個閉環。
在確定好輪廓線之后,接下來就要確定最佳匹配點對從而進行線性插值。本文利用遞歸調用函數來實現這一匹配過程。
①先分別計算兩條輪廓線的中心點;
②然后將兩輪廓線對應的起點、中點、終點作為一對匹配點,進行線性插值計算內插的像素點坐標;
③接著起點保持不變,將中點作終點遞歸執行①②步驟;
④將中點作為起點,終點不變遞歸執行①②步驟。
經上述遞歸式最佳匹配與線性插值過程,所得的結果只是內插圖像的邊緣輪廓線,因此通過進一步填充運算得到一個最終完整的內插圖像。結果如圖3、4所示,對一名患者的前列腺、精囊器官進行線性插值,內插層數M為7。
1.3面繪制
經過線性插值之后,便得到了各器官經內插之后的二維圖像切片。但我們最終目的是為了得到前列腺影像的三維模型數據,因此需要用面繪制算法將二維切片數據轉換為三維可視化模型并實時渲染。Marching Cubes算法是由Lorensen等人于1987年提出并實現的一種面繪制算法[5]。該算法的主要思想是以體元為單位來確定三維模型數據部分與背景部分的邊界,利用256種可枚舉的情況來實現體元內的等值三角片抽取。遍歷所有二維斷層圖像的體元,抽取出其中的三角片最后集合成能表示三維模型表面的三角網格。本文根據范強等人基于中值法改進的Marching Cubes算法進行面繪制實現前列腺等器官的三維重建[6][7]。相比于經典的MC算法,該改進避免了遍歷無用的體素和形成空白三角片,提高了處理速度和效率。最終,我們得到了關于前列腺影像的三維模型數據:頂點坐標數組和三角片的索引數組。
1.4網格平滑
為了使三維模型的網格更加平滑,還引入了網格平滑算法對三角網格進行迭代平滑。此處使用拉普拉斯平滑算法[8][9]:原理是將每個頂點都移動到相鄰頂點的平均位置,即采用所謂傘狀算子:[Up=1ni=0n-1Adjip]。在傘狀結構中表示這樣的過程如圖5所示。
1.5模型渲染
首先,利用Unity中的MeshRender組件確定各器官的材質顏色并渲染出來,此處以泌尿科大夫的一般標注習慣對各器官添加材質顏色,其中直腸材質顏色為藍色、前列腺為綠色、精囊為黃色、腫瘤為紅色。然后,將頂點坐標數組和三角片的索引數組數據賦值給Unity中的Mesh組件,最終渲染出前列腺影像的三維可視化模型。渲染結果如圖6、7所示。
2 系統實現
由于大部分腫瘤都會存在于前列腺內部,因此需要增設調節透明度功能,這樣醫護人員可根據透明度的調節來觀察到前列腺內部的腫瘤大小及其結構。在Unity3D中需要將材質的Rendering Mode修改為Fade模式。為實現前列腺影像三維模型的旋轉功能,我們將前列腺三維模型設為參照物,場景中的主相機根據三維模型的中心點進行旋轉,并設置可調節的旋轉角速度參數。
最終,通過在Unity3D場景中增加交互按鈕及滾動條等插件,實現了對三維模型進行平移、縮放、調節透明度、旋轉及控制旋轉速度等交互操作。在代碼中實現混合編程,將線性插值部分的python代碼嵌入到C#腳本中,實現一個端到端的前列腺影像三維可視化系統。該場景通過對前列腺分割結果的全方位展示,輔助醫生了解病灶的空間位置及大小,提高手術精度。主界面如圖8所示。
3 結論
本文提出了一種基于深度優先篩選的二值斷層圖像的線性插值算法,其目的是針對性地解決前列腺影像中精囊和腫瘤多區域以及不規則形狀所帶來的問題。但該線性插值算法仍存在一定的不足,僅針對特定前列腺影像問題做出的改進,泛化能力不強。同時,本文突破以往用VTK和MITK開發三維可視化系統的局限性,針對復雜結構的前列腺影像在Unity3D平臺上用面繪制算法生成三維網格模型,并實現交互。在今后的研究過程中,前列腺影像三維可視化系統可將基于人工智能的前列腺器官分割技術和面繪制三維重建技術相融合形成端到端的自動分割和三維可視化系統,能更切實地幫助醫生生成自動分割的可視化模型。
參考文獻:
[1] 劉敏.基于VTK的醫學圖像三維重建的研究[D].秦皇島:燕山大學,2013.
[2] 汪文星.基于MITK的CT圖像三維可視化方法研究[D].廣東:華南理工大學,2011.
[3] 胡曉飛.一種用于二值斷層圖像的插值方法[C].合肥:第二屆全國幾何設計與計算學術會議,2005.
[4] Lin T Y,Maire M,Belongie S,et al.Microsoft COCO:common objects in context[M]//Computer Vision – ECCV 2014.Cham:Springer InternationalPublishing,2014:740-755.
[5] Lorensen W E,Cline H E.Marching cubes:a high resolution 3D surface construction algorithm[J].ACM SIGGRAPH Computer Graphics,1987,21(4):163-169.
[6] 范強,劉鵬.基于中值法改進Marching Cubes曲面重建算法[J].測繪與空間地理信息,2019,42(12):11-14.
[7] wozhengtao.圖像數據到網格數據-1——MarchingCubes算法[CP]. https://blog.csdn.net/wozhengtao/article/details/51429964.
[8] Field D A.Laplacian smoothing and Delaunay triangulations[J].Communications in Applied Numerical Methods,1988,4(6):709-712.
[9] wozhengtao.幾種網格平滑算法的實現[CP]. https://blog.csdn.net/wozhengtao/article/details/51431378.
【通聯編輯:唐一東】