- 相關(guān)推薦
VTK-Widgets在醫學(xué)圖像交互測量中的研究
【摘要】 VTK-Widgets是虛擬場(chǎng)景中響應用戶(hù)事件的對象。介紹Widget的事件處理機制,并基于Widgets交互式得測量醫學(xué)圖像中感興趣對象間的距離、對象的角度和面積,此交互測量方法成功應用于三維可視化系統中,有助于醫生診斷疾病。
【關(guān)鍵詞】 Visualization toolkit(VTK);Widget;測量;醫學(xué)圖像;函數;坐標
Research of Medical Image Interactive Measurement based on VTK-WidgetsDAI Zhenhui1, ZHANG Yu1, JIANG Guiping1,CHEN Guoyue2
(1.Department of Biomedical Engineering, Southern Medical University, Guangzhou 510515, China;
2.Faculty of Systems Science and Technology ,Akita Prefectural University,Japan,Akita)
Abstract:VTK-Widgets are objects that respond to user events in a virtual scene. The mechanism of event processing is introduced, the distance between objects of interest, angle and area of objects interested in medical image are measured interactively based on Widgets. The method of interactive measure is applied to the 3D visualization system successfully and valuable for assisted diagnosis.
Key words:Visualization toolkit(VTK) ; Widget; Measure; Medical image; Function; Coordinate
1 引 言
通過(guò)CT或者M(jìn)RI獲得的醫學(xué)圖像是臨床診斷治療的重要依據,為了從醫學(xué)圖像中獲得更多有用的信息,需要對醫學(xué)圖像進(jìn)行各種變換、測量和標注。對醫學(xué)圖像施加變換的前后需要測量圖像內組織的長(cháng)度、角度和面積,同時(shí)對病灶中心等關(guān)鍵區域進(jìn)行文字標注,以便輔助醫生診斷疾病,于是測量工具便成為所有醫學(xué)圖像處理軟件中不可缺少的一部分。VTK是Kitware公司開(kāi)發(fā)的集計算機圖形、圖像處理和可視化于一體的工具開(kāi)發(fā)包,利用VTK可以進(jìn)行各種測量。
2 Widget的事件處理機制
Widget可以定義為幾何學(xué)和控制顯示對象信息行為的封裝,它允許用戶(hù)直接操作三維數據場(chǎng)中的數據。在VTK中的Widget是由2D的鼠標按鍵和移動(dòng)事件控制的,它接收交互器激活的VTK事件并產(chǎn)生相應的行為。Widgets的功能分兩步實(shí)現,一部分繼承于vtkAbstractWidget類(lèi),用于事件處理,另一部分繼承于vtkWidgetRepresentation類(lèi),用于幾何特征的描述[1]。
如圖1所示,vtkWidgetRepresentation是vtkProp的子類(lèi),這說(shuō)明它就像VTK中的Actor一樣可以加到vtkRenderer中,并在場(chǎng)景中顯示出來(lái),它與vtkAbstractWidget的某個(gè)合適的子類(lèi)結合產(chǎn)生一個(gè)3D Widget。VTK的事件處理系統能夠讓觀(guān)察者區分事件的優(yōu)先順序,通過(guò)他們優(yōu)先權的設置來(lái)跟蹤注冊順序,于是使用者可以同時(shí)操作多個(gè)Widget[2]。本文中介紹的Widget均基于Kitware公司2009年6月發(fā)布的最新的5.4.2開(kāi)發(fā)包。
3 距離測量職稱(chēng)論文
在VTK中具有距離測量功能的類(lèi)有vtkLineWidget、vtkLineWidget2、vtkDistanceWidget,其中vtkDistanceWidget類(lèi)是Kitware公司在5.4開(kāi)發(fā)包里新添加的專(zhuān)門(mén)進(jìn)行距離測量的工具,使用它可以快速完成對組織的測量工作。
3.1 二維切片的距離測量
通過(guò)多平面顯示工具可以從三維CT圖像數據場(chǎng)中獲取二維的組織切片,使用vtkLineWidget對二維切片中的組織進(jìn)行距離測量,該類(lèi)本身不具備測量功能,但我們可以借助其內部工具來(lái)完成測量。
生 物 醫 學(xué) 工 程 研 究 第29卷第1期 戴振暉,等:VTK -Widgets在醫學(xué)圖像交互測量中的研究 vtkLineWidget定義了一個(gè)交互放置在三維場(chǎng)景內的線(xiàn)段,當對二維切片進(jìn)行距離測量時(shí),把線(xiàn)段交互式的放置在需要測量的組織切片上,設線(xiàn)段的兩個(gè)端點(diǎn)分別為p1和p2,p1的坐標為(x1,y1,z1)p2的坐標為(x2,y2,z2),利用兩點(diǎn)間的距離公式計算p1和p2之間的距離。
通過(guò)vtkLineWidget得到兩個(gè)端點(diǎn)坐標,利用距離公式求得距離值為length,最后通過(guò)vtkTextActor類(lèi)將結果顯示在屏幕上。如圖2所示,使用此方法測量胸部切片內的氣管直徑為25.7152 mm。圖2 氣管直徑測量結果
Fig 2 Measurement result of tracheal diameter
3.2 三維器官的距離測量
當用戶(hù)在計算機屏幕上用鼠標點(diǎn)擊后,系統根據屏幕坐標點(diǎn)拾取到用戶(hù)所需要的三維物體上的點(diǎn),將其轉化為世界坐標系下的坐標值,拾取兩個(gè)特征點(diǎn)后,通過(guò)計算輸出用戶(hù)所需要的測量數據。本文使用vtkDistanceWidget類(lèi)對重建后的三維器官進(jìn)行長(cháng)度測量。
vtkDistanceWidget是vtkAbstractWidget的子類(lèi),用戶(hù)可以獨立的放置刻度尺的兩個(gè)端點(diǎn),當兩個(gè)端點(diǎn)被釋放時(shí),有一個(gè)專(zhuān)門(mén)的PlacePointEvent被激活以便有專(zhuān)門(mén)的操作來(lái)重置點(diǎn)的位置,要使用這個(gè)類(lèi)需要確定一個(gè)vtkDistanceWidget實(shí)例和一個(gè)Representation。它響應下列VTK事件:鼠標左鍵按下,鼠標拖動(dòng),鼠標左鍵釋放,這些VTK事件通過(guò)vtkWidgetEventTrans
?lator類(lèi)轉換成vtkDistanceWidget的widget事件:增加點(diǎn),移動(dòng),結束選擇[3]。
在VTK的三維場(chǎng)景中一般存在兩種模型,一種是用于對三維物體操作的Widget 模型,另一種是在場(chǎng)景中顯示的data模型。但本身處于三維場(chǎng)景中的widget 模型是無(wú)法自行觸動(dòng)消息響應函數對data 模型進(jìn)行控制,要想達到此目的,需要在它和data 模型中間設置一個(gè)橋梁,該橋梁就是通過(guò)command模式實(shí)現的回調函數。同時(shí)在外部存在一個(gè)Observer 模塊對data 模型進(jìn)行觀(guān)察,隨時(shí)反映data 模型的狀態(tài)[4]。
交互代碼:
vtkDistanceRepresentation2D *Distance;
double pos1[3], pos2[3];
Distance->GetPoint1WorldPosition(pos1);
Distance->GetPoint2WorldPosition(pos2);
double dist=sqrt(vtkMath::Distance2BetweenPoin
?ts(pos1,pos2));
通過(guò)vtkDistanceRepresentation2D獲得刻度尺兩個(gè)端點(diǎn)在世界坐標系內的坐標,使用距離計算函數: sqrt(Distance2BetweenPoints())得到被測物體的長(cháng)度值dist,最后通過(guò)vtkDistanceRepresentation2D的SetTi
?tle()函數將計算結果顯示在屏幕上。如圖3所示,使用傳統的光線(xiàn)投射算法對頭骨進(jìn)行三維重建[5-6],測量的眼眶寬度為74.4 mm。
4 角度測量
4.1 二維切片的角度測量
通過(guò)多平面顯示工具可以從三維CT圖像數據場(chǎng)中獲取二維的組織切片,使用vtkAngleWidget對二維切片中的組織進(jìn)行角度測量。
vtkAngleWidget用來(lái)測量共端點(diǎn)的兩條射線(xiàn)間的夾角,兩條射線(xiàn)是由三個(gè)點(diǎn)(一個(gè)中心點(diǎn),兩個(gè)端點(diǎn))確定的,三個(gè)點(diǎn)的位置可以獨立的設置,當其被釋放時(shí),有一個(gè)專(zhuān)門(mén)的PlacePointEvent被激活以便有專(zhuān)門(mén)的操作來(lái)重置點(diǎn)的位置,要使用這個(gè)類(lèi)需要確定一個(gè)vtkAngleWidget實(shí)例和一個(gè)Representation(vtk
?AngleRepresentation的一個(gè)子類(lèi))。
交互代碼:
vtkAngleRepresentation2D *Rep;
double point1[3], center[3],point2[3];
Rep->GetPoint1WorldPosition(point1);
Rep->GetCenterWorldPosition(center);
Rep->GetPoint2WorldPosition(point2);
通過(guò)vtkAngleRepresentation2D獲得三個(gè)特征點(diǎn)在世界坐標系內的坐標并自動(dòng)計算出兩條射線(xiàn)的夾角。如圖4所示,測量的椎骨切片的角度為88.3°。圖4 椎骨角度測量結果
Fig 4 Measurement result of vertebrae’s angle
4.2 三維器官的角度測量
在制作三維模型時(shí),經(jīng)常需要測量某個(gè)部位的角度,使用vtkAngleWidget可以對立體模型的角度進(jìn)行測量。
三維角度測量與二維角度測量的工作機制相同,唯一的不同在于:三維角度測量使用vtkAngleRe
?presentation3D作為vtkAngleWidget的Representation。通過(guò)vtkAngleRepresentation3D獲得三個(gè)特征點(diǎn)在世界坐標系內的坐標并計算出兩條射線(xiàn)的夾角。如圖5所示,測量牙齒模型中牙根的角度為42.2°。
圖5 牙根角度測量結果
Fig 5 Measurement result of fang’s angle
5 面積測量
腫瘤體積的測量是臨床診斷和放射治療的重要指標,為了更加準確地評估治療效果,對包含腫瘤的切片進(jìn)行處理,計算從斷層切片中分割出的腫瘤區域的面積,用此面積乘以?huà)呙璧膶泳嘁源砻恳粚拥捏w積,通過(guò)累加得到腫瘤的體積[7],所以,切片的面積測量對于體積的測量是有重要意義的。VTK并未提供專(zhuān)門(mén)測量面積的工具,我們可以用vtkContour
?Widget分割出腫瘤區域,采用多邊形近似法計算腫瘤切片的面積。
本研究以氣管的軸位切片為例計算面積,即切片位于XOY平面上,見(jiàn)圖6,求n邊形面積,把n邊形的每條邊的兩個(gè)端點(diǎn)分別與坐標原點(diǎn)O連接,構成n個(gè)以O為頂點(diǎn)的三角形[8]。設三維空間內一個(gè)三角形三個(gè)頂點(diǎn)的坐標分別為:A0(x0,y0,z0),Ai(xi,yi,z0),Ai+1(xi+1,yi+1,z0),z0表示三角形位于z=z0平面上,利用三角形面積公式求每個(gè)三角形的面積。三角形面積公式:
Si=(x0yi-x0yi+1-xiy0+xiyi+1+xi+1y0-xi+1yi)*0.5(1)
設多邊形的頂點(diǎn)分別為A1,A2.....An那么多邊形的面積為:
S=∑n-1i=1S(OAiAi+1)+S(OAnA1)(2)
S(OAiAi+1)表示以O為頂點(diǎn)的三角形面積,當三個(gè)頂點(diǎn)順時(shí)針排列時(shí)面積值為負,逆時(shí)針排列時(shí)面積值為正,三角形面積值的正負分別表示此三角形使多邊形面積增加還是減小。
因為每個(gè)三角形都有一個(gè)頂點(diǎn)為坐標原點(diǎn)O(0,0),那么三角形的面積為:
S(OAiAi+1)=0.5?(xiyi+1-xi+1yi)(3)
多邊形面積為:
圖6 多邊形劃分為多個(gè)三角形的圖解
Fig 6 Schema of polygon divided into several triangle
利用vtkContourWidget實(shí)現以上算法,vtkContour
?Widget是vtkAbstractWidget的子類(lèi),用來(lái)選擇一系列點(diǎn),并在這些點(diǎn)之間畫(huà)線(xiàn)。利用vtkContourWidget畫(huà)輪廓線(xiàn)時(shí),為了畫(huà)出一個(gè)閉合的區域,取點(diǎn)原則是最后一個(gè)結點(diǎn)與第一個(gè)結點(diǎn)重合。 交互代碼:
vtkOrientedGlyphContourRepresentation*ContourRep;
intn=
ContourRep1 -> GetNumberOfNodes();
double pos0[3];
double pos1[3];
double pos2[3];
ContourRep1->
GetNthNodeWorldPosition(0,pos0);
ContourRep1->
GetNthNodeWorldPosition (i,pos1);
n為輪廓線(xiàn)上結點(diǎn)的個(gè)數,由于第一個(gè)結點(diǎn)和最后一個(gè)結點(diǎn)重合,所以,形成的多邊形有n-1個(gè)結點(diǎn),可以劃分成n-1個(gè)三角形。通過(guò)函數GetNthNodeWorldPosition(0,pos0)獲得第一個(gè)結點(diǎn)的坐標pos0,pos1為第i+1個(gè)結點(diǎn)的坐標,如此可以獲取多邊形每一個(gè)頂點(diǎn) 的坐標。利用式(4)可以求得輪廓線(xiàn)內部區域的面積。如圖7所示,測量的是氣管的軸位切片的面積為:520.8603 mm2。
6 結論
所有測量功能均依靠鼠標在圖像上點(diǎn)擊和拖動(dòng)完成,對于測量系統而言,精度是一個(gè)重要的參數,本文中的測量方法與兩個(gè)因素密切相關(guān),一是比例尺的確定,另一個(gè)就是測量步驟中標記線(xiàn)段的準確性。要提高整個(gè)系統的測量精度,可以通過(guò)提高圖像的掃描分辨率,放大圖像以及多次測量求平均值的方法來(lái)實(shí)現。
【參考文獻】
[1]Schroeder W J,Andy Cedilnik. Kitware’s software developer’s quarterly[M]. New York: Kitware ,2007:3-4.
[2]Arjan J. F. Kok·Robert van Liere.A multimodal virtual reality interfacefor 3D interaction with VTK[J].Knowledge and Information Systems,2007.201-212.
[3]Schroeder W,Martin K,Lorensen B. The visualization toolKit an object-oriented approach to 3D graphics [M].3th ed.New Jersey: Prentice- Hall,2002:241-243.
[4]袁杲, 葉峰,楊玲,謝明元.基于VTK 的醫學(xué)圖像交互式三維測量技術(shù)研究[J].計算機工程與設計,2008,29(13).
[5]Schroeder W J. The VTK user's guideUpdated for version 4.0 [M]. New York: Kitware, 2001:19~20,48-52.
[6]唐澤圣.三維數據場(chǎng)可視化[M].北京:清華大學(xué)出版社,1999:15-78.
[7]Mayr N A, Taoka T.Method and timing of tumor volume measurement for outcome prediction in cervical cancer using magnetic resonance imaging[J]. Int J. Radiat. Oncol Biol Phys, 2002, 52(1):14-22.
[8]數學(xué)手冊編寫(xiě)組.數學(xué)手冊[M].北京:高等教育出版社,1979:331-332.
【VTK-Widgets在醫學(xué)圖像交互測量中的研究】相關(guān)文章:
醫學(xué)圖像配準技術(shù)及其研究進(jìn)展03-01
醫學(xué)圖像領(lǐng)域中數字圖像處理的應用研究性論文04-24
基于醫學(xué)CT圖像的三維重建研究03-02
脈沖耦合神經(jīng)網(wǎng)絡(luò )在醫學(xué)圖像處理中的應用11-22
基于內容的圖像檢索研究11-20
紅外圖像增強算法研究03-07