專利名稱:一種快速高質量最大密度投影實現方法
技術領域:
本發(fā)明提供一種投影實現方法,尤其涉及一種快速高質量最大密度投影實現方 法。
背景技術:
MIP (maximum intensity projection,最大密度投影)是常用的三維可視化技術 之一,其優(yōu)點是簡單可行,能有效地從NMRI (Nuclear Magnetic Resonance Imaging,核磁 共振成像)和CT (computed tomography,電子計算機X射線斷層掃描技術)數據中獲取血 管、骨骼和軟組織等結構的可視化圖像,在血管和腫瘤組織等疾病的診斷工作中具有十分 重要的輔助作用。MIP的基本原理是從投影平面上每一點發(fā)出的平行投影光線,光線從某個角度 穿過體數據,每條光線上的最大值即是投影面上對應該光線的像素點的值。從原理得知,該 算法要求每一條光線上所有的像素值都被求出進行比較,每個像素的值需要由體數據插值 得到,因而該算法的計算量比較大;加之投影角度變化時,對于不同圖像層而言,其數據尋 址順序與其存儲順序不一樣,實際的計算量更大,可見速度和圖像質量是MIP算法應解決 的核心問題。盡管現在計算機的計算速度、內存及其他加速設備的發(fā)展日新月異,但是對于龐 大的體數據而言,MIP速度始終難以盡如人意。為解決這種狀況,學者們基于現有硬件環(huán)境, 根據不同的應用需求,在生成的圖像質量和速度之間尋求可能的最佳方案,以盡可能地滿 足用戶需求,同時保證一定的圖像質量。由此,形成了許多不同的MIP算法,常用的有光線 投射法(Ray Casting)、錯切-變形法(Shear-Warp)、拋雪球法(Splatting)和基于硬件的 3D紋理映射方法(Haedware-Assisted 3Dtexture_mapping)。錯切-變形法是速度最快的 軟件MIP算法,但是該算法存在一定的不足,如當視角為45°時會出現階梯狀走樣,圖像放 大后變模糊等問題。拋雪球法是“以物體空間為序”的算法,其優(yōu)點是能按照提數據存儲順 序來存取對象,同時只有與圖像相關的體素才被投射和現實,可大大減少體數據的訪問,但 是由于象平面上的投影面隨著視點改變而隨意縮放和旋轉,因而計算對周圍像素影像的范 圍和對其每一點所影像的大小是十分費時的,同時設計既能保證圖像質量又高效的重構函 數往往比較困難。光線投射法是以圖像空間為序的體繪制方法,它是從圖像空間的每一個像素出 發(fā),按視線方向發(fā)射一條射線,射線穿過體數據進行采樣,采樣點中灰度最大值即為圖像空 間的像素值。該算法要求遍歷每個體素,而且當視角改變時,數據采樣點前后關系隨之變 化,需要重新采樣,計算龐大,為此學者們提出了不少優(yōu)化方法。例如,與拋雪球算法結合, 采用并行計算;采用空間數據結構(金字塔結構、八叉樹結構和k_d樹結構等)研究數據內 部的相關性來提高計算效率;將體數據分塊存儲,符合計算機的存儲結構,減少數據訪問時 間;采用非均勻采樣減少數據訪問和計算量。傳統(tǒng)的最大密度投影存在以下問題速度和圖像質量不能并取,速度快的方法需
4要犧牲圖像質量來換取,而圖像質量高的速度慢,無法滿足實際需要。
發(fā)明內容
本發(fā)明提供一種快速高質量最大密度投影實現方法,其結合現有改進方案,根據 光線進入數據塊的24種情況,利用八叉樹結構對數據塊進行遞歸處理,并利用八叉樹最 大最小值結構對透明數據塊或子節(jié)點進行有效地跳過,同時采用并行計算提高CPU利用效 率,有效減少運算時間,此外利用單元邊界采樣,減少數據訪問量和預算量。從而大大減少 數據的計算,實現實時高質量的最大密度投影。本發(fā)明為解決上述技術問題所采用的技術方案為一種快速高質量最大密度投影實現方法,包括以下步驟A.數據預處理,將數據分塊整理存儲并建立最大值最小值八叉樹;B.光線初始化,計算出光線的進入點并根據進入點位置將所有光線分配給其進入 的數據塊;C.根據光線方向將數據塊分組,采用并行計算分別處理每組數據塊;D.處理組內每個數據塊的所有光線,當光線穿出數據塊時,判斷其是否已經穿出 數據體;若沒有穿出數據體,根據采樣位置將光線分配給下一個數據塊后進入E步驟;E.繼續(xù)下一個數據塊處理;F.所有分組處理完成。所述B步驟中的光線初始化,先利用移動模板的方法得到每條光線的進入深度 后,再通過疊加的方法計算得到每條光線的進入點。所述A步驟中的的數據塊大小為2η*2η*2η,η大于1,數據塊小于CPU的緩存容量。所述B步驟的所述移動模板大小為(211+!11)*(211+111)*(211+111),其中111為大等于1的自 然數,所述移動模板中心與每個待投影的數據塊的中心重疊,所述移動模板記錄有模板中 光線的數目和模板數據,所述模板數據包括光線相對于模板中心的2D坐標偏移值和光線 進入深度。所述光線進入深度和進入點的計算方法為三維坐標表示為 vector (χ, y, ζ), vector, χ、vector, y、vector, ζ 分另ll表示其 X、 Y、Z分量,圖像表示大小size (cx,cy),size, cx、size, cy分別表示圖像的寬和高,體數據坐標系約定為Voxel坐標系,投影平面空間坐標系約定為View坐標系;體 數據到投影平面空間的三維坐標變換為VoxeltoView,投影平面空間到體數據的三維坐標 變換為 ViewtoVoxel ;Voxel坐標vecVoxel與對應的View坐標vecView之間的轉換關系為vecVoxel = ViewtoVoxel X vecViewvecView = VoxeltoViewX vecVoxel投影大小為imagesize,根據VoxeltoView計算數據塊間在X、Y、Z三個方向的3D View 坐標偏移 DeltaBX、DeltaBY, DeltaBZ
5DeltaBX = VoxeltoView χ Voxe 1(32,0,0) - VoxeltoView χ Voxel(0,0,0)] DeltaBY = VoxeltoView χ Voxe/(0,32,0)- VoxeltoView χ Voxe/(0,0,0)
DeltaBZ = VoxeltoView χ Voxe/(0,0,32)- VoxeltoView χ Voxe/(0,0,0)當前數據塊中心在投影空間中的坐標為CurPos,初始值為(0,0,0),對于順序為 (bx, by, bz)的數據塊而言,其對應的位置為Pos = CurPo s+De1taBX X bx+De1taBY X by+De1taBZ X bz對于該數據塊內的第i個光線,其進入深度為Depth [i] = Pos. z+EntryDepth[i]其在投影面上對應的2D坐標索引值Index[i] = Pos. x+Pos. yX imagesize. cx+PixelOffset[i]以數據塊為單位進行循環(huán),計算出數據塊內所有光線在的進入深度D印th[i],根 據其在投影面上的索引值IndeX[i]得到投影面上對應的進入深度D印th[index[i]],如果 Depth [i] < 0印讓[化(^1[丨]],則將更新D印th[index[i]]的值為D印th[i];得到投影面上所有光線的進入深度后,根據ViewtoVoxel求出光線在X、Y、Z三個 方向 3D Voxel 坐標偏移 DeltaX、DeltaY、DeltaZ
DeltaX = ViewtoVoxel χ View(l, 0,0) - ViewtoVoxel χ View(0,0,0)] DeltaY = ViewtoVoxelxView(0,1,0) - ViewtoVoxelχ View(0,0,0)
DeltaZ = View to Voxel χ View(0,0,1) - ViewtoVoxel χ View(0,0,0)同時求出Voxel(0,0,0)對應的View坐標Pos :Pos = ViewToVoxelX View (0,0,0)則對于投影平面上點(x,y),令其進入深度為d印th,其進入點為
voxel = Pos+x X DeltaX+y X DeltaY+d 印 th X DeltaZ所述η為5,所述m為4,所述數據塊大小為32*32*32,所述移動投影模板大小為 36*36*36。所述A步驟中的八叉樹為對每個數據塊建立的4級最大值最小值八叉樹。所述C步驟中處理每個數據塊時透明體素跳過的方法為令第一個數據塊及其子節(jié)點的起點為(x0,y0,z0),棱長為2(5_lev)的正方體,其中 lev是其在八叉樹中的深度,其內一點P(x,y,ζ)所在的子節(jié)點索引值為index = ((χ-χ0) >> (5-lev)) + (((y-y0) >> (5-lev)) << 1)+(((z-z0) >> (5-lev)) <<2)其中l(wèi)ev >= 1,結合面的索引值計算出該節(jié)點上所有入射光線所進入的子節(jié)點, 計算好24種入射情況作為一個查找表,記為EntryList ;計算好光線在當前節(jié)點的子節(jié)點間的24種入射情況所依次穿過的子節(jié)點作為一 個查找表,記為TraverseNodeList ;處理每個數據塊時,數據塊的最大值小于光線的當前值則跳過該數據塊,否則計 算光線進入的子節(jié)點索引及面索引,通過查找EntryList得到進入情況屬于哪一種,根據 進入情況查找TraverseNodeList得到光線依次穿過的1級子節(jié)點,依次處理完每個1級子 節(jié)點即完成該數據塊的處理;處理1級子節(jié)點,若屬于當前1級子節(jié)點的2級子節(jié)點的最大值小于當前光線的
6值則跳過,否則根據進入的2級子節(jié)點索引及面索引,,通過查找EntryList得到進入情況 屬于哪一種,根據進入情況查找TraverseNodeList得到光線依次穿過的2級子節(jié)點,采用 遞歸的方式實現子節(jié)點的處理。所述C步驟中的插值方法為單元邊界采樣方式的雙線性插值。該發(fā)明運行速度快,一般能夠滿足實時性要求。本發(fā)明在初始化光線部分,在利用移動模板的方法得到每條光線的進入深度后如 何快速有效地計算出每條光線的進入點?;舅枷攵际峭ㄟ^疊加的方法計算得到,而不是 通過坐標變換或者其他方式,疊加的方法充分利用了點與點之間的變化關系,有效地減少 了運算了,如果采用坐標的變換的關系的話,對于三維坐標變換,需要用一個4*4的浮點變 換矩陣乘以一個三維浮點向量,這個運算量相當大,嚴重影響運算效率。本發(fā)明的voxel =Pos+x X De 1 taX+y XDeltaY+depth X De 1 taZ,在循環(huán)處理中,前兩項三維浮點向量乘法可 以由三維浮點向量的一次加法代替,那么上式的計算就主要在最后一個三維浮點向量乘法 了。本發(fā)明在透明體素跳過中,通過建立的最大最小值八叉樹,能夠快速有效地跳過 透明體素,有效減少計算量。通過建立由投影方向確定的24種入射情況,快速有效地將光 線的當前采樣點定位到Block的八叉樹子節(jié)點中,并利用該子節(jié)點的最大值與光線的當前 灰度比較,來確定是否跳過該節(jié)點。透明體素跳過的思想是體繪制計算光線進入點的有效 方法,對于體繪制而言,當一個傳遞函數確定以后,在傳遞函數中阻光度為零的灰度認為是 透明的,可以直接不參與計算。最大密度投影的透明體素跳過與體繪制有著異曲同工之妙, 根據其成像原理,可以看出只有最大灰度才會對繪制結果產生影響,因此若光線的當前灰 度已經大于將要處理的節(jié)點的最大灰度,那么則認為該節(jié)點對該光線沒有作用,可以認為 是透明的。關于最大密度中透明體素跳過的部分暫未見。
圖1為本發(fā)明實施例投影模板示意圖;圖2為本發(fā)明實施例Block分組示意圖;圖3為本發(fā)明實施例光線進入八叉樹子節(jié)點的24種情況示意圖;圖4為本發(fā)明實施例八叉樹子節(jié)點排列順序示意圖;圖5為本發(fā)明實施例八叉樹節(jié)點的面排列順序圖6為本發(fā)明實施例等間距采樣示意圖;圖7為本發(fā)明實施例單元邊界采樣示意圖。
具體實施例方式下面根據附圖和實施例對本發(fā)明作進一步詳細說明為了便于敘述和理解,給出下面的約定,在以后各個章節(jié)的敘述和說明中均遵照 本小節(jié)的約定,坐標約定三維坐標表示為 vector (χ, y, ζ), vector, χ、vector. y> vector, ζ 分另lj 表示其X、Y、Z分量。坐標約定圖像表示大小size (cx,cy),size, cx、size, cy分別表示圖像的寬和聞。坐標系及三維坐標變換約定體數據坐標系約定為Voxel坐標系,投影平面空間 坐標系約定為View坐標系;體數據到投影平面空間的三維坐標變換為VoxeltoView,投影 平面空間到體數據的三維坐標變換為ViewtoVoxel。Voxel坐標vecVoxel與對應的View 坐標vecView之間的轉換關系為vecVoxel = ViewtoVoxel X vecView(2-1)vecView = VoxeltoViewX vecVoxel(2-2)數據塊大小約定數據塊大小約定32*32*32。數據塊大小約定數據塊八叉樹分級約定數據塊本身為O級,每分一級級數加1。數據預處理為減少計算量和數據訪問時間,需對體數據做如下預處理。數據分塊存儲當投影角度變化時,數據尋址順序與其存儲順序不一樣,導致實際 的計算量更大。為降低數據訪問時間,提高運算效率,學者們根據計算機硬件存儲結構的特 點,提出了體數據分塊(Bricking)[1]的方法,將體數據分成2n*2n*2n大小的Block(數據塊) (例如,32*32*32),使得每一個Block的大小在CPU的Cache容量范圍內,這樣利用Cache 就可以完成每個數據塊的處理,無需在內存與Cache之間反復傳輸數據。Bricking除了可以降低數據訪問時間、提高運算效率外,在服務器處理模式下,更 有其獨特優(yōu)點對于歸檔完畢的病人數據,需要做MIP的只需將數據整理一遍,保存在服務 器上,就可以反復調用;并且對于VR (volume rendering,體繪制)而言,數據預處理方式都 有前述優(yōu)點。最大值最小值八叉樹建立由MIP算法的基本原理可知,需要將光線上所有像素 值計算出來進行比較求出最大值。而一般的醫(yī)學提數據中與繪制結果無關的體素(即“透 明”體素)占到總體素的70% -95,如何有效地跳過“透明體素”的處理,是影響運算效率的 關鍵。當數據以Block方式存儲時,處理每一個Block時,若已知Block的最大值小于光線 的當前最大值,則該Block可以直接跳過,而無需處理。此外,空間數據結構的運用利于研 究數據體內部的相關性,有效地跳過“透明”體素的處理,其中八叉樹存儲是一種較好的優(yōu) 化數據表達策略。在本文方法中,通過對每個Block建立4級最大值最小值8叉樹,以利于 在處理每個block時,能夠對Block的每個子節(jié)點分別進行區(qū)別判斷,減少計算,對于最大 值最小值八叉樹的運用在后面相應章節(jié)給出。與Bricking優(yōu)點類似,最大值最小值八叉樹在服務器處理模式下,也具有獨特的 優(yōu)點在歸檔整理數據時,可以將該數據體以Block為單位,計算每個Block的最大值最小 值八叉樹并保存,之后即可反復調用;并且“透明”體素跳過的思想在VR中也適用,最大值 最小值八叉樹也可以有效減少VR的計算量。光線初始化為使用并行計算提高運算速度,需要計算出投影平面上每一條光線 進入體數據的進入點,同時將光線進行排序分配給每個Block。模板建立為快速計算出投影平面上每條光線的進入點,采用模板平移[2]的方 法。文獻2為計算出VR中光線的進入點,對每個Block四級子節(jié)點分別建立模板。對于 MIP而言,僅需知道Block級的進入點即可,無須深入到其子節(jié)點。計算投影模板采用的Block大小為36*36*36,采用36而不用32為了避免移動 投影模板,離散化到投影面坐標出現漏點的問題,并假設投影模板中心與每個待投影的
8blcok的中心是重疊的。如圖1所示,模板是包含數據塊投影的最小矩形,它需要記錄模 板中光線的數目和模板數據,模板數據主要分為兩部分PixelOffset和EntryD印th,其中 PixelOffset為相對于模板中心的2D坐標偏移值,EntryDepth指光線進入深度,即進入點 到投影面的距離。創(chuàng)建光線,根據投影模板,通過循環(huán)Block,可以計算出整個圖像每個像素進入深 度。具體做法如下假設投影大小imagesize,根據VoxeltoView計算Block間在X、Y、Z三個方向的 3D View 坐標偏移 DeltaBX、DeltaBY, DeltaBZ
DeltaBX = VoxeltoView χ Voxe 1(32,0,0) - VoxeltoView χ Voxe/(0,0,0)] DeltaBY = VoxeltoView χ Voxe/(0,32,0) - VoxeltoView χ Voxe/(0,0,0)(2-3)
DeltaBZ = VoxeltoView χ Voxe/(0,0,32)- VoxeltoView χ Voxe/(0,0,0)當前Block中心在投影空間中的坐標為CurPos,初始值為(0,0,0)。那么對于順 序為(bx,by, bz)的Block而言,其對應的位置則為Pos = CurPo s+De1taBX X bx+De1taBY X by+De1taBZ X bz(2-4)對于該Blcok內的第i個光線而言,其進入深度為Depth [i] = Pos. z+EntryDepth [i](2-5)其在投影面上對應的2D坐標索引值Index[i] = Pos. x+Pos. yX imagesize. cx+PixelOffset [i](2-6)以Block為單位進行循環(huán),計算出Block為內所有光線在的進入深度D印th [i],根 據其在投影面上的索引值Index [i]得到投影面上對應的進入深度D印th [index [i]],如果 Depth [i] < Depth [index [i]],則將更新 Depth [index [i]]的值為 Depth [i]。得到投影面上所有光線的進入深度后,根據ViewtoVoxel求出光線在X、Y、Z三個 方向 3D Voxel 坐標偏移 DeltaX、DeltaY、DeltaZ
DeltaX = ViewtoVoxel χ View(l, 0,0) - ViewtoVoxel χ View(0,0,0)
] DeltaY = ViewtoVoxelxView(0,1,0) - ViewtoVoxelχ View(0,0,0)(2-7)
DeltaZ = View to Voxel χ View(0,0,1) - ViewtoVoxel χ View(0,0,0)同時求出Voxel(0,0,0)對應的View坐標Pos :Pos = ViewToVoxel X View (0,0,0)(2-8)則對于投影平面上點(x,y),假設其進入深度為d印th,那么其進入點為voxel = Pos+x X DeltaX+y X DeltaY+depth X DeltaZ (2-9) 根據進入點坐標可以計算光線進入Block的索引值,達到將光線分配給Block的目的。重建優(yōu)化,并行計算基于Block的光線投影法的最大的特點是重建的Block之 間相互獨立,利于并行計算。采用并行計算可以有效提高計算機的CPU使用效率,減少運算 時間。當光線分配給每個Block之后,可以根據投影方向將Block分組由前到后排列建 立BlockList,組內的Block之間是相互獨立的,如圖2所示。每個Block內光線的當前采 樣點在該Block內,初始值有光線初始化部分得到。通過處理由前到后排列的各組Block 完成整個數據體的處理。在組內,Block間是相互獨立的,可以按任意順序處理,每個Block
9都可以用一個并行計算線程來獨立完成。當一條光線離開當前處理Block組將進入下一個 Block組,同時也被分配給下一個進入的Block,直至所有光線都穿出數據體完成MIP繪制。透明體素跳過在處理每個Block時,利用其4級最大值最小值八叉樹,可有效跳 過透明體素減少計算量。最大值最小值八叉樹的運用的關鍵是快速有效地將當前采樣點定位到Block的 子節(jié)點中。對于Block的節(jié)點而言,有六個入射面,每個面上有四個子節(jié)點面,那么就有24 種入射情況,如圖3所示。八叉樹的子節(jié)點的排列順序如圖4所示,對于第一個Block及其子節(jié)點而言,可以 看成是一個起點為(勸,70,20),棱長為2(5_^)的正方體,其中l(wèi)ev是其在八叉樹中的深度, 那么其內一點P(x,y,z)所在的子節(jié)點索引值為index = ((χ-χ0) >> (5-lev)) + (((y-y0) >> (5-lev)) << 1) (2-10)+(((z-z0) >> (5-lev)) << 2)其中l(wèi)ev>= 1,結合面的索引值(如圖5所示)可以計算出該節(jié)點上所有入射光 線所進入的子節(jié)點,24種入射情況也就確定,而且不隨入射角度變化,可以作為一個查找表 而預先計算好,記為EntryList。光線在當前節(jié)點的子節(jié)點間最多穿行三次,若投影角度確定,24種入射情 況所依次穿過的子節(jié)點也是確定的,因此也可事先將其計算出作為一個查找表,記為 TraverseNodeList0處理每個Block時,若Block的最大值小于光線的當前值則跳過該Block,否則計 算光線進入的子節(jié)點索引及面索引,通過查找EntryList得到進入情況屬于哪一種,根據 進入情況查找TraverseNodeList得到光線依次穿過的1級子節(jié)點,依次處理完每個1級子 節(jié)點即完成該Block的處理。處理1級子節(jié)點與處理Block類似,若屬于當前1級子節(jié)點 的2級子節(jié)點的最大值小于當前光線的值則跳過,否則根據進入的2級子節(jié)點索引及面索 引,,通過查找EntryList得到進入情況屬于哪一種,根據進入情況查找TraverseNodeList 得到光線依次穿過的2級子節(jié)點,以此類推。由于子節(jié)點的處理和父節(jié)點的處理方法類似, 可以采用遞歸的方式實現。插值是MIP重建中最關鍵的一步,直接影響重建圖像的質量。傳統(tǒng)的插值方法是 采用等間距采樣(如圖6(a)所示),利用三線性插值求出采樣點的灰度值。本文采用單元 邊界采樣方式,與等間距采樣相比,該采樣方式可以有效介紹數據訪問量和計算。采樣點在 立方體單元格的邊界時,根據三線性插值的權重關系可知,有一半的權重是0,實際相當于 一個雙線性插值,因此可以直接用雙線性插值完成。雙線性插值與三線性插值相比,其數據 訪問量和計算量都只有三線性插值的一半,有效減少地數據訪問量和計算量。本領域技術人員不脫離本發(fā)明的實質和精神,可以有多種變形方案實現本發(fā)明, 以上所述僅為本發(fā)明較佳可行的實施例而已,并非因此局限本發(fā)明的權利范圍,凡運用本 發(fā)明說明書及附圖內容所作的等效結構變化,均包含于本發(fā)明的權利范圍之內。
10
權利要求
一種快速高質量最大密度投影實現方法,包括以下步驟A.數據預處理,將數據分塊整理存儲并建立最大值最小值八叉樹;B.光線初始化,計算出光線的進入點并根據進入點位置將所有光線分配給其進入的數據塊;C.根據光線方向將數據塊分組,采用并行計算分別處理每組數據塊;D.處理組內每個數據塊的所有光線,當光線穿出數據塊時,判斷其是否已經穿出數據體;若沒有穿出數據體,根據采樣位置將光線分配給下一個數據塊后進入E步驟;E.繼續(xù)處理下一組數據塊;F.所有分組處理完成,其特征在于所述B步驟中的光線初始化,先利用移動模板的方法得到每條光線的進入深度后,再通過疊加的方法計算得到每條光線的進入點。
2.根據權利要求1所述的一種快速高質量最大密度投影實現方法,其特征在于所述A 步驟中的數據塊大小為2η*2η*2η,η大于1,數據塊小于CPU的緩存容量。
3.根據權利要求2所述的一種快速高質量最大密度投影實現方法,其特征在于所述B 步驟的所述移動模板大小為^"+!!!^?“+?。?!^?“+!^,其中?。?!為大等于1的自然數,所述移動 模板中心與每個待投影的數據塊的中心重疊,所述移動模板記錄有模板中光線的數目和模 板數據,所述模板數據包括光線相對于模板中心的2D坐標偏移值和光線進入深度。
4.根據權利要求3所述的一種快速高質量最大密度投影實現方法,其特征在于,所述 光線進入深度和進入點的計算方法為三維坐標表不為 vector (χ, y, ζ), vector. χ> vector. y> vector, ζ 分別表不其 Χ、Υ、Ζ 分量,圖像表示大小size (cx,cy),size, cx、size, cy分別表示圖像的寬和高, 體數據坐標系約定為Voxel坐標系,投影平面空間坐標系約定為View坐標系;體數據 到投影平面空間的三維坐標變換為VoxeltoView,投影平面空間到體數據的三維坐標變換 為 ViewtoVoxel ;Voxel坐標vecVoxel與對應的View坐標vecView之間的轉換關系為 vecVoxel = ViewtoVoxelX vecView vecView = VoxeltoViewX vecVoxel投影大小為imagesize,根據VoxeltoView計算數據塊間在X、Y、Z三個方向的3D View 坐標偏移 DeltaBX、DeltaBY, DeltaBZ
5.根據權利要求3所述的一種快速高質量最大密度投影實現方法,其特征在于所述η 為5,所述m為4,所述數據塊大小為32*32*32,所述移動投影模板大小為36*36*36。
6.根據權利要求1所述的一種快速高質量最大密度投影實現方法,其特征在于所述A 步驟中的八叉樹為對每個數據塊建立的4級最大值最小值八叉樹。
7.根據權利要求6所述的一種快速高質量最大密度投影實現方法,其特征在于所述C 步驟中處理每個數據塊時透明體素跳過的方法為令第一個數據塊及其子節(jié)點的起點為(xO,yO,zO),棱長為2(5_1ct)的正方體,其中l(wèi)ev 是其在八叉樹中的深度,其內一點P(x,y,ζ)所在的子節(jié)點索引值為 index = ((χ-χΟ) >> (5-lev)) + (((y-yO) >> (5-lev)) << 1) + (((z-zO) >> (5-lev)) << 2)其中l(wèi)ev >= 1,結合面的索引值計算出該節(jié)點上所有入射光線所進入的子節(jié)點,計算 好24種入射情況作為一個查找表,記為EntryList ;計算好光線在當前節(jié)點的子節(jié)點間的24種入射情況所依次穿過的子節(jié)點作為一個查 找表,記為 TraverseNodeList ;處理每個數據塊時,數據塊的最大值小于光線的當前值則跳過該數據塊,否則計算光 線進入的子節(jié)點索引及面索引,通過查找EntryList得到進入情況屬于哪一種,根據進入 情況查找TraverseNodeList得到光線依次穿過的1級子節(jié)點,依次處理完每個1級子節(jié)點 即完成該數據塊的處理;處理1級子節(jié)點,若屬于當前1級子節(jié)點的2級子節(jié)點的最大值小于當前光線的值則 跳過,否則根據進入的2級子節(jié)點索引及面索引,通過查找EntryList得到進入情況屬于哪 一種,根據進入情況查找TraverseNodeList得到光線依次穿過的2級子節(jié)點,采用遞歸的 方式實現子節(jié)點的處理。
8.根據權利要求1所述的一種快速高質量最大密度投影實現方法,其特征在于所述C 步驟中的插值方法為單元邊界采樣方式的雙線性插值。
全文摘要
本發(fā)明提供一種快速高質量最大密度投影實現方法,其結合現有改進方案,根據光線進入數據塊的24種情況,利用八叉樹結構對數據塊進行遞歸處理,并利用八叉樹最大最小值結構對透明數據塊或子節(jié)點進行有效地跳過,同時采用并行計算提高CPU利用效率,有效減少運算時間,此外利用單元邊界采樣,減少數據訪問量和計算量。從而大大減少數據的計算,實現實時高質量的最大密度投影。
文檔編號G06T15/00GK101937575SQ20101026797
公開日2011年1月5日 申請日期2010年8月31日 優(yōu)先權日2010年8月31日
發(fā)明者丁亮, 呂廣志, 陳閩峰 申請人:深圳市藍韻實業(yè)有限公司