專利名稱:基于通用圖形顯示卡的被測體正投影與反投影方法
技術(shù)領(lǐng)域:
本發(fā)明屬于被測體投影探測與成像技術(shù)領(lǐng)域。
背景技術(shù):
基于投影的重建是指在已知某被測體的一系列投影數(shù)據(jù)的情況下,通過一定的算法來恢復(fù)該數(shù)據(jù)體內(nèi)部數(shù)據(jù)的過程。CT(計算機斷層掃描)圖像重建就是一種典型的基于投影的重建技術(shù),它利用X射線的透射作用得到被測體的投影數(shù)據(jù),然后再根據(jù)這些投影數(shù)據(jù)恢復(fù)被測體的內(nèi)部結(jié)構(gòu)。CT在醫(yī)學(xué)影像、工業(yè)檢測以及安全檢查等領(lǐng)域有著十分廣泛的應(yīng)用。
大規(guī)模平板探測器(探測器呈面陣排列)是近年來出現(xiàn)的一種X射線探測裝置,采用平板探測器的CT設(shè)備具有X射線利用率高,采樣速度快,空間分辨率高等特點,因此這種探測器被廣泛應(yīng)用于新一代的CT設(shè)備上[1]。平板探測器的使用使得直接采集二維投影數(shù)據(jù)成為可能,進而人們可以直接重建三維數(shù)據(jù)體??梢哉f平板探測器的出現(xiàn)為基于投影的直接三維重建方法奠定了硬件基礎(chǔ)。采用平板探測器的CT設(shè)備一般使用錐形X射線束,因此以下將以錐束為例進行說明。如圖1所示,被測體被放置在圖中虛線正方體區(qū)域內(nèi),射線出射點與平板探測器圍繞旋轉(zhuǎn)軸y軸旋轉(zhuǎn)若干角度,得到被測體的若干個投影角度的二維透視投影,然后利用這些投影數(shù)據(jù)根據(jù)一定的重建算法重建出被測體的內(nèi)部結(jié)構(gòu),這就是典型的基于投影的CT圖像三維重建過程。
通用圖形顯示卡(以下簡稱顯卡)是PC機的重要硬件設(shè)備,隨著圖形處理芯片對圖形、圖像處理能力迅速提高,顯卡已經(jīng)突破傳統(tǒng)的顯示和娛樂功能,以其強大的流數(shù)據(jù)處理能力和高度的操作靈活性逐漸成為通用科學(xué)計算領(lǐng)域中的重要工具[2]。三維重建在應(yīng)用于臨床或工程時,在重建速度、精度等方面都有嚴格要求,而顯卡技術(shù)正是以追求更為實時、更加真實的3D景物模擬為目標(biāo)的。三維重建中所使用的數(shù)據(jù),規(guī)模龐大且操作方式簡單,非常符合流數(shù)據(jù)處理對象的特點,這使得基于顯卡實現(xiàn)算法加速成為一種適合三維重建特點的硬件加速方法。
在直接三維重建中,我們要重建的是三維數(shù)據(jù)體,三維數(shù)據(jù)體有兩種存儲形式,一種是三維數(shù)組,即T3D[長][寬][高],另一種是一系列二維數(shù)組,如長×T2D[寬][高],在圖形顯示卡中它們相應(yīng)地被存儲為一個三維紋理和一組二維紋理,不難看出,這組二維紋理中的每一個都相當(dāng)于三維紋理的一個切片,如果以垂直于重建立方體表面方向建立直角坐標(biāo)系,如圖1,那么這些切片都垂直于坐標(biāo)系主軸方向,且切片的各邊分別平行于其余兩個坐標(biāo)系主軸,因而以下簡稱這些切片為重建體正切片。雖然存儲為三維紋理會使重建更為簡單方便,但由于圖形顯示技術(shù)的限制,在已有的技術(shù)中重建數(shù)據(jù)體被存儲為后一種形式。
正投影過程與反投影過程是CT圖像重建的兩個基本組成部分,因而基于通用圖形顯示卡的CT圖像重建加速將主要圍繞這兩個過程進行。
在基于投影的三維重建中,所謂的正投影是指模擬X射線投影的方式將三維的重建數(shù)據(jù)體投影到一個二維平面上形成擬透視投影數(shù)據(jù)的過程。在已有的技術(shù)中,正投影過程是利用重建體正切片逐片實現(xiàn)的,如圖2所示,在子圖a、b、c、d中實線表示重建體正切片,正投影過程按照a、b、c、d的順序進行;子圖e、f、g、h分別對應(yīng)于a、b、c、d中的探測器平面,表示各重建體正切片在探測器平面上的投影;子圖i表示系統(tǒng)的內(nèi)存或圖形處理器的累積緩存,每得到一片重建體正切片的投影都會在i上累加一次,同一投影角度下的所有重建體正切片的投影都累加過后,就得到該投影角度下的模擬投影數(shù)據(jù)。
在這種正投影方法中,由于重建體數(shù)據(jù)被存儲為一組二維數(shù)組,也就是重建體正切片組,因而這些切片的方向在整個重建過程中都是固定的,即垂直于某一主軸(x或y或z)方向,不能隨投影角度的改變而改變。又由于X射線與重建體正切片越接近平行,得到的投影結(jié)果越不準確,當(dāng)完全平行時,幾乎得不到投影結(jié)果,所以,當(dāng)繞y軸旋轉(zhuǎn)時,只能使用垂直于x軸或z軸的重建體正切片組存儲重建體數(shù)據(jù)。另外,每一個重建體正切片的計算都需要轉(zhuǎn)存一次投影結(jié)果數(shù)據(jù),由于圖形處理器與內(nèi)存之間的數(shù)據(jù)轉(zhuǎn)存需要耗費大量時間,因而轉(zhuǎn)存到系統(tǒng)內(nèi)存會嚴重影響重建速度,而轉(zhuǎn)存到圖形處理器的累積緩存雖然省時,但累積緩存的數(shù)據(jù)存儲位數(shù)限制又會降低擬投影數(shù)據(jù)的精度,進而影響重建數(shù)據(jù)精度。
反投影過程是指將某一特定投影角度下的二維數(shù)據(jù)映射到三維的重建數(shù)據(jù)體的每個體素上的過程。這里的二維數(shù)據(jù)可以為任意數(shù)據(jù),重建數(shù)據(jù)體與正投影過程定義相同。
投影紋理映射是比較常用的映射技術(shù)。所謂紋理映射簡單地說就是通過計算某一點的紋理坐標(biāo)值來索引該點的紋理取值,而這里的投影紋理映射主要是指通過計算在一點透視投影關(guān)系下某一體素在二維投影數(shù)據(jù)平面上的投影位置來取得該體素的更新值。如圖3所示,連接某體素v與射線出射點A并延長交探測器平面于Pro(v)位置,Pro(v)位置的紋理取值即可用于更新體素v的值。在計算機具體實施時,投影紋理映射可分為投影紋理坐標(biāo)計算和紋理映射兩個步驟。
紋理坐標(biāo)可以通過設(shè)置紋理矩陣并用初始紋理坐標(biāo)與該紋理矩陣相乘得到。在投影紋理映射技術(shù)中,紋理矩陣可設(shè)置為TM=Tans1·Rot·Tans2·Proj·Sc·Tans3TM表示紋理矩陣,Tans1、Rot、Tans2、Proj、Sc、Tans3為OpenGL等圖形開發(fā)語言提供的基本操作矩陣。其中,Tans1代表平移DAO(DAO為旋轉(zhuǎn)軌道半徑)個單位距離,Rot代表旋轉(zhuǎn)θ角(θ為投影角度),Tans2代表平移-DAO個單位距離,Proj代表透視關(guān)系矩陣(由射線錐角決定),Sc代表放大0.5倍,Tans3代表平移0.5個單位距離。初始紋理坐標(biāo)設(shè)置為體素坐標(biāo)v(x,y,z),則v所對應(yīng)的投影紋理坐標(biāo)Tpro(sT,tT,pT,qT)為Tpro(sT,tT,pT,qT)=v(x,y,z,1)·TM計算得到的投影紋理坐標(biāo)即可以用來索引探測器平面上的紋理。投影紋理坐標(biāo)也是一種紋理坐標(biāo),如同用數(shù)組下標(biāo)來索引數(shù)組元素一樣,圖形硬件用紋理坐標(biāo)來索引紋理取值,不同的是,紋理坐標(biāo)是連續(xù)的,當(dāng)紋理坐標(biāo)非整時,圖形硬件會自動根據(jù)我們選擇的插值方式由鄰近的紋素值計算出該點的紋理值。如圖3所示,當(dāng)選擇線形插值時Pro(v)的紋理值,即體素v的更新值dv計算公式如下dv=abI1+a(1-b)I2+(1-a)bI3+(1-a)(1-b)I4其中I1,I2,I3,I4為四個相鄰探測器D1,D2,D3,D4的取值;Pro(v)表示體素v在探測器平面上的映射位置;a,b定義如圖3所示。
當(dāng)然,無論是二維投影紋理索引還是三維紋理索引,OpenGL等圖形開發(fā)語言都為我們提供了可以直接調(diào)用的函數(shù),其中所需的插值運算將由圖形硬件自動完成。
我們可以利用紋理索引函數(shù)來進行紋理映射操作。這里用到的紋理映射,簡單地說,就是將一幅二維圖像直接映射到一個二維平面上,所以反投影過程需要將三維的重建數(shù)據(jù)體分割成若干個二維切片來分別完成投影,我們以下將這些二維切片稱為虛擬切片。
在已有的技術(shù)中,虛擬切片組的位置必須與重建體正切片組的位置相同,即虛擬切片必須與某一主軸方向(如圖1中的x軸或z軸)垂直且切片的各邊須分別與其余兩個主軸平行,這樣才能使反投影得到的數(shù)據(jù)可以直接用于更新重建體數(shù)據(jù)體。如圖4所示,反投影過程也是利用虛擬切片逐片進行的,圖中探測器平面數(shù)據(jù)分別向每一個虛擬切片(實線)投影,得到的反投影數(shù)據(jù)用來更新相應(yīng)位置的重建體正切片。所有的重建體正切片更新完畢后,反投影過程結(jié)束[4]。
在這種反投影方法中,由于使用一組重建體正切片來存儲三維數(shù)據(jù),造成在反投影過程中虛擬切片組只能在兩個垂直于主軸的方向(圖1中的x軸和z軸)放置,否則無法更新重建數(shù)據(jù)體,從而影響了重建的靈活性,給進一步的重建加速制造了障礙。
發(fā)明內(nèi)容
本發(fā)明的目的在于充分利用目前通用圖形處理器所提供圖形繪制技術(shù),提高正投影過程的速度,增加反投影過程實現(xiàn)的靈活性,進而實現(xiàn)對現(xiàn)有方法在重建速度與重建質(zhì)量方面的改進,并為進一步的改進打下基礎(chǔ)。
本發(fā)明的特征在于所述方法分為正投影與反投影兩個階段,其中所述的正投影方法依次含有以下步驟步驟(1),把所述被測體置于一個立方體中,并將此立方體在計算機中存儲為三維數(shù)組,稱為重建數(shù)據(jù)體,在以該立方體的幾何中心為原點,以垂直于該重建立方體表面方向建立x、y、z三維直角坐標(biāo)系;步驟(2),以y軸為旋轉(zhuǎn)軸,以位于所述z軸延長線上一點A(0,0,zA0)為x射線出射點,以呈面陣排列的x射線平板探測器為接收平面,連接x射線出射點A與所述平板探測器上的一個探測器D(xD0,yD0,zD0),得到該探測器在投影角度為0度時的方向向量(sD,tD,pD)sDtDpD=xD0/MyD0/M(zD0-zA0)/M]]>其中M=((xD0)2+(yD0)2+(zD0-zA0)2)12]]>對于所述平板探測器內(nèi)的所有探測器,則得到一個與該探測器大小相同的方向向量數(shù)組;步驟(3),利用所述通用圖形顯示卡將步驟(2)得到的方向向量數(shù)組存儲為一個二維紋理,其中每個方向向量的三個分量sD,tD,pD分別存儲在紋理的R、G、B三個顏色通道中,形成二維方向向量紋理;步驟(4),在所述x射線出射點與平板探測器相對位置保持不變的條件下,圍繞y軸旋轉(zhuǎn)θ度,該計算機計算各個探測器的方向向量(s,t,p)stp=cosθ0sinθ010-sinθ0cosθsDtDpD]]>此時射線出射點A的坐標(biāo)為(xAθ,yAθ,zAθ)為xAθyAθzAθ=cosθ0sinθ010-sinθ0cosθ00-OE]]>其中OE為射線出射點A到旋轉(zhuǎn)中心即坐標(biāo)原點的距離;
步驟(5),該計算機在X射線出射點A到探測器平面之間按設(shè)定的對被測重建數(shù)據(jù)體的采樣密度劃分采樣切片,再計算X射線出射點到采樣點的距離即采樣深度為R1時的紋理采樣坐標(biāo)(x,y,z)xyz=R1stp+xAθyAθzAθ]]>同理得到各個探測器在不同采樣深度下的紋理采樣坐標(biāo);步驟(6),將存儲內(nèi)容為該重建數(shù)據(jù)體的三維數(shù)組及步驟(5)計算得到的同一探測器不同采樣深度的紋理采樣坐標(biāo)分別代入到OpenGL圖形開發(fā)語言提供的三維紋理索引函數(shù)中,得到同一探測器對應(yīng)的不同采樣深度的紋理值,將這些紋理值相加就得到該探測器的投影值,同理,該計算機可以計算得到在此投影角度θ下其他探測器的投影值;所述的反投影方法依次含有以下步驟步驟(I),構(gòu)筑一個與正投影過程相同的立方體,在以該立方體的幾何中心為原點,以垂直于該重建立方體表面方向建立x、y、z三維直角坐標(biāo)系,把該立方體在計算機中存儲為三維數(shù)組,稱為重建數(shù)據(jù)體,并將此重建數(shù)據(jù)體分割為多個二維切片,以下把這些二維切片稱為虛擬切片;步驟(II),當(dāng)虛擬切片位置與原重建數(shù)據(jù)體正切片位置相同時,按以下步驟進行,所述重建數(shù)據(jù)體正切片是指所述立方體的一個二維切片,且該切片垂直于直角坐標(biāo)系主軸即旋轉(zhuǎn)軸y軸,而切片的各邊又分別平行于其余兩個坐標(biāo)系主軸;步驟(II.a),對虛擬切片上的任一體素V(x,y,z),計算其對應(yīng)的投影紋理坐標(biāo)Tpro(sT,tT,pT,qT)Tpro(sT,tT,pT,qT)=V(x,y,z,1)·TM其中TM為紋理矩陣TM=Tans1·Rot·Tans2·Proj·Sc·Tans3Tans1、Rot、Tans2、Proj、Sc、Tans3為OpenGL圖形開發(fā)語言提供的基本操作矩陣,其中Tans1代表平移DAO個單位距離,DAO為旋轉(zhuǎn)軌道半徑,Rot代表旋轉(zhuǎn)θ角,θ為投影角度,Tans2代表平移-DAO個單位距離,
Proj代表透視關(guān)系矩陣,由OpenGL圖形開發(fā)語言根據(jù)射線錐角決定,Sc代表放大0.5倍,Tans3代表平移0.5個單位距離;步驟(II.b),將二維數(shù)組和步驟(II.a)所述的投影紋理坐標(biāo)代入到OpenGL圖形開發(fā)語言提供的投影紋理索引函數(shù),即輸出所述體素V(x,y,z)的更新值dv,同理,其他體素的更新值也可得到;步驟(III),當(dāng)虛擬切片位置與原重建數(shù)據(jù)體正切片位置不一致時,按以下步驟進行步驟(III.a),按照步驟(II.a)和步驟(II.b)的方法計算此時虛擬切片上各個體素的更新值;步驟(III.b),將步驟(III.a)得到的所有虛擬切片上的更新值依照虛擬切片的空間位置組合為一個虛擬更新數(shù)據(jù)體,若在原重建數(shù)據(jù)體坐標(biāo)系下的坐標(biāo)為V(x,y,z),在所述虛擬更新數(shù)據(jù)體坐標(biāo)系下的坐標(biāo)為V′(x′,y′,z′),則V′(x′,y′,z′)=TN·V(x,y,z)其中TN為紋理矩陣,根據(jù)原重建數(shù)據(jù)體坐標(biāo)系和虛擬更新數(shù)據(jù)體坐標(biāo)系的位置關(guān)系由OpenGL圖形開發(fā)語言提供的基本操作矩陣依先后順序相乘等到,所屬先后順序是指該院重建數(shù)據(jù)體坐標(biāo)系通過平移或/和旋轉(zhuǎn)坐標(biāo)的方式重合到虛擬更新數(shù)據(jù)體坐標(biāo)系的先后順序;步驟(III.c),將所述的虛擬更新數(shù)據(jù)體和步驟(III.b)的得到的虛擬更新數(shù)據(jù)體坐標(biāo)系下的坐標(biāo)V′(x′,y′,z′)代入OpenGL圖形開發(fā)語言提供的三維紋理索引函數(shù),即可得到步驟(II.b)所述的體素V(x,y,z)的更新值dv;步驟(IV),用步驟(II.b)或步驟(III.b)所述的更新值dv更新原重建數(shù)據(jù)體的值。
本發(fā)明提高了正投影過程的速度與精度,增加了反投影過程的靈活性。
圖1CT圖像直接三維重建系統(tǒng)結(jié)構(gòu)示意圖。
圖2已有技術(shù)的正投影過程示意圖。
圖3投影紋理映射示意圖。
圖4已有技術(shù)的反投影過程示意圖。
圖5本發(fā)明的概述示意圖。
圖6硬件設(shè)備示意圖。
圖7方向向量紋理的計算與存儲,a.方向向量的計算,b.方向向量的存儲。
圖8正投影過程。
圖9虛擬切片位置與原重建體正切片位置相同(垂直于旋轉(zhuǎn)軸y軸)的示意圖,a.x-z方向剖面圖,b.y-z方向剖面圖。
圖10虛擬切片位置與原重建體正切片位置不一致的示意圖,a.x-z方向剖面圖,b.組合虛擬更新數(shù)據(jù)體,c.計算原重建數(shù)據(jù)體坐標(biāo)系下的坐標(biāo)。
圖11模型重建結(jié)果,a.1次迭代后的重建體中心切片,b.3次迭代后的重建體中心切片,c.模型中心切片。
具體實施例方式
如圖5所示,本發(fā)明提出了一種基于通用圖形顯示卡的重建數(shù)據(jù)體正投影與反投影方法,該方法的思路在于將重建體數(shù)據(jù)用三維紋理存儲表示;預(yù)先計算方向向量紋理并存儲;利用方向向量紋理來實現(xiàn)某一投影角度的整個正投影過程的一次完成,無中間結(jié)果轉(zhuǎn)存;在反投影過程中,利用三維紋理坐標(biāo)插值技術(shù)使虛擬切片組的放置位置不再受到限制。
本發(fā)明所涉及內(nèi)容為基于投影的三維重建方法的基本組成部分,在應(yīng)用于各種具體重建算法時,視情況采取相應(yīng)的技術(shù)內(nèi)容,算法的其余部分,可采取與傳統(tǒng)方法相同的處理辦法。算法所使用的投影數(shù)據(jù)須為平面二維數(shù)據(jù),可由平板探測器或其他二維輸入設(shè)備獲得。
本發(fā)明雖均以錐形射線束為例,但本發(fā)明并不拘泥于錐形射線束。對于其他射束類型,如平行射線束、扇形射線束等,本發(fā)明也適用。
如圖6所示,本發(fā)明的數(shù)據(jù)來源為平面探測器(如CT的平板探測器)所采集的二維數(shù)據(jù),將采集的數(shù)據(jù)送入安裝有可編程通用圖形顯示卡的普通微型計算機內(nèi)進行處理。
本發(fā)明的具體實現(xiàn)可利用各種三維圖形開發(fā)語言(如OpenGL、DirectX等)與圖形繪制語言(GLSL、Cg等)。使用的通用圖形顯示卡須支持三維紋理、可編程等技術(shù)。
1.正投影過程在某一投影角度下(以0度為例),連接射線出射點與每一個探測器都可以得到一個相應(yīng)的方向向量,對于所有的探測器來說,就可以得到一個與探測器陣列大小相同的方向向量數(shù)組,把這個數(shù)組存儲為一個二維紋理就是方向向量紋理。下面我們以探測器D的方向向量計算為例說明方向向量紋理的計算與存儲過程。如圖7(a)所示,設(shè)射線出射點A的坐標(biāo)為(0,0,zA0),探測器D的坐標(biāo)為(xD0,yD0,zD0),則D探測器在投影角度為0度時所對應(yīng)的方向向量(sD,tD,pD)為
sDtDpD=xD0/MyD0/M(zD0-zA0)/M]]>其中M=((xD0)2+(yD0)2+(zD0-zA0)2)12]]>然后我們將(sD,tD,pD)存儲在方向向量紋理中D探測器對應(yīng)的位置上,在如圖7(b)所示,sD、tD、pD三個分量分別存儲在二維紋理的R、G、B三個顏色通道中。同理我們可以計算并存儲其他探測器所對應(yīng)的方向向量。
由于在正投影過程中射線出射點與探測器平面的相對位置關(guān)系始終保持不變,因而其他投影角度下各個探測器所對應(yīng)的方向向量可以根據(jù)0度時的方向向量(也就是我們存儲的方向向量紋理)經(jīng)計算得到。
這里我們以投影角度為θ時探測器D的模擬投影值計算為例介紹整個正投影過程。首先我們調(diào)入前面計算好的方向向量紋理,然后利用紋理索引函數(shù)根據(jù)探測器D的位置索引出D的方向向量(sD,tD,pD),最后我們計算θ投影角度時D探測器的模擬投影值。如圖8所示,仍假設(shè)旋轉(zhuǎn)軸為y軸,則在投影角度為θ時方向向量(s,t,p)為stp=cosθ0sinθ010-sinθ0cosθsDtDpD]]>投影角度為θ時射線出射點A的坐標(biāo)為(xAθ,yAθ,zAθ)為xAθyAθzAθ=cosθ0sinθ010-sinθ0cosθ00-OE]]>其中OE為射線出射點到旋轉(zhuǎn)中心的距離。
這樣,我們就可以根據(jù)此角度下射線的方向向量計算出采樣深度(即射線出射點到采樣點的距離)為R1時的紋理采樣坐標(biāo)xyz=R1stp+xAθyAθzAθ]]>當(dāng)然,由于圖形硬件對紋理坐標(biāo)范圍的限制,(x,y,z)還需要標(biāo)準化之后才能用于紋理采樣,具體的標(biāo)準化方法可根據(jù)所采用的具體圖形硬件的要求(如歸一化)來制定。
同理我們也可以計算得到采樣深度為R2、R3、R4時的紋理采樣坐標(biāo)。將存儲內(nèi)容為重建數(shù)據(jù)體的三維數(shù)組及計算得到的紋理采樣坐標(biāo)分別代入到OpenGL等圖形開發(fā)語言提供的紋理索引函數(shù)中,便可以得到同一探測器對應(yīng)的不同采樣深度的紋理值,將這些紋理值相加就得到探測器D的投影值。同理可以計算得到其他探測器在投影角度為θ時的投影值。正投影過程的GPU計算部分偽碼如下FOR所有探測器{(sRV,tRV,pRV)=LoadTexture(RV,m,n); //m,n為探測器位置編號//RV為方向向量紋理(s,t,p)=(sD,tD,pD)×RotateMatrix(θ);//θ為投影角度標(biāo)準化處理 //根據(jù)具體設(shè)備采取相應(yīng)辦法Proj=0; //初始化投影值ProjFOR i=Dminto Dmax//Dmin、Dmax分別為采樣深度{ //最小值與最大值(x,y,z)=i×(s,t,p)+(0,0,-OE)×RotateMatrix(θ);Proj+=LoadTexture(V,x,y,z); // V為重建體紋理}}其中LoadTexture()為紋理索引函數(shù),RotateMatrix()為旋轉(zhuǎn)矩陣。
如圖8所示,在整個正投影過程中,由于使用了類似球面坐標(biāo)的計算方法,從而形成了沿主投影方向的均勻球面紋理采樣,這種方法相對于以往的沿固定方向(主軸方向)的平面采樣方法來說,可以更加真實地模擬透視投影的過程,避免了由于投影方向變化所造成的投影失真。而且整個正投影過程都是在一次繪制中進行的,沒有中間結(jié)果的轉(zhuǎn)存,節(jié)省了時間。
2.反投影過程由于我們采用了三維紋理來存儲重建體數(shù)據(jù),所以在反投影過程中虛擬切片的位置不再局限于重建體正切片的位置,因此增大了反投影過程實現(xiàn)的靈活性。以下我們以兩種常見的反投影形式為例進行說明。
a)虛擬切片位置與原重建體正切片位置相同既然虛擬切片的位置可以任意放置,那么它也自然可以放置在原重建體正切片位置,這樣放置的優(yōu)點在于,可以用反投影得到的數(shù)據(jù)直接來更新原建體數(shù)據(jù)體。
如圖9所示,這里我們采用的是垂直于y軸(旋轉(zhuǎn)軸)的放置方式(現(xiàn)有方法不能垂直于y軸放置)。實線表示虛擬切片,它們的邊分別與x、z軸平行,且所在平面垂直于y軸。反投影過程仍然按照虛擬切片逐片進行,以任一虛擬切片上的任一體素v(x,y,z)為例,按照傳統(tǒng)的投影紋理映射方法設(shè)置紋理矩陣TM,計算v的投影紋理坐標(biāo)Tpro(sT,tT,pT,qT)=v(x,y,z,1)·TM利用投影紋理坐標(biāo)Tpro(sT,tT,pT,qT)索引二維數(shù)據(jù)紋理得到體素v的更新數(shù)據(jù)dv,則dv便可以直接用來更新重建數(shù)據(jù)體。
b)虛擬切片位置與原重建體正切片位置不一致這種情況相對第一種情況來說更具有普遍性,這里以比較常用的虛擬切片與探測器平面平行放置為例進行說明。如圖10(a)所示,圖中實線表示虛擬切片,虛線表示原重建體正切片。這種放置方式最大的優(yōu)點在于反投影映射面積大,更有利于探測器平面數(shù)據(jù)在反投影過程中的有效利用。
按照虛擬切片逐片進行反投影的計算方法和第一種情況一樣,但這時得到的dv并不能直接用于更新重建數(shù)據(jù)體,因為此時的虛擬切片與原重建體正切片方向不一致,因此我們將各虛擬切片得到的更新數(shù)據(jù)依照虛擬切片的空間位置組合為一個虛擬更新數(shù)據(jù)體,用一個三維紋理進行存儲(如圖10(b)所示),則在虛擬切片與探測器平面平行放置的情況下,虛擬更新數(shù)據(jù)體與重建數(shù)據(jù)體繞旋轉(zhuǎn)軸(y軸)成θ′角(反投影角度)。那么我們就可以利用三維紋理坐標(biāo)插值技術(shù)來計算原重建體正切片在虛擬更新數(shù)據(jù)體中的采樣位置。如圖10(c)所示,這里仍以v點為例進行說明,假設(shè)其在原重建體坐標(biāo)系下的坐標(biāo)為(x,y,z),在虛擬更新數(shù)據(jù)體坐標(biāo)系下的坐標(biāo)為(x′,y′,z′),則x′y′z′=cosθ′0sinθ′010-sinθ′0cosθ′xyz]]>跟正投影過程一樣,(x′,y′,z′)也需要標(biāo)準化之后才能用于虛擬更新數(shù)據(jù)體紋理索引,可根據(jù)具體所采用的圖形硬件的要求采取相應(yīng)的標(biāo)準化方法(如歸一化)。索引得到的虛擬更新數(shù)據(jù)體紋理值就是v點的更新值dv′,這個值即可用來更新重建數(shù)據(jù)體對應(yīng)位置的體素值。
實驗仿真結(jié)果我們采用三維shepp-logan模型作為仿真試驗?zāi)P停P蛥?shù)設(shè)計參見文獻[5],模型大小為128×128×128。數(shù)據(jù)體重建算法采用SART算法[3],其正反投影過程采用本技術(shù)中提出的基于通用圖形處理器的方法來實現(xiàn)。投影角度從-90°至100°間隔2°采樣,共有投影數(shù)據(jù)96個,投影數(shù)據(jù)大小為128×128。試驗結(jié)果見下表表1試驗仿真結(jié)果
試驗用PC配置為CPUAMD2800+ RAM512M×2 GPURadon1800XT 512M 256bit歸一化均方誤差計算公式為ϵ1=Σi=1N(xi-xi′)2/Σi=1Nxi2]]>相關(guān)系數(shù)計算公式為ϵ2=[Σi=1N(xi-x‾)(xi′-x‾′)]/[Σi=1N(xi-x‾)2Σi=1N(xi′-x‾′)2]12]]>歸一化平均絕對誤差計算公式為ϵ3=Σi=1N|xi-xi′|/Σi=1Nxi]]>其中xi為模型體素值,x為模型體素均值;xi′為重建體體素值,x′為重建體體素均值。重建結(jié)果見圖11。
權(quán)利要求
1.基于通用圖形顯示卡的被測體正投影與反投影方法,其特征在于所述方法分為正投影與反投影兩個階段,其中所述的正投影方法依次含有以下步驟步驟(1),把所述被測體置于一個立方體中,并將此立方體在計算機中存儲為三維數(shù)組,稱為重建數(shù)據(jù)體,在以該立方體的幾何中心為原點,以垂直于該重建立方體表面方向建立x、y、z三維直角坐標(biāo)系;步驟(2),以y軸為旋轉(zhuǎn)軸,以位于所述z軸延長線上一點A(0,0,zA0)為x射線出射點,以呈面陣排列的x射線平板探測器為接收平面,連接x射線出射點A與所述平板探測器上的一個探測器D(xD0,yD0,zD0),得到該探測器在投影角度為0度時的方向向量(sD,tD,pD)sDtDpD=xD0/MyD0/M(zD0-zA0)/M]]>其中M=((xD0)2+(yD0)2+(zD0-zA0)2)12]]>對于所述平板探測器內(nèi)的所有探測器,則得到一個與該探測器大小相同的方向向量數(shù)組;步驟(3),利用所述通用圖形顯示卡將步驟(2)得到的方向向量數(shù)組存儲為一個二維紋理,其中每個方向向量的三個分量sD,tD,pD分別存儲在紋理的R、G、B三個顏色通道中,形成二維方向向量紋理;步驟(4),在所述x射線出射點與平板探測器相對位置保持不變的條件下,圍繞y軸旋轉(zhuǎn)θ度,該計算機計算各個探測器的方向向量(s,t,p)stp=cosθ0sinθ010-sinθ0cosθsDtDpD]]>此時射線出射點A的坐標(biāo)為(xAθ,yAθ,zAθ)為xAθyAθzAθ=cosθ0sinθ010-sinθ0cosθ00-OE]]>其中OE為射線出射點A到旋轉(zhuǎn)中心即坐標(biāo)原點的距離;步驟(5),該計算機在X射線出射點A到探測器平面之間按設(shè)定的對被測重建數(shù)據(jù)體的采樣密度劃分采樣切片,再計算X射線出射點到采樣點的距離即采樣深度為R1時的紋理采樣坐標(biāo)(x,y,z)xyz=R1stp+xAθyAθzAθ]]>同理得到各個探測器在不同采樣深度下的紋理采樣坐標(biāo);步驟(6),將存儲內(nèi)容為該重建數(shù)據(jù)體的三維數(shù)組及步驟(5)計算得到的同一探測器不同采樣深度的紋理采樣坐標(biāo)分別代入到OpenGL圖形開發(fā)語言提供的三維紋理索引函數(shù)中,得到同一探測器對應(yīng)的不同采樣深度的紋理值,將這些紋理值相加就得到該探測器的投影值,同理,該計算機可以計算得到在此投影角度θ下其他探測器的投影值;所述的反投影方法依次含有以下步驟步驟(I),構(gòu)筑一個與正投影過程相同的立方體,在以該立方體的幾何中心為原點,以垂直于該重建立方體表面方向建立x、y、z三維直角坐標(biāo)系,把該立方體在計算機中存儲為三維數(shù)組,稱為重建數(shù)據(jù)體,并將此重建數(shù)據(jù)體分割為多個二維切片,以下把這些二維切片稱為虛擬切片;步驟(II),當(dāng)虛擬切片位置與原重建數(shù)據(jù)體正切片位置相同時,按以下步驟進行,所述重建數(shù)據(jù)體正切片是指所述立方體的一個二維切片,且該切片垂直于直角坐標(biāo)系主軸即旋轉(zhuǎn)軸y軸,而切片的各邊又分別平行于其余兩個坐標(biāo)系主軸;步驟(II.a),對虛擬切片上的任一體素V(x,y,z),計算其對應(yīng)的投影紋理坐標(biāo)Tpro(sT,tT,pT,qT)Tpro(sT,tT,pT,qT)=V(x,y,z,1)·TM其中TM為紋理矩陣TM=Tans1·Rot·Tans2·Proj·Sc·Tans3Tans1、Rot、Tans2、Proj、Sc、Tans3為OpenGL圖形開發(fā)語言提供的基本操作矩陣,其中Tans1代表平移DAO個單位距離,DAO為旋轉(zhuǎn)軌道半徑,Rot代表旋轉(zhuǎn)θ角,θ為投影角度,Tans2代表平移-DAO個單位距離,Proj代表透視關(guān)系矩陣,由OpenGL圖形開發(fā)語言根據(jù)射線錐角決定,Sc代表放大0.5倍,Tans3代表平移0.5個單位距離;步驟(II.b),將二維數(shù)組和步驟(II.a)所述的投影紋理坐標(biāo)代入到OpenGL圖形開發(fā)語言提供的投影紋理索引函數(shù),即輸出所述體素V(x,y,z)的更新值dv,同理,其他體素的更新值也可得到;步驟(III),當(dāng)虛擬切片位置與原重建數(shù)據(jù)體正切片位置不一致時,按以下步驟進行步驟(III.a),按照步驟(II.a)和步驟(II.b)的方法計算此時虛擬切片上各個體素的更新值;步驟(III.b),將步驟(III.a)得到的所有虛擬切片上的更新值依照虛擬切片的空間位置組合為一個虛擬更新數(shù)據(jù)體,若在原重建數(shù)據(jù)體坐標(biāo)系下的坐標(biāo)為V(x,y,z),在所述虛擬更新數(shù)據(jù)體坐標(biāo)系下的坐標(biāo)為V′(x′,y′,z′),則V′(x′,y′,z′)=TN·V(x,y,z)其中TN為紋理矩陣,根據(jù)原重建數(shù)據(jù)體坐標(biāo)系和虛擬更新數(shù)據(jù)體坐標(biāo)系的位置關(guān)系由OpenGL圖形開發(fā)語言提供的基本操作矩陣依先后順序相乘等到,所屬先后順序是指該院重建數(shù)據(jù)體坐標(biāo)系通過平移或/和旋轉(zhuǎn)坐標(biāo)的方式重合到虛擬更新數(shù)據(jù)體坐標(biāo)系的先后順序;步驟(III.c),將所述的虛擬更新數(shù)據(jù)體和步驟(III.b)的得到的虛擬更新數(shù)據(jù)體坐標(biāo)系下的坐標(biāo)V′(x′,y′,z′)代入OpenGL圖形開發(fā)語言提供的三維紋理索引函數(shù),即可得到步驟(II.b)所述的體素V(x,y,z)的更新值dv;步驟(IV),用步驟(II.b)或步驟(III.b)所述的更新值dv更新原重建數(shù)據(jù)體的值。
全文摘要
本發(fā)明屬于投影探測與成像技術(shù)領(lǐng)域,其特點在于該方法含有以下步驟把被測物體的重建體數(shù)據(jù)用三維紋理存儲表示;預(yù)先計算射線出射點至平面探測器上個探測器之間的方向向量數(shù)組,并存儲到通用圖形顯示卡中形成方向向量紋理;利用方向向量紋理與方向向量繞旋轉(zhuǎn)軸旋轉(zhuǎn)來實現(xiàn)任一投影角度的正投影過程的一次完成,無中間結(jié)果轉(zhuǎn)存;在反投影過程中,利用三維紋理索引技術(shù)使虛擬切片組的放置位置不再受到限制。本發(fā)明提高了正投影過程的速度與精度,也增加了反投影過程的靈活性。
文檔編號G06T11/00GK1916965SQ200610012090
公開日2007年2月21日 申請日期2006年6月2日 優(yōu)先權(quán)日2006年6月2日
發(fā)明者陸文凱, 張雷 申請人:清華大學(xué)