摘 要:可視化是在信息化進(jìn)程中發(fā)展起來的一個全新領(lǐng)域,VT是一個功能強(qiáng)大的可視化工具包。體繪制技術(shù)作為可視化最活躍的領(lǐng)域之一,其算法不斷得到改進(jìn)和完善。簡要介紹VT的功能和應(yīng)用,描述幾種不同的繪制算法,并在此基礎(chǔ)上用TCL語言實現(xiàn)一個簡單的基于VT的體繪制系統(tǒng),給出具體設(shè)計實現(xiàn)過程。該系統(tǒng)實現(xiàn)體繪制技術(shù)中4種不同的算法,為VT工具包更好地應(yīng)用于可視化領(lǐng)域提供了實踐基礎(chǔ)。
關(guān)鍵詞:可視化;VT;體繪制;三維重建
The Implement of Volume Rendering System Based on VT
LI Jing,LI Changhua
(School of Information Control Engineering,Xi′an University of Architecture and Technology,Xi′an,710055,China
Abstract:Visualization is an emerging filed that developed in information progress,VT is a visualization toolkits with strong functions.Volume rendering technology,as an active filed,its algorithm is improving and becomes perfect.In this paper,it introduces the function and application of VT,describes several different rendering algorisms.It realizes a simple volume rendering system which uses TCL,and provides complete process.This system accomplishes four different algorisms about volume rendering.It provides the practical basis that VT toolkit applied in visualization.
eywords:visualization;VT;volume rendering;3D reconstruction
1 引 言
隨著社會信息化的發(fā)展和網(wǎng)絡(luò)應(yīng)用的日益廣泛,人們所獲得的信息源越來越龐大,對于大型數(shù)據(jù)甚至海量數(shù)據(jù)的處理需求日益迫切??茖W(xué)計算可視化(Visualization in Scientific Computing就是在這種背景下提出并發(fā)展起來的一個全新的領(lǐng)域??茖W(xué)計算可視化的本質(zhì)是運(yùn)用計算機(jī)圖形學(xué)和圖像處理技術(shù),將科學(xué)計算過程中產(chǎn)生的數(shù)據(jù)及計算結(jié)果轉(zhuǎn)換為圖像,在屏幕上顯示出來并進(jìn)行交互處理,其核心是三維數(shù)據(jù)場的可視化[1]。體繪制是可視化最活躍的研究子領(lǐng)域之一 ,它不借助中間圖元,而是直接將三維空間的離散數(shù)據(jù)轉(zhuǎn)換為二維圖像。十多年來,在廣大科研人員的努力下,已經(jīng)發(fā)展了一些體繪制技術(shù)來分析、理解和繪制數(shù)據(jù)場中包含的物體,并且已在醫(yī)學(xué)、天文、地理、氣象、航天等計算機(jī)模擬中得到廣泛應(yīng)用。本文主要簡單介紹可視化工具包VT的功能及應(yīng)用,并具體實現(xiàn)一個基于VT的利用TCLT語言開發(fā)的體繪制系統(tǒng)。
2 可視化工具包VTK
VT(The Visualization Toolkits是一個基于面向?qū)ο蠓椒ㄔO(shè)計的、功能強(qiáng)大的可視化和圖形圖像處理的工具箱。它是在三維函數(shù)庫OpenGL 的基礎(chǔ)上發(fā)展起來的,VT構(gòu)造在C++語言之上,它不僅基于C++類庫,還支持腳本語言TCLTk,Java,Python,支持Windows,Unix等操作系統(tǒng)。VT能夠支持和處理多種表示格式的數(shù)據(jù),如有規(guī)則的或無規(guī)則的點(diǎn)陣 (pointsets,圖像 (image,體元數(shù)據(jù) (volume 等[2]。此外VT還將在可視化開發(fā)過程中會經(jīng)常遇到的細(xì)節(jié)屏蔽起來,并將一些常用的算法進(jìn)行封裝,同時,用戶還可以在VT基類的基礎(chǔ)上開發(fā)自己的類庫。自從1993年問世以來,VT憑借其開放靈活的特性受到越來越多人的青睞,不斷地被改進(jìn)和完善。
2.1 VTK的繪圖模式
VT的繪圖模式可用于2D,3D等一般圖形的處理,它主要有9種基本對象:
角色(Actor:VTActor代表渲染場景中的繪制對象實體,通過調(diào)節(jié)參數(shù)可以設(shè)置角色的位置、方向、渲染特性、紋理影射等屬性。
燈光(Light:VTLlight類提供了燈光的位置、燈光的狀態(tài)(開關(guān)、亮度、顏色等。同時也可以設(shè)置光源的照射角度以及衰減程度。
照相機(jī)(Camera:VTCamera類用來設(shè)置視點(diǎn)的位置以及焦點(diǎn)位置及其他屬性。
屬性(Property:Property主要用來說明幾何物體的一些特征。比如光照特性、著色模式、物體灰度等。
映射(Mapper:Mapper指定數(shù)據(jù)與基本圖元之間的關(guān)系,VTMapper的派生類通過一個向上觀察板(LookupTable來映射數(shù)據(jù),同時控制與圖形庫相連的圖元的生成。
變換(Trasform:VTTrasform是一個放置4×4變換矩陣的堆棧,可以對這個矩陣進(jìn)行平移、縮放、旋轉(zhuǎn)等操作。
渲染窗口(RenderWindow:其基類為VTRenderWindow,用于在顯示設(shè)備中生成一個窗口,渲染窗口是用戶圖形界面,可以設(shè)置渲染窗口的大小,也可以產(chǎn)生立體顯示效果,支持雙緩存。
渲染器(Render:基類為VTRenderer,主要用于控制目標(biāo)的渲染過程,管理光源、照相機(jī)位置等屬性。
窗口交互(Render Window Interactor:在VT中,VtkRenderWindowlnteractor是場景交互方法的一種,它作為一種簡單的工具可以用來操作相機(jī)、選取對象、調(diào)用用戶定義的函數(shù)等。
2.2 VT的可視化模式
可視化模式主要用于可視化過程中的數(shù)據(jù)模式如CT,MRI的數(shù)據(jù)輸入及處理。VT使用數(shù)據(jù)流的方式將源數(shù)據(jù)轉(zhuǎn)換為圖像數(shù)據(jù)。這里包含數(shù)據(jù)對象和處理對象2類基本對象。數(shù)據(jù)對象用來表示各種類型的數(shù)據(jù),它由幾何結(jié)構(gòu)、拓?fù)浣Y(jié)構(gòu)以及屬性數(shù)據(jù)(如向量、標(biāo)量組成。處理對象一般分為源處理對象(Source、過濾器(Filter、映射器(Mapper三類,它用來操作數(shù)據(jù)對象并生成新的數(shù)據(jù)對象。處理對象表示系統(tǒng)中對數(shù)據(jù)進(jìn)行處理的算法。將數(shù)據(jù)對象和處理對象連接在一起就形成VT中的可視化流水線[3],如圖1所示。
3 體繪制系統(tǒng)介紹與實現(xiàn)
這里使用TCLT語言,利用VT函數(shù)庫實現(xiàn)一個簡單的體繪制系統(tǒng)。通過這個系統(tǒng)主要介紹如何通過調(diào)用VT函數(shù)庫實現(xiàn)圖像重建,并且通過一個切片數(shù)據(jù)bolt.slc向大家展現(xiàn)不同的繪制方法所表現(xiàn)出的不同的效果。它可大體分為前臺交互及后臺計算2部分。其中前臺交互是通過Tk實現(xiàn)的,后臺的計算則以TCL為開發(fā)平臺,通過對VT中封裝的對象及方法的調(diào)用來實現(xiàn)。在整個系統(tǒng)中,對三維數(shù)據(jù)的繪制使用4種不同的方法:最大密度投影法;合成法;等值面法;二維紋理映射法。
3.1 TCLT
TCI 代表“ Tool Command Language” ,是一種簡單的腳本語言,它幾乎在所有的平臺上都可以解釋運(yùn)行,功能強(qiáng)大。TCL主要用于發(fā)布命令給一些交互程序如文本編輯器、可視化工具軟件、仿真工具等。它語法很簡單,并有很強(qiáng)的擴(kuò)充性。T是對 TCL的圖形工具箱擴(kuò)展。T發(fā)行版與 TCL 的發(fā)行版是在一起的[4]。在創(chuàng)建 T小部件時,幾乎很少使用命令,一半以上都是按鈕或文本小部件的變體。選用TCLTk作為開發(fā)語言,是因為它靈活的特性和簡單的語法可以很方便地與VT進(jìn)行融合。
3.2 常用繪制算法介紹
(1 MC算法:Marching Cubes 算法是一種應(yīng)用很廣泛的由體密度數(shù)據(jù)重構(gòu)三維等值面的方法。MC算法也被稱為“等值面提取”(Isosurface Extraction,其本質(zhì)是將一系列兩維的切片數(shù)據(jù)看作一個三維的數(shù)據(jù)場,從中將具有某種域值的物質(zhì)抽取出來,以某種拓?fù)湫问竭B接成三角面片。MC算法流程如下:每次讀出2張切片,形成1層,2張切片上下對應(yīng)的8個點(diǎn)構(gòu)成1個立方體,然后按從左到右,從前到后的順序處理1層中的立方體,抽取每個立方體中的等值面,然后從下到上直至處理到n-1層,所以稱為移動立方體算法。MC算法屬于面繪制,也可以稱為間接體繪制。
(2 光線投射算法:光線投射算法(Ray Casting是直接體繪制中最常用的算法,它的基本思想是:從屏幕上的每一像素點(diǎn)發(fā)出1條視線,這條視線穿過三維場的體元矩陣,沿這條視線等距設(shè)置采樣點(diǎn),將距離采樣點(diǎn)最近的8個數(shù)據(jù)點(diǎn)所組成體素的顏色值及不透明度進(jìn)行三次線形插值,求出該采樣點(diǎn)的不透明度及顏色值。然后可以按從前到后或從后到前的合成公式對所有采樣點(diǎn)的顏色和不透明度進(jìn)行合成。當(dāng)對所有像素點(diǎn)都進(jìn)行以上過程后,就會得到此數(shù)據(jù)場的體繪制結(jié)果圖像。
3.3 四種繪制方法分析與實現(xiàn)
(1 最大密度投影法:假設(shè)每一個體元都是能夠發(fā)光的立方體,沿著光線方向,選擇每條與體元相交的直線上的全部點(diǎn)中的最大的密度值作為圖像投影平面密度值,這就是最大密度投影(MIP算法。在MIP描繪過程中,主要實現(xiàn)光線路徑上的點(diǎn)中最大密度點(diǎn)投影的功能。這一過程在VT的定義中屬于光線投射算法的三維數(shù)據(jù)體繪制。在VT實現(xiàn)過程中首先通過調(diào)用vtkSLCReader函數(shù)讀取切片數(shù)據(jù)并設(shè)置讀取路徑,這里與Slice方法不同的是,是通過設(shè)計轉(zhuǎn)換函數(shù)實現(xiàn)顏色和不透明度設(shè)置。在這里通過調(diào)用vtkPiecewiseFunction函數(shù)和vtkcolorTransferFunction函數(shù)將體數(shù)據(jù)值轉(zhuǎn)換成不透明度和顏色等光學(xué)屬性,并使用vtkVolumeProperty函數(shù)對其顏色、不透明度等屬性進(jìn)行加載,接著調(diào)用vtkVolumeRayCastMIPFunction函數(shù)加載繪制方法,然后使用AddVolume將產(chǎn)生的mip_volume及通過類vtkCubeSource定義的Actor:outline_mapper加入到ren2中。最后調(diào)用vtkRenderer進(jìn)行投影。在MIP中有2種方法可以用來改變最大值操作的行為:SetMaximizeMethodToScalarValue( 方法或SetMaximizeMethodToOpacity(方法。如果采用第一種方法,則沿著射線的每一個采樣點(diǎn)的標(biāo)量值均被考慮,其中具有最大標(biāo)量值的采樣點(diǎn)被選擇,然后這個標(biāo)量值被傳遞給顏色和不透明度轉(zhuǎn)換函數(shù)用來來生成最后的射線值;如果調(diào)用第二種方法,則沿著射線的每一個采樣點(diǎn)的不透明度都將被計算,其中具有最大不透明度的采樣點(diǎn)將被選擇。在這里采用第一種方法,即通過調(diào)用vtkVolumeRayCastMIPFunction類中的SetMaximizeMethodToScalarValue方法來實現(xiàn)最大密度投影設(shè)置。效果圖如圖3所示。
(2 合成算法:合成算法(Composite是對每條光線上的每個像素點(diǎn)的密度進(jìn)行加權(quán)求和,將結(jié)果作為圖像投影像素的密度值。在Composite描繪過程中,主要實現(xiàn)光線路徑上所有點(diǎn)的密度加權(quán)和的投影功能。這一過程在VT的定義中同屬基于光線投射算法的三維數(shù)據(jù)體繪制。它的實現(xiàn)過程基本類似于MIP,在這里借助于類vtkVolumeRayCastCompositeFunction對取得“光線路徑上所有點(diǎn)的密度之和的投影”這一功能做了定義。在vtkVolumeRayCastCompositeFunction 中,有2種方法可以用來改變插值和分類的順序,分別是:SetCompositeMethodToInterPolateFirst(插值優(yōu)先方法和SetCompositeMethodToClassifyFirst(分類優(yōu)先方法。這種設(shè)置僅在采用三線性插值的時候才會產(chǎn)生影響。在第一種情況中,先執(zhí)行插值,以此決定采樣點(diǎn)的標(biāo)量值,然后在將這個值用于分類;在第二種情況中,將先執(zhí)行分類,之后在執(zhí)行插值。插值優(yōu)先通常能產(chǎn)生較好的效果,因此在這里采用默認(rèn)的第一種插值優(yōu)先法。效果圖如圖3所示。
(3 等值面法:等值面法(Isosurface是利用表面的信息對圖像進(jìn)行繪制。雖然該方法同屬基于光線投射算法的三維數(shù)據(jù)體繪制,但是其本質(zhì)更接近于面繪制。在實現(xiàn)過程中借助ShadeOn方法及SetInterpolationTypeToLinear方法對陰影功能和插值功能進(jìn)行定義。并使用類vtkVolumeRayCastIsosurfaceFunction中的方法SetIsoValue設(shè)置等值面的初始值。在Isosurface描繪過程中,主要實現(xiàn)光線路徑上所有密度相同的點(diǎn)組成的等值面的投影功能。效果圖如圖4所示。
(4 二維紋理映射法:二維紋理映射二維紋理映射的體繪制是將體數(shù)據(jù)沿正交方向生成序列二維圖像,產(chǎn)生二維紋理切片,然后將這些二維紋理切片依次堆疊完成體繪制過程。紋理映射算法同屬于體繪制算法,因此同樣需要設(shè)置不透明度、顏色、梯度3個傳遞函數(shù)來控制三維體的外觀。與光線投射算法不同的是,它調(diào)用的映射類型為二維紋理映射。在實現(xiàn)過程中通過vtkPiecewiseFunction函數(shù)將體數(shù)據(jù)值轉(zhuǎn)換成不透明度和顏色等光學(xué)屬性, 使用vtkVolumeProperty函數(shù)對其顏色、不透明度、陰影、插值等功能進(jìn)行加載,調(diào)用vtkVolumeTextureMapper2D函數(shù)定義二維紋理映射,使用setCamera設(shè)置視點(diǎn)位置,并使用[ren1 GetActiveCamera] oom來設(shè)置放大系數(shù),最后調(diào)用Render進(jìn)行繪制。效果圖如圖5所示。
3.4 結(jié)果討論
試驗結(jié)果表明,Slice方法由于是切片投影,數(shù)據(jù)量相對比較小,因此成像速度快,并可以很清楚的觀測到不同的切片面關(guān)于不同數(shù)軸的繪制效果。但是它重建的圖像表面不光滑,容易出現(xiàn)鋸齒效應(yīng),這可能是由于圖像像素間的距離過大造成的,因此可通過插值計算來緩解這個現(xiàn)象。MIP算法不需要太多的參數(shù)設(shè)置,實現(xiàn)起來比較簡單,但是它對圖像的細(xì)節(jié)顯示得不清楚,在細(xì)節(jié)的描繪上不如Composite算法,這是由于投影密度值選擇方法的不同造成的,因此只能用于對細(xì)節(jié)要求不高的情況下。Isosurface算法是利用表面的信息進(jìn)行重建,因此它的表面繪制效果很逼真,能夠很清楚直觀的顯示物體表面信息。
通過VT提供的封裝算法,在一個普通的PC機(jī)上實現(xiàn)圖像的三維重建只需幾秒鐘的時間,還可以利用鼠標(biāo)直接拖動三維模型,實現(xiàn)旋轉(zhuǎn)、縮放、平移等操作,便于用戶根據(jù)需要從不同的視角觀察物體,增強(qiáng)了系統(tǒng)的交互能力。與OpenGL和Matlab相比,VT具有使用靈活簡單、重建速度快,可視化效果好等優(yōu)點(diǎn)。
4 結(jié) 語
在可視化發(fā)展過程中,VT憑借其開源、靈活、可封裝、可移植等特性被越來越多的開發(fā)人員所采用,它極大地簡化了程序,為開發(fā)人員節(jié)省了很多的時間和精力,在圖像的三維重建中得到了廣泛應(yīng)用。本文所實現(xiàn)的系統(tǒng)就是一個將VT應(yīng)用到體繪制系統(tǒng)中的典型例子。VT將一些常用到的體繪制算法進(jìn)行封裝,系統(tǒng)通過直接調(diào)用這些VT基類實現(xiàn)切片數(shù)據(jù)的三維重建可視化,通過4種不同的繪制方法,展現(xiàn)了不同的繪制效果。這對于幫助人們更好更深層次地分析、理解、掌握圖像信息產(chǎn)生了極大的推動作用。隨著今后信息化進(jìn)程的發(fā)展,可視化領(lǐng)域?qū)懈鼜V闊的發(fā)展空間,體繪制技術(shù)也將會日益改進(jìn)和完善。
參 考 文 獻(xiàn)
[1]唐澤圣.三維數(shù)據(jù)場可視化[M].北京:清華大學(xué)出版社,1999.
[2]Will Schroeder.The VT User′s Guide[M].itware,2002.
[3]Will Schroeder.Visualization Toolkit[M].3rd Edition itware,2002.
[4]王道義.TCL/T組合教程[CD2]雙語教材+多媒體教室[M].北京:電子工業(yè)出版社,2001.
[5]陳琰,梁云,楊海新.基于VT技術(shù)的可視化研究[J].電腦知識與技術(shù),2007,2(11:1 282-1 283,1 304.