摘要:基于VTK開發(fā)包提出了一種交互式獲取三維CT數(shù)據(jù)任意切片的方法。首先由CT圖像序列構造出三維體數(shù)據(jù),并實現(xiàn)了體數(shù)據(jù)切片的顯示,然后利用VTK的交互功能實現(xiàn)體數(shù)據(jù)任意切片信息的獲取和顯示。結果表明該方法有助于醫(yī)生從不同截面對同一組織進行觀察和診治。
關鍵詞:三維CT數(shù)據(jù);切片;交互式控制;VTK
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2008)23-1012-02
A Method of Interactively Obtaining Arbitrary CT Slice
FENG Wei-qian,HUANG Zhan-peng,HUANG Mao-sheng
(College of Medical Information Engineering, GuangDong Pharmaceutical University, Guangzhou 510006, China)
Abstract: A method that interactively obtains arbitrary CT slice based on VTK environment is presented. Firstly 3D volume-data is constructed from series of CT slices and CT slices is visualized. Then arbitrary slice of the volume-data is interactively obtained and rendered by using VTK. Experiments show that the interactively obtained slice of same tissue can assist the doctor to observe and diagnose.
Key words: 3D CT data; slice; interactive control; the visualization toolkit
1 引言
隨著醫(yī)學影像技術的發(fā)展,如CT和MRI等設備的研制成功并投入使用,給疾病的檢查與診斷帶來了革命性的變革,這些成像系統(tǒng)為醫(yī)生提供了豐富的組織、器官的斷層圖像信息,幫助醫(yī)生更加迅速、準確的診斷疾病。然而現(xiàn)在醫(yī)生只能根據(jù)橫斷面進行觀察,如何利用三維醫(yī)學設備獲取的信息,能夠交互式地根據(jù)需要查看任意方位的切片信息,以更好地輔助醫(yī)生的診斷,提高診斷的準確性[1]。本文基于VTK三維可視化開發(fā)包實現(xiàn)了三維CT數(shù)據(jù)的任意切片信息的獲取技術。
2 VTK中三維物體的顯示與切割
本文利用強大的三維可視化工具VTK實現(xiàn)三維醫(yī)學CT數(shù)據(jù)的讀取和顯示,然后設計基于鼠標的交互式工具,用戶可以根據(jù)需要用鼠標調節(jié)截面的位置,獲取CT數(shù)據(jù)中任意切片的圖片信息,并將結果顯示出來。
2.1 三維可視化工具VTK
VTK(Visualization ToolKit)是一個用于計算機三維圖形,可視化和圖像處理的軟件系統(tǒng)[2]。Visualization ToolKit是在面向對象原理的基礎上設計和實現(xiàn)的,它的內核是用C++構建的,提供了300 多個類,還包含有幾個轉換界面,因此也可以自由的通過Java,Tcl/Tk和Python各種語言使用
Visualization ToolKit。 Visualization ToolKit 在實現(xiàn)上是比OpenGL 更高層次的抽象,這意味著它能夠更方便的進行可視化工作。Visualization Toolkit 是給從事可視化應用程序開發(fā)工作的研究人員提供直接的技術支持的一個強大的可視化開發(fā)工具,其基本的繪制流程如圖1所示。
2.2 任意切片平面的獲取
切片P沿法向量n的方向在三維體內平移距離d到切片Q的位置。切片上相應點C1(C1x,C1y,C1z)與C2(C2x,C2y,C2z)坐標滿足如下關系:
切片P、Q經過同一點C(Cx,Cy,Cz),射線L過點C且平行于Z軸正方向,切片P在三維體內沿L順時針旋轉一個角度0到切片Q的位置,則兩切片法向量n1( n1x,n1y ,n1z)和 n2 (n2x,n2y, n2z)滿足如下關系:
若將切片P沿過點C且平行于其它坐標軸正方向的射線旋轉,只需改變矩陣T、R(0)即可得到新位置處切片的法向量[3]。通過對三維體中某個已獲取切片的交互操作(如平移、旋轉或二者結合等),由式(2)、(3)我們可得到新位置處切片經過的點坐標或者法向量,再根據(jù)點法式可得到相應的切片方程,運用圖2所示的模型進行重繪,可獲得三維體內其它方位的切片。
3 系統(tǒng)實現(xiàn)
本文利用VC 6.0開發(fā)工具結合VTK軟件開發(fā)包實現(xiàn)任意切片的獲取。
3.1 開發(fā)環(huán)境的設置
1)選擇Tools->Options->Directories,選擇Show Dirctories for 的Include files,添加vtk安裝目錄中的Include文件夾,就是.h后綴的文件。2)選擇Tools->Options->Directories,選擇Show Dirctories for 的Libraries files,添加vtk安裝目錄中的Lib文件夾和bin文件夾。3)打開 c:\\vtk\\bin\\bin\\debug 個文件夾選擇其中所有的DLL 后綴的文件全部復制到c:\\windows\\system 下。
3.2 主要程序實現(xiàn)代碼
//讀取三維的CT數(shù)據(jù),設置數(shù)據(jù)所在的路徑及數(shù)據(jù)的長、寬和高
vtkVolume16Reader* volumeData;
volumeData ->SetFilePrefix(\"headsq/quarter\");
volumeData ->SetDataDimensions(64, 64);
volumeData ->SetImageRange(1, 93);
//顯示三維交互式工具,設定其交互式場景、插值方式、源數(shù)據(jù)集和切片的初始位置
vtkImagePlaneWidget* planeWidgetX;
planeWidgetX->SetInteractor(iren);
planeWidgetX->SetResliceInterpolateToNearestNeighbour();
planeWidgetX->SetInput(v16->GetOutput());
planeWidgetX->SetPlaneOrientationToXAxes();
//將獲取的CT圖片信息根據(jù)查找表的內容轉換成圖片
vtkImageMapToColors* colorMap;
colorMap->SetInput((vtkDataObject*)planeWidgetX->GetResliceOutput());
//設定圖片的查找表,可以根據(jù)需要有選擇的顯示某部分的信息
colorMap->SetLookupTable(lookupTable);
colorMap->SetActiveComponent(0);
colorMap->SetOutputFormatToLuminance();
//將獲取的切片進行顯示
vtkImageActor* imageActor;
imageActor->SetInput(colorMap->GetOutput());
顯示效果如圖3所示。圖3(a)為程序的運行界面,鼠標右鍵實現(xiàn)窗位和窗寬的控制,按住鼠標右鍵向下和向右移動鼠標分布提高了下界和上界的值,可以根據(jù)需要選擇感興趣的數(shù)據(jù)范圍。通過點按鼠標左鍵旋轉體數(shù)據(jù)中的切割面,可以實現(xiàn)交互式地獲取任意切片的數(shù)據(jù),圖3(b)和圖3 (c)分別是橫截面和 矢狀面,而圖3(d)是交互式選擇任意切片的效果圖片。
4 結束語
VTK是一個用于可視化應用程序構造與運行的支撐環(huán)境,它是在三維函數(shù)庫OpenGL的基礎上采用面向對象的設計方法發(fā)展起來的。它將我們在可視化開發(fā)過程中會經常遇到的細節(jié)屏蔽起來并將一些常用的算法封裝起來,以類的形式給以支持,可以高效的建立起各種的可視化流程。基于VTK強大的開發(fā)包設計出可以獲取任意切片的系統(tǒng),能夠改變當前只依據(jù)橫截面進行診斷的現(xiàn)狀,從各個方位進行查看,能夠有效地提高診斷的準確率。
參考文獻:
[1] 管偉光.體視化技術及其應用[M].北京:電子工業(yè)出版社,1998.
[2] Will S,Martin K,Lorensen B.The Visualization Toolkit-An Object—Oriented Approach To 3D Graphics[M].Kitware: Third Edition,2002.
[3] Hearn D,Pauline B.Computer Graphics(C VERSION,SECOND EDITION)[M].Prentice Hall,1998:409-422.