本站小編為你精心準備了體繪制技術的發展思路參考范文,愿這些范文能點燃您思維的火花,激發您的寫作靈感。歡迎深入閱讀并收藏。
1體繪制中的主要光照模型
體繪制首先要對每個體素賦以不透明度和顏色值,然后再根據各體素所在點的灰度梯度及光照模型計算出相應體素的光照強度,最后計算出全部采樣點對屏幕像素的貢獻,即像素的光照強度,生成結果圖象.體素主要有兩種模型,一種被定義為采樣點中心就是體素中心的一個立方體,另一種被定義成由相鄰的8個三維采樣點所圍成的立方體.體光照模型來源于物理光學模型,可分成吸收、發射、單/多散射和混合等多種模型.實際應用的體光照模型是由一種或多種光照模型組成的.在醫學可視化中,常用的有以下幾種:
(1)MIP(MaximumIntensityProjection)模型每個體素被認為是能發光的立方體,將所有體素沿視線方向投影到相應像素中的最大體素亮度作為最終像素的亮度.MIP主要應用于MRA和Ultra-sound[6]中.
(2)DRR(DigitalReconstructionRadio-gra-phy)或者X-RAY模型模擬X光穿過吸收介質,能量趨于衰減的模型.DRR主要應用于重構X光圖象[7].
(3)源衰減模型這是一個光線的吸收和發射模型,也是體繪制中應用最多的光照模型[8].
(4)梯度表面和等值面模型這一模型廣泛應用于醫學數據集的體繪制中,文獻[9]定義了梯度和不透明度,最終像素的值是不透明度和顏色值混合的結果.
(5)組合散射模型(ComposedScatteringMod-el)[10]這種模型與其他模型的不同之處在于,它將數據的分割與光的衰減看作是相關的兩部分,不但能顯示出圖象的細微結構,而且能清晰地顯示出邊界表面.其主要應用于CT和MRI數據.
(6)全局光照模型[11]這種模型除了考慮以上光照效應外,還考慮了光線的折射、反射等效果,是一種最理想的也是最復雜的光照模型.在醫學可視化中多使用前5種模型.
2體繪制的主要方法
體繪制方法主要有基于圖象空間、對象空間、頻域空間3種.下面主要對前兩種體繪制方法的思想、主要的加速技術和提高圖象質量的方法進行討論.由于基于頻域空間的體繪制方法繪制效果不理想,當前還沒有應用到實際中.
2.1基于圖象空間的體繪制
2.1.1基本思想
Levoy于1988年提出的光線投射算法是基于圖象空間體繪制的經典算法[9].圖象平面的每個像素都沿著視線方向發出一條射線,且此射線穿過體數據集.沿著這條射線選擇k個等距采樣點,并由距離某一采樣點最近的8個數據點的顏色值和不透明度值作三線性插值,求出該采樣點的不透明度和顏色值,最后將這條射線上的各采樣點的顏色及不透明度值由前向后或由后向前加以合成,即可得到該像素的顏色值.
2.1.2主要的加速技術
光線投射法采用的主要加速技術有兩方面,一方面利用圖象空間的相關性盡量減少投射光線的數目,另一方面利用對象空間相關性盡量減少不必要的采樣點數目以及相應的并行技術[12],這里不對并行技術進行討論.
(1)減少投射光線的數目由于在結果圖象中,相鄰像素存在著相關性,也就是它們很可能有相似的顏色[13],因此并不需圖象平面中的所有像素都投射出光線,而是間隔地投射出光線.結果圖象上的兩個間隔像素投射出光線,如果組合計算出對應像素的差值小于設定的閾值,則該間隔之間的像素就不用再投射光線,其像素值等于兩間隔像素值的插值;否則必須投射中間像素的光線,必須單獨計算像素值,這也稱作自適應圖象采樣.
(2)減少不必要的采樣點由于光線穿過體空間中的體素,有許多空的體素,或一條光線上的相鄰采樣點的值變化不大,因此可以從體數據的存儲結構上來處理這種相關性,從而跳過空的體素,這種技術也稱作空間跳躍技術(Space-Leaping)[14],是近年來研究較多的方法,下面重點介紹其中的幾種.
①采用分層的數據結構將體數據表示成分層數據結構中的節點,每個空體素被指定一個能反映出它所屬層次的值,當光線遇到這樣的空體素時,可以向前跳到下一個非空的體素.Levoy使用金字塔分層數據結構來加速繪制.這種結構較為復雜,需要使用浮點運算[15].Glassner將體數據存儲成八叉樹的結構而不是網格結構.利用快速的八叉樹遍歷方法,繪制速度比利用網格結構提高很多[16].文獻[17]使用八叉樹分層結構,并充分考慮了用硬件實現的可能性.但由于在計算過程中,需要使用乘法和浮點運算,速度雖有提高,但還是不令人滿意.文獻[18]提出了一種稱作BOXER的算法,對八叉樹只使用整數和邏輯操作,以進一步加快處理速度.Wi-helms簡化了八叉樹的結構,提出了根據需要分叉[19].Jung基于八叉樹數據結構,采用了一種新的光照強度的合成方法[20].他指出,在傳統的結果圖象中,像素的值為一系列采樣點的透明度與明暗效應的積的組合,其中明暗效應相關于觀察方向和光照方向.他采用一種新的分類標準,像素的值為一系列采樣點的透明度與法向量的積的組合.按照切片數據集的特性,將數據分成4種塊結構,在此基礎上構造八叉樹,其中透明度、法向量與觀察方向和光照方向無關.文獻[21]使用了TSP樹來加快光線投射的繪制速度.
②數據預處理在數據的預處理階段,每個空體素被指定一個值,這個值能反映出與鄰近非空體素的距離,在繪制階段可以直接跳過空體素[22].Sungup基于上述思想提出了一種更快的跳躍方法[23]:首先,快速遍歷體空間,找出非空體素對應的像素,并只從這些像素投射出光線;然后,找到投射光線遇到的第1個非空體素和最后一個非空體素,對在此之間的非空體素,按其對像素的貢獻進行組合,以得到對應的像素值.為了加快繪制速度,在預處理階段還對體數據進行了游程編碼壓縮.
③使用邊界體素先找出給定對象的邊界體素,將邊界體素投影到屏幕上,并對相應的投影像素建立相應的最近深度和最遠深度值;然后由投影區域中的像素向外產生投射光線,在組合計算對應像素值時,只需計算兩個深度之間的非空體素值[24].
2.1.3提高圖象質量的主要方法
光線投射算法生成的圖象質量主要取決于準確的采樣方法、理想的局部光照模型[10,25]和合理的數據處理技術.以下著重討論在采樣和數據處理這兩方面提高圖象質量的研究進展.
(1)采樣方法的改進Muller指出,在體繪制過程中要沿著視線方向在整數的體素網格中重采樣,對于透視投影來說,這種整數的體素網格隨著到結果圖象的距離越遠,網格間距就越小,如果采樣頻率低于奈魁斯特頻率極限值,體繪制的結果就會出現走樣[26].在采樣頻率不可能高于奈魁斯特頻率極限值的情況下,可以采用低通濾波來去掉極限值的高頻成分.對于平行投影而言,這種低通濾波在整個體數據中是一致的,但對于透視投影來說,這種低通濾波應根據體數據位置的不同而不同.由于透視投影產生的變形,這個頻率會隨著體數據到結果圖象平面距離的增加而變大.如果在離圖象平面一定距離處定義一個子平面,并為此距離設置一個合適的采樣率(高于奈魁斯特頻率極限值),那么小于此距離的體數據投影到一個像素的個數少于1,體繪制的結果就不會出現走樣;而距離越大,投影到一個像素的體數據個數就越多,此時采用與體數據位置有關的低通濾波來實現反走樣.文獻[27],[28]也對數據采樣方法進行了改進.
(2)數據處理Cai等人提出,在體數據空間下的一般分割(皮膚、軟組織、骨骼、腦組織、腦膜等)方法,忽略了對象的許多細微結構[29].為了準確顯示這些結構,文獻[10]中使用CSM組合散射模型,基于子體素空間,自動分割體數據.在鄰近層(軟組織與骨骼、腦膜與腦組織等)之間的細微結構,在子體素空間被分解,再縮減映射到原來的體素空間,顯示出這些細節.體數據按照這些細微結構與鄰近層(內層、外層)之間的位置關系,將體數據分為4種情況,通過Marr-Hildreth卷積產生zero-crossing圖象,這些細微結構被分解成更小的、獨立的細節或僅與內層或外層連接.使用掃描線算法實現體數據的自動分割,然后使用CSM模型繪制分割的數據集.為了清晰地顯示出細微結構,在CSM中還使用了透明度和散射強度信息.這種算法對于MRI數據不但能清楚、準確地顯示出人體頭部的血管、腦組織、腦膜等組織結構,而且還能顯示出大腦、小腦、眼球、骨髓等細微結構.文獻[30]
使用分段投射光線和體素密度之間相互比較的方法進行對象各部分之間的分割,從而進一步提高繪制速度.文獻[31]對數據的預處理分為兩個階段,首先在底層使用卷積操作來平滑體素的灰度梯度,在高層找出像血管、神經這樣的細微結構,然后使用邊緣測試和Hough變換等三維圖象處理操作分析體紋理.在繪制階段,加上表面細節就可以清晰地顯示出對象內部的細微結構.文獻[32]提出了一種提高結果圖象局部區域質量的方法,使用這種方法可以顯示出人們感興趣區域的細節,通過交互的或者由數據本身產生的軌跡還可以動態地改變區域,以顯示出整個圖象的細微結構.對于每個體數據,考慮到它相對于感興趣區域的位置和視點的位置,使用一種放射狀的權對稱函數,賦給每個體素以權值.在光線投射法中,沿著視線方向采樣到的體素具有不同的權值,特定區域中的體素權值較大,區域外的體素權值較小,這樣在結果圖象中就可以突出顯示特定區域的細微結構.為了突出這個區域并維持整個體數據中權函數的一致性,繪制過程被分解為基部分和輔助部分.權函數也可以根據具體的區域和該區域周圍的數據而改變,這些權函數有雙圓錐函數、橢圓函數、平房根橢圓函數等.這種技術可應用于MRI、CT和Ultrasound數據集中.另外,文獻[33],[34]也對數據進行了處理以提高圖象質量.
2.2基于對象空間的體繪制
2.2.1基本思想
對體數據將逐層、逐行、逐個地計算每一個數據點對圖象平面中像素的貢獻,并加以合成,形成最后的圖象.體數據可以按照距圖象平面由近到遠的順序投影,也可以按照由遠到近的順序進行投影.基本的方法有兩種:(1)濺射(Splatting)算法[35]首先選擇重構核,預計算通用足跡表,然后將體數據轉換到圖象空間,查表找出體素對于像素的貢獻值,最后合成圖象.對于光線投射法來說,當觀察方向改變后,就需要重新采樣并進行插值運算,而對于Splatting方法,若視線方向發生變化,就需要重新計算重構核空間卷積域的橢圓投影,投影中的每個像素都需進行旋轉和比例變換,以便查找通用足跡表,因此針對以上問題提出了錯切-變形(Shear-Warp)算法.(2)錯切-變形(Shear-Warp)算法[36]將三維視覺變換分解成三維錯切變換和兩維的變形變換.體數據按照錯切變換矩陣進行錯切,投影到錯切空間形成一個中間圖象,然后,中間圖象經變形生成最后的結果圖象.這種算法最重要的特點就是按照主要的視線方向(X,Y,Z)選擇切片數據集和投影數據,當視線的方向發生變化后,投影方向不一定變化.
2.2.2主要的加速方法
基于對象空間的體繪制算法的加速技術主要是圍繞著數據的存儲結構和數據壓縮以及體數據的空間相關性,通過訪問盡可能少的體素來提高速度而不明顯降低圖象質量.
(1)數據的存儲結構和數據壓縮分層Splat-ting的方法[37]就是將體數據表示成一種金字塔型的結構,然后按照所期望的圖象質量從后到前掃描金字塔相應的層繪制圖象.文獻[38]~文獻[40]利用小波多分辨率分析的特性壓縮體數據,將其表示成多層結構,按照需要顯示多分辨率的圖象,同時,還提出了基于有限元的自適應網格優化方法.文獻[41],[42]使用索引數據機制,訪問所需的數據.在數據的預處理階段,對體數據進行索引,這種索引獨立于觀察方向,只需進行一次.根據索引信息,結合快速查找方法能夠快速找到符合條件的數據進行投影.另外,游程編碼(Run-LengthCoding)[43]是一種簡單而有效的體數據壓縮方法.文獻[44]對游程編碼方法進行了改進,以減少對于體數據的遍歷次數,節省預處理時間,適用于灰度變化緩慢的體數據集.文獻[45]將splatting方法設計成傳遞函數的形式,其包括核函數、核的寬度、足跡表的大小3個參數,并對這些參數進行檢查和優化,使spaltting方法更加方便快捷.
(2)利用體數據的空間相關性:空間相關性是指三維數據場中相鄰的采樣點往往有著相同或相近的函數值這種特性.Wihelms等人的體元投射法[46]正是利用這種特性提出來的.在平行投影下,一個立方體元(8個相鄰的體素)能夠最多被分解成7個子體元,每個子體元的前、后面投影到屏幕的同一位置,預計算生成統一的投影模板,對于每一個給定的觀察方向,每個體元的投影形狀相同,只是位置不同,這就可以選擇相應的模板進行投影.文獻[47]進一步利用體元函數值的相關性,提出了子區域投射法,通過給定的閾值將數據場劃分為由曲面圍成的子區域,對邊界面投影.文獻[48]使用體元塊投射法,將具有相似屬性的體元合并成長方體塊,對長方體塊進行投影.
2.2.3提高圖象質量的方法
一般來說,對象空間的算法是直接投影體素,沒有光線投射法類似的走樣問題,主要圍繞著重構核函數、足跡表、體數據的處理這3方面來提高圖象的質量.
(1)重構核函數的處理對于Splatting算法,重構核函數有高斯函數、圓錐函數、Sine函數等多種.按不同的重構核函數重構的連續三維數據場,生成的圖象質量是不同的,采用圓錐函數為重構核生成的圖象質量比較好.Muller指出,在透視投影下,視線不再是一組平行的射線,而是發散的,距離結果圖象平面的距離越遠,體數據的密度就越大,這也就使重構核函數在世界空間產生一種變形[26].可以通過透視核函數變換方程,按照距離圖象平面的遠近,擴展足跡表來實現透視投影情況下的反走樣.文獻[49],[50]指出了Splatting算法存在的另一問題.在Shear-WarpSplatting算法中,使用彼此平行的切片數據來累加對結果圖象的貢獻,切片數據被按照從前往后或從后往前的順序組合.這種做法使得當主要的觀察方向由體數據的一個軸變換到另一軸時,會出現一個“POPPING”走樣.這是由于在算法中,體數據不是一組支持插值的離散數據點,而是與切片平面相交的球形插值核.每一個球形核被相互平行的切片平面分成多個部分,核部分的厚度由切片之間的距離決定.只計算落在切片之間的部分,一旦一個切片緩沖區收到了所有體素的貢獻,就將它累加組合到當前的累加緩沖區中.算法逐個處理每一個切片數據,這樣就可以實現反走樣.根據核函數的對稱性和核函數與切片平面的位置關系,將落在切片之間的部分按4種情況進行預計算.
(2)足跡表的處理足跡表的大小也會影響圖象的質量,小的足跡表會產生較大的走樣,大的足跡表會對走樣起到平滑作用,但計算量也會加大.Cai指出,Shear-Warp算法中,錯切的僅僅是切片,而實際上,立方體素在錯切過程中變成了平行六面體,因此一個體素不僅對其中心點對應的像素有貢獻,還對相鄰的像素也有貢獻[51].考慮到錯切的最大角度是45°,因此一個體素最多對結果圖象平面上的2×2個像素有貢獻,體素的初始位置可能與像素的位置有偏差,最多可影響到3×3個像素.在最近鄰點插值、標準插值、三線性插值3種模式下,對這些像素建立“足跡表”,權值與平行六面體的高度(切片之間的距離)有關,從而既加快了繪制速度,又提高了圖象質量.
(3)體數據的處理由目前的醫療設備獲得的醫學圖象數據信息非常豐富,采用現有的可視化方法,要想獲得所有這些信息是不可能的,采用Slid-ingthin-slab(STS)算法,可以揭示出數據信息內部的結構.它使用一個滑動的窗口逐步地通過切片數據集,這個窗口的深度指的是切片的數量,窗口內的數據可以按照選擇的方法去處理.文獻[52]使用了DepthWeightedMaximum(DWMax)和ExtremeGradient(EG)兩種技術實現STS方法.DWMax技術結合了深度與灰度信息,不需要透明度和梯度信息.在一個窗口數據集中,為一組切片中的每個切片按照它們的位置關系定義相應的權,該窗口對應的結果圖象中,像素的灰度值是窗口切片集中相應體素的灰度與權值乘積(規一化)中的最大值,它能準確地反映出體數據內部的位置與灰度信息.EG技術結合了最大與最小STS,能反映出體數據局部的灰度變化.該窗口對應的結果圖象中像素值是相應體素的最大與最小灰度的差值.這兩種技術在計算過程中都使用了前面的計算結果,需要較少的存儲,計算效率較高,可以實時地顯示.文獻[53]~文獻[55]也使用了STS技術來顯示數據所表示的內部結構.文獻[56]將Shear-Warp方法與多邊形模型相結合,提高了結果圖象的質量.文獻[57]考慮到實際CT成像的物理參數,調整光學模型和傳遞函數中的參數值,大大提高了結果圖象的質量.
3結論與實驗結果
由于基于圖象空間的體繪制算法比較容易理解,各種加速方法和提高圖象質量的方法比較多,目前應用的數量比較多、范圍比較大.但基于對象空間的體繪制方法直接存取體數據,不存在類似基于圖象空間的體繪制方法那樣的因采樣數據而產生的走樣;它逐個切片地處理體數據,所以能夠十分方便地優化體數據的存儲(壓縮、索引、存儲分塊),以避免不必要的體數據遍歷;在預處理階段就可以為數據的投影做加速準備(優化足跡表、設計各種合適的數據結構).上述的優點決定了以后的研究方向主要集中在基于對象空間的體繪制算法.現代醫療設備提供了豐富的醫療圖象數據,前面討論的各種提高圖象質量的方法還不足以揭示出其包括的豐富內涵.當前迫切需要能夠運行在PC上的、能夠反映出所感興趣內容并且速度令人滿意的方法.是在Intel600MCPU、128M內存、A-SUS6800Delux(Geoforce256DDR)顯卡、32M顯存計算機上測得的一些數據.源數據(CT)來自于VisibleHuman,大小為256×256×169.其中前3種算法未使用加速技術,后面兩種算法使用了相應的加速技術,其中Raycasting使用了文獻[16]中的space-leaping技術。