国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種快速高質(zhì)量最大密度投影實(shí)現(xiàn)方法

      文檔序號(hào):6331188閱讀:494來(lái)源:國(guó)知局
      專(zhuān)利名稱(chēng):一種快速高質(zhì)量最大密度投影實(shí)現(xiàn)方法
      技術(shù)領(lǐng)域
      本發(fā)明提供一種投影實(shí)現(xiàn)方法,尤其涉及一種快速高質(zhì)量最大密度投影實(shí)現(xiàn)方 法。
      背景技術(shù)
      MIP (maximum intensity projection,最大密度投影)是常用的三維可視化技術(shù) 之一,其優(yōu)點(diǎn)是簡(jiǎn)單可行,能有效地從NMRI (Nuclear Magnetic Resonance Imaging,核磁 共振成像)和CT (computed tomography,電子計(jì)算機(jī)X射線(xiàn)斷層掃描技術(shù))數(shù)據(jù)中獲取血 管、骨骼和軟組織等結(jié)構(gòu)的可視化圖像,在血管和腫瘤組織等疾病的診斷工作中具有十分 重要的輔助作用。MIP的基本原理是從投影平面上每一點(diǎn)發(fā)出的平行投影光線(xiàn),光線(xiàn)從某個(gè)角度 穿過(guò)體數(shù)據(jù),每條光線(xiàn)上的最大值即是投影面上對(duì)應(yīng)該光線(xiàn)的像素點(diǎn)的值。從原理得知,該 算法要求每一條光線(xiàn)上所有的像素值都被求出進(jìn)行比較,每個(gè)像素的值需要由體數(shù)據(jù)插值 得到,因而該算法的計(jì)算量比較大;加之投影角度變化時(shí),對(duì)于不同圖像層而言,其數(shù)據(jù)尋 址順序與其存儲(chǔ)順序不一樣,實(shí)際的計(jì)算量更大,可見(jiàn)速度和圖像質(zhì)量是MIP算法應(yīng)解決 的核心問(wèn)題。盡管現(xiàn)在計(jì)算機(jī)的計(jì)算速度、內(nèi)存及其他加速設(shè)備的發(fā)展日新月異,但是對(duì)于龐 大的體數(shù)據(jù)而言,MIP速度始終難以盡如人意。為解決這種狀況,學(xué)者們基于現(xiàn)有硬件環(huán)境, 根據(jù)不同的應(yīng)用需求,在生成的圖像質(zhì)量和速度之間尋求可能的最佳方案,以盡可能地滿(mǎn) 足用戶(hù)需求,同時(shí)保證一定的圖像質(zhì)量。由此,形成了許多不同的MIP算法,常用的有光線(xiàn) 投射法(Ray Casting)、錯(cuò)切-變形法(Shear-Warp)、拋雪球法(Splatting)和基于硬件的 3D紋理映射方法(Haedware-Assisted 3Dtexture_mapping)。錯(cuò)切-變形法是速度最快的 軟件MIP算法,但是該算法存在一定的不足,如當(dāng)視角為45°時(shí)會(huì)出現(xiàn)階梯狀走樣,圖像放 大后變模糊等問(wèn)題。拋雪球法是“以物體空間為序”的算法,其優(yōu)點(diǎn)是能按照提數(shù)據(jù)存儲(chǔ)順 序來(lái)存取對(duì)象,同時(shí)只有與圖像相關(guān)的體素才被投射和現(xiàn)實(shí),可大大減少體數(shù)據(jù)的訪問(wèn),但 是由于象平面上的投影面隨著視點(diǎn)改變而隨意縮放和旋轉(zhuǎn),因而計(jì)算對(duì)周?chē)袼赜跋竦姆?圍和對(duì)其每一點(diǎn)所影像的大小是十分費(fèi)時(shí)的,同時(shí)設(shè)計(jì)既能保證圖像質(zhì)量又高效的重構(gòu)函 數(shù)往往比較困難。光線(xiàn)投射法是以圖像空間為序的體繪制方法,它是從圖像空間的每一個(gè)像素出 發(fā),按視線(xiàn)方向發(fā)射一條射線(xiàn),射線(xiàn)穿過(guò)體數(shù)據(jù)進(jìn)行采樣,采樣點(diǎn)中灰度最大值即為圖像空 間的像素值。該算法要求遍歷每個(gè)體素,而且當(dāng)視角改變時(shí),數(shù)據(jù)采樣點(diǎn)前后關(guān)系隨之變 化,需要重新采樣,計(jì)算龐大,為此學(xué)者們提出了不少優(yōu)化方法。例如,與拋雪球算法結(jié)合, 采用并行計(jì)算;采用空間數(shù)據(jù)結(jié)構(gòu)(金字塔結(jié)構(gòu)、八叉樹(shù)結(jié)構(gòu)和k_d樹(shù)結(jié)構(gòu)等)研究數(shù)據(jù)內(nèi) 部的相關(guān)性來(lái)提高計(jì)算效率;將體數(shù)據(jù)分塊存儲(chǔ),符合計(jì)算機(jī)的存儲(chǔ)結(jié)構(gòu),減少數(shù)據(jù)訪問(wèn)時(shí) 間;采用非均勻采樣減少數(shù)據(jù)訪問(wèn)和計(jì)算量。傳統(tǒng)的最大密度投影存在以下問(wèn)題速度和圖像質(zhì)量不能并取,速度快的方法需
      4要犧牲圖像質(zhì)量來(lái)?yè)Q取,而圖像質(zhì)量高的速度慢,無(wú)法滿(mǎn)足實(shí)際需要。

      發(fā)明內(nèi)容
      本發(fā)明提供一種快速高質(zhì)量最大密度投影實(shí)現(xiàn)方法,其結(jié)合現(xiàn)有改進(jìn)方案,根據(jù) 光線(xiàn)進(jìn)入數(shù)據(jù)塊的24種情況,利用八叉樹(shù)結(jié)構(gòu)對(duì)數(shù)據(jù)塊進(jìn)行遞歸處理,并利用八叉樹(shù)最 大最小值結(jié)構(gòu)對(duì)透明數(shù)據(jù)塊或子節(jié)點(diǎn)進(jìn)行有效地跳過(guò),同時(shí)采用并行計(jì)算提高CPU利用效 率,有效減少運(yùn)算時(shí)間,此外利用單元邊界采樣,減少數(shù)據(jù)訪問(wèn)量和預(yù)算量。從而大大減少 數(shù)據(jù)的計(jì)算,實(shí)現(xiàn)實(shí)時(shí)高質(zhì)量的最大密度投影。本發(fā)明為解決上述技術(shù)問(wèn)題所采用的技術(shù)方案為一種快速高質(zhì)量最大密度投影實(shí)現(xiàn)方法,包括以下步驟A.數(shù)據(jù)預(yù)處理,將數(shù)據(jù)分塊整理存儲(chǔ)并建立最大值最小值八叉樹(shù);B.光線(xiàn)初始化,計(jì)算出光線(xiàn)的進(jìn)入點(diǎn)并根據(jù)進(jìn)入點(diǎn)位置將所有光線(xiàn)分配給其進(jìn)入 的數(shù)據(jù)塊;C.根據(jù)光線(xiàn)方向?qū)?shù)據(jù)塊分組,采用并行計(jì)算分別處理每組數(shù)據(jù)塊;D.處理組內(nèi)每個(gè)數(shù)據(jù)塊的所有光線(xiàn),當(dāng)光線(xiàn)穿出數(shù)據(jù)塊時(shí),判斷其是否已經(jīng)穿出 數(shù)據(jù)體;若沒(méi)有穿出數(shù)據(jù)體,根據(jù)采樣位置將光線(xiàn)分配給下一個(gè)數(shù)據(jù)塊后進(jìn)入E步驟;E.繼續(xù)下一個(gè)數(shù)據(jù)塊處理;F.所有分組處理完成。所述B步驟中的光線(xiàn)初始化,先利用移動(dòng)模板的方法得到每條光線(xiàn)的進(jìn)入深度 后,再通過(guò)疊加的方法計(jì)算得到每條光線(xiàn)的進(jìn)入點(diǎn)。所述A步驟中的的數(shù)據(jù)塊大小為2η*2η*2η,η大于1,數(shù)據(jù)塊小于CPU的緩存容量。所述B步驟的所述移動(dòng)模板大小為(211+!11)*(211+111)*(211+111),其中111為大等于1的自 然數(shù),所述移動(dòng)模板中心與每個(gè)待投影的數(shù)據(jù)塊的中心重疊,所述移動(dòng)模板記錄有模板中 光線(xiàn)的數(shù)目和模板數(shù)據(jù),所述模板數(shù)據(jù)包括光線(xiàn)相對(duì)于模板中心的2D坐標(biāo)偏移值和光線(xiàn) 進(jìn)入深度。所述光線(xiàn)進(jìn)入深度和進(jìn)入點(diǎn)的計(jì)算方法為三維坐標(biāo)表示為 vector (χ, y, ζ), vector, χ、vector, y、vector, ζ 分另ll表示其 X、 Y、Z分量,圖像表示大小size (cx,cy),size, cx、size, cy分別表示圖像的寬和高,體數(shù)據(jù)坐標(biāo)系約定為Voxel坐標(biāo)系,投影平面空間坐標(biāo)系約定為View坐標(biāo)系;體 數(shù)據(jù)到投影平面空間的三維坐標(biāo)變換為VoxeltoView,投影平面空間到體數(shù)據(jù)的三維坐標(biāo) 變換為 ViewtoVoxel ;Voxel坐標(biāo)vecVoxel與對(duì)應(yīng)的View坐標(biāo)vecView之間的轉(zhuǎn)換關(guān)系為vecVoxel = ViewtoVoxel X vecViewvecView = VoxeltoViewX vecVoxel投影大小為imagesize,根據(jù)VoxeltoView計(jì)算數(shù)據(jù)塊間在X、Y、Z三個(gè)方向的3D View 坐標(biāo)偏移 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)當(dāng)前數(shù)據(jù)塊中心在投影空間中的坐標(biāo)為CurPos,初始值為(0,0,0),對(duì)于順序?yàn)?(bx, by, bz)的數(shù)據(jù)塊而言,其對(duì)應(yīng)的位置為Pos = CurPo s+De1taBX X bx+De1taBY X by+De1taBZ X bz對(duì)于該數(shù)據(jù)塊內(nèi)的第i個(gè)光線(xiàn),其進(jìn)入深度為Depth [i] = Pos. z+EntryDepth[i]其在投影面上對(duì)應(yīng)的2D坐標(biāo)索引值Index[i] = Pos. x+Pos. yX imagesize. cx+PixelOffset[i]以數(shù)據(jù)塊為單位進(jìn)行循環(huán),計(jì)算出數(shù)據(jù)塊內(nèi)所有光線(xiàn)在的進(jìn)入深度D印th[i],根 據(jù)其在投影面上的索引值IndeX[i]得到投影面上對(duì)應(yīng)的進(jìn)入深度D印th[index[i]],如果 Depth [i] < 0印讓[化(^1[丨]],則將更新D印th[index[i]]的值為D印th[i];得到投影面上所有光線(xiàn)的進(jìn)入深度后,根據(jù)ViewtoVoxel求出光線(xiàn)在X、Y、Z三個(gè) 方向 3D Voxel 坐標(biāo)偏移 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)同時(shí)求出Voxel(0,0,0)對(duì)應(yīng)的View坐標(biāo)Pos :Pos = ViewToVoxelX View (0,0,0)則對(duì)于投影平面上點(diǎn)(x,y),令其進(jìn)入深度為d印th,其進(jìn)入點(diǎn)為
      voxel = Pos+x X DeltaX+y X DeltaY+d 印 th X DeltaZ所述η為5,所述m為4,所述數(shù)據(jù)塊大小為32*32*32,所述移動(dòng)投影模板大小為 36*36*36。所述A步驟中的八叉樹(shù)為對(duì)每個(gè)數(shù)據(jù)塊建立的4級(jí)最大值最小值八叉樹(shù)。所述C步驟中處理每個(gè)數(shù)據(jù)塊時(shí)透明體素跳過(guò)的方法為令第一個(gè)數(shù)據(jù)塊及其子節(jié)點(diǎn)的起點(diǎn)為(x0,y0,z0),棱長(zhǎng)為2(5_lev)的正方體,其中 lev是其在八叉樹(shù)中的深度,其內(nèi)一點(diǎn)P(x,y,ζ)所在的子節(jié)點(diǎn)索引值為index = ((χ-χ0) >> (5-lev)) + (((y-y0) >> (5-lev)) << 1)+(((z-z0) >> (5-lev)) <<2)其中l(wèi)ev >= 1,結(jié)合面的索引值計(jì)算出該節(jié)點(diǎn)上所有入射光線(xiàn)所進(jìn)入的子節(jié)點(diǎn), 計(jì)算好24種入射情況作為一個(gè)查找表,記為EntryList ;計(jì)算好光線(xiàn)在當(dāng)前節(jié)點(diǎn)的子節(jié)點(diǎn)間的24種入射情況所依次穿過(guò)的子節(jié)點(diǎn)作為一 個(gè)查找表,記為T(mén)raverseNodeList ;處理每個(gè)數(shù)據(jù)塊時(shí),數(shù)據(jù)塊的最大值小于光線(xiàn)的當(dāng)前值則跳過(guò)該數(shù)據(jù)塊,否則計(jì) 算光線(xiàn)進(jìn)入的子節(jié)點(diǎn)索引及面索引,通過(guò)查找EntryList得到進(jìn)入情況屬于哪一種,根據(jù) 進(jìn)入情況查找TraverseNodeList得到光線(xiàn)依次穿過(guò)的1級(jí)子節(jié)點(diǎn),依次處理完每個(gè)1級(jí)子 節(jié)點(diǎn)即完成該數(shù)據(jù)塊的處理;處理1級(jí)子節(jié)點(diǎn),若屬于當(dāng)前1級(jí)子節(jié)點(diǎn)的2級(jí)子節(jié)點(diǎn)的最大值小于當(dāng)前光線(xiàn)的
      6值則跳過(guò),否則根據(jù)進(jìn)入的2級(jí)子節(jié)點(diǎn)索引及面索引,,通過(guò)查找EntryList得到進(jìn)入情況 屬于哪一種,根據(jù)進(jìn)入情況查找TraverseNodeList得到光線(xiàn)依次穿過(guò)的2級(jí)子節(jié)點(diǎn),采用 遞歸的方式實(shí)現(xiàn)子節(jié)點(diǎn)的處理。所述C步驟中的插值方法為單元邊界采樣方式的雙線(xiàn)性插值。該發(fā)明運(yùn)行速度快,一般能夠滿(mǎn)足實(shí)時(shí)性要求。本發(fā)明在初始化光線(xiàn)部分,在利用移動(dòng)模板的方法得到每條光線(xiàn)的進(jìn)入深度后如 何快速有效地計(jì)算出每條光線(xiàn)的進(jìn)入點(diǎn)?;舅枷攵际峭ㄟ^(guò)疊加的方法計(jì)算得到,而不是 通過(guò)坐標(biāo)變換或者其他方式,疊加的方法充分利用了點(diǎn)與點(diǎn)之間的變化關(guān)系,有效地減少 了運(yùn)算了,如果采用坐標(biāo)的變換的關(guān)系的話(huà),對(duì)于三維坐標(biāo)變換,需要用一個(gè)4*4的浮點(diǎn)變 換矩陣乘以一個(gè)三維浮點(diǎn)向量,這個(gè)運(yùn)算量相當(dāng)大,嚴(yán)重影響運(yùn)算效率。本發(fā)明的voxel =Pos+x X De 1 taX+y XDeltaY+depth X De 1 taZ,在循環(huán)處理中,前兩項(xiàng)三維浮點(diǎn)向量乘法可 以由三維浮點(diǎn)向量的一次加法代替,那么上式的計(jì)算就主要在最后一個(gè)三維浮點(diǎn)向量乘法 了。本發(fā)明在透明體素跳過(guò)中,通過(guò)建立的最大最小值八叉樹(shù),能夠快速有效地跳過(guò) 透明體素,有效減少計(jì)算量。通過(guò)建立由投影方向確定的24種入射情況,快速有效地將光 線(xiàn)的當(dāng)前采樣點(diǎn)定位到Block的八叉樹(shù)子節(jié)點(diǎn)中,并利用該子節(jié)點(diǎn)的最大值與光線(xiàn)的當(dāng)前 灰度比較,來(lái)確定是否跳過(guò)該節(jié)點(diǎn)。透明體素跳過(guò)的思想是體繪制計(jì)算光線(xiàn)進(jìn)入點(diǎn)的有效 方法,對(duì)于體繪制而言,當(dāng)一個(gè)傳遞函數(shù)確定以后,在傳遞函數(shù)中阻光度為零的灰度認(rèn)為是 透明的,可以直接不參與計(jì)算。最大密度投影的透明體素跳過(guò)與體繪制有著異曲同工之妙, 根據(jù)其成像原理,可以看出只有最大灰度才會(huì)對(duì)繪制結(jié)果產(chǎn)生影響,因此若光線(xiàn)的當(dāng)前灰 度已經(jīng)大于將要處理的節(jié)點(diǎn)的最大灰度,那么則認(rèn)為該節(jié)點(diǎn)對(duì)該光線(xiàn)沒(méi)有作用,可以認(rèn)為 是透明的。關(guān)于最大密度中透明體素跳過(guò)的部分暫未見(jiàn)。


      圖1為本發(fā)明實(shí)施例投影模板示意圖;圖2為本發(fā)明實(shí)施例Block分組示意圖;圖3為本發(fā)明實(shí)施例光線(xiàn)進(jìn)入八叉樹(shù)子節(jié)點(diǎn)的24種情況示意圖;圖4為本發(fā)明實(shí)施例八叉樹(shù)子節(jié)點(diǎn)排列順序示意圖;圖5為本發(fā)明實(shí)施例八叉樹(shù)節(jié)點(diǎn)的面排列順序圖6為本發(fā)明實(shí)施例等間距采樣示意圖;圖7為本發(fā)明實(shí)施例單元邊界采樣示意圖。
      具體實(shí)施例方式下面根據(jù)附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)說(shuō)明為了便于敘述和理解,給出下面的約定,在以后各個(gè)章節(jié)的敘述和說(shuō)明中均遵照 本小節(jié)的約定,坐標(biāo)約定三維坐標(biāo)表示為 vector (χ, y, ζ), vector, χ、vector. y> vector, ζ 分另lj 表示其X、Y、Z分量。坐標(biāo)約定圖像表示大小size (cx,cy),size, cx、size, cy分別表示圖像的寬和聞。坐標(biāo)系及三維坐標(biāo)變換約定體數(shù)據(jù)坐標(biāo)系約定為Voxel坐標(biāo)系,投影平面空間 坐標(biāo)系約定為View坐標(biāo)系;體數(shù)據(jù)到投影平面空間的三維坐標(biāo)變換為VoxeltoView,投影 平面空間到體數(shù)據(jù)的三維坐標(biāo)變換為ViewtoVoxel。Voxel坐標(biāo)vecVoxel與對(duì)應(yīng)的View 坐標(biāo)vecView之間的轉(zhuǎn)換關(guān)系為vecVoxel = ViewtoVoxel X vecView(2-1)vecView = VoxeltoViewX vecVoxel(2-2)數(shù)據(jù)塊大小約定數(shù)據(jù)塊大小約定32*32*32。數(shù)據(jù)塊大小約定數(shù)據(jù)塊八叉樹(shù)分級(jí)約定數(shù)據(jù)塊本身為O級(jí),每分一級(jí)級(jí)數(shù)加1。數(shù)據(jù)預(yù)處理為減少計(jì)算量和數(shù)據(jù)訪問(wèn)時(shí)間,需對(duì)體數(shù)據(jù)做如下預(yù)處理。數(shù)據(jù)分塊存儲(chǔ)當(dāng)投影角度變化時(shí),數(shù)據(jù)尋址順序與其存儲(chǔ)順序不一樣,導(dǎo)致實(shí)際 的計(jì)算量更大。為降低數(shù)據(jù)訪問(wèn)時(shí)間,提高運(yùn)算效率,學(xué)者們根據(jù)計(jì)算機(jī)硬件存儲(chǔ)結(jié)構(gòu)的特 點(diǎn),提出了體數(shù)據(jù)分塊(Bricking)[1]的方法,將體數(shù)據(jù)分成2n*2n*2n大小的Block(數(shù)據(jù)塊) (例如,32*32*32),使得每一個(gè)Block的大小在CPU的Cache容量范圍內(nèi),這樣利用Cache 就可以完成每個(gè)數(shù)據(jù)塊的處理,無(wú)需在內(nèi)存與Cache之間反復(fù)傳輸數(shù)據(jù)。Bricking除了可以降低數(shù)據(jù)訪問(wèn)時(shí)間、提高運(yùn)算效率外,在服務(wù)器處理模式下,更 有其獨(dú)特優(yōu)點(diǎn)對(duì)于歸檔完畢的病人數(shù)據(jù),需要做MIP的只需將數(shù)據(jù)整理一遍,保存在服務(wù) 器上,就可以反復(fù)調(diào)用;并且對(duì)于VR (volume rendering,體繪制)而言,數(shù)據(jù)預(yù)處理方式都 有前述優(yōu)點(diǎn)。最大值最小值八叉樹(shù)建立由MIP算法的基本原理可知,需要將光線(xiàn)上所有像素 值計(jì)算出來(lái)進(jìn)行比較求出最大值。而一般的醫(yī)學(xué)提數(shù)據(jù)中與繪制結(jié)果無(wú)關(guān)的體素(即“透 明”體素)占到總體素的70% -95,如何有效地跳過(guò)“透明體素”的處理,是影響運(yùn)算效率的 關(guān)鍵。當(dāng)數(shù)據(jù)以Block方式存儲(chǔ)時(shí),處理每一個(gè)Block時(shí),若已知Block的最大值小于光線(xiàn) 的當(dāng)前最大值,則該Block可以直接跳過(guò),而無(wú)需處理。此外,空間數(shù)據(jù)結(jié)構(gòu)的運(yùn)用利于研 究數(shù)據(jù)體內(nèi)部的相關(guān)性,有效地跳過(guò)“透明”體素的處理,其中八叉樹(shù)存儲(chǔ)是一種較好的優(yōu) 化數(shù)據(jù)表達(dá)策略。在本文方法中,通過(guò)對(duì)每個(gè)Block建立4級(jí)最大值最小值8叉樹(shù),以利于 在處理每個(gè)block時(shí),能夠?qū)lock的每個(gè)子節(jié)點(diǎn)分別進(jìn)行區(qū)別判斷,減少計(jì)算,對(duì)于最大 值最小值八叉樹(shù)的運(yùn)用在后面相應(yīng)章節(jié)給出。與Bricking優(yōu)點(diǎn)類(lèi)似,最大值最小值八叉樹(shù)在服務(wù)器處理模式下,也具有獨(dú)特的 優(yōu)點(diǎn)在歸檔整理數(shù)據(jù)時(shí),可以將該數(shù)據(jù)體以Block為單位,計(jì)算每個(gè)Block的最大值最小 值八叉樹(shù)并保存,之后即可反復(fù)調(diào)用;并且“透明”體素跳過(guò)的思想在VR中也適用,最大值 最小值八叉樹(shù)也可以有效減少VR的計(jì)算量。光線(xiàn)初始化為使用并行計(jì)算提高運(yùn)算速度,需要計(jì)算出投影平面上每一條光線(xiàn) 進(jìn)入體數(shù)據(jù)的進(jìn)入點(diǎn),同時(shí)將光線(xiàn)進(jìn)行排序分配給每個(gè)Block。模板建立為快速計(jì)算出投影平面上每條光線(xiàn)的進(jìn)入點(diǎn),采用模板平移[2]的方 法。文獻(xiàn)2為計(jì)算出VR中光線(xiàn)的進(jìn)入點(diǎn),對(duì)每個(gè)Block四級(jí)子節(jié)點(diǎn)分別建立模板。對(duì)于 MIP而言,僅需知道Block級(jí)的進(jìn)入點(diǎn)即可,無(wú)須深入到其子節(jié)點(diǎn)。計(jì)算投影模板采用的Block大小為36*36*36,采用36而不用32為了避免移動(dòng) 投影模板,離散化到投影面坐標(biāo)出現(xiàn)漏點(diǎn)的問(wèn)題,并假設(shè)投影模板中心與每個(gè)待投影的
      8blcok的中心是重疊的。如圖1所示,模板是包含數(shù)據(jù)塊投影的最小矩形,它需要記錄模 板中光線(xiàn)的數(shù)目和模板數(shù)據(jù),模板數(shù)據(jù)主要分為兩部分PixelOffset和EntryD印th,其中 PixelOffset為相對(duì)于模板中心的2D坐標(biāo)偏移值,EntryDepth指光線(xiàn)進(jìn)入深度,即進(jìn)入點(diǎn) 到投影面的距離。創(chuàng)建光線(xiàn),根據(jù)投影模板,通過(guò)循環(huán)Block,可以計(jì)算出整個(gè)圖像每個(gè)像素進(jìn)入深 度。具體做法如下假設(shè)投影大小imagesize,根據(jù)VoxeltoView計(jì)算Block間在X、Y、Z三個(gè)方向的 3D View 坐標(biāo)偏移 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)當(dāng)前Block中心在投影空間中的坐標(biāo)為CurPos,初始值為(0,0,0)。那么對(duì)于順 序?yàn)?bx,by, bz)的Block而言,其對(duì)應(yīng)的位置則為Pos = CurPo s+De1taBX X bx+De1taBY X by+De1taBZ X bz(2-4)對(duì)于該Blcok內(nèi)的第i個(gè)光線(xiàn)而言,其進(jìn)入深度為Depth [i] = Pos. z+EntryDepth [i](2-5)其在投影面上對(duì)應(yīng)的2D坐標(biāo)索引值Index[i] = Pos. x+Pos. yX imagesize. cx+PixelOffset [i](2-6)以Block為單位進(jìn)行循環(huán),計(jì)算出Block為內(nèi)所有光線(xiàn)在的進(jìn)入深度D印th [i],根 據(jù)其在投影面上的索引值Index [i]得到投影面上對(duì)應(yīng)的進(jìn)入深度D印th [index [i]],如果 Depth [i] < Depth [index [i]],則將更新 Depth [index [i]]的值為 Depth [i]。得到投影面上所有光線(xiàn)的進(jìn)入深度后,根據(jù)ViewtoVoxel求出光線(xiàn)在X、Y、Z三個(gè) 方向 3D Voxel 坐標(biāo)偏移 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)同時(shí)求出Voxel(0,0,0)對(duì)應(yīng)的View坐標(biāo)Pos :Pos = ViewToVoxel X View (0,0,0)(2-8)則對(duì)于投影平面上點(diǎn)(x,y),假設(shè)其進(jìn)入深度為d印th,那么其進(jìn)入點(diǎn)為voxel = Pos+x X DeltaX+y X DeltaY+depth X DeltaZ (2-9) 根據(jù)進(jìn)入點(diǎn)坐標(biāo)可以計(jì)算光線(xiàn)進(jìn)入Block的索引值,達(dá)到將光線(xiàn)分配給Block的目的。重建優(yōu)化,并行計(jì)算基于Block的光線(xiàn)投影法的最大的特點(diǎn)是重建的Block之 間相互獨(dú)立,利于并行計(jì)算。采用并行計(jì)算可以有效提高計(jì)算機(jī)的CPU使用效率,減少運(yùn)算 時(shí)間。當(dāng)光線(xiàn)分配給每個(gè)Block之后,可以根據(jù)投影方向?qū)lock分組由前到后排列建 立BlockList,組內(nèi)的Block之間是相互獨(dú)立的,如圖2所示。每個(gè)Block內(nèi)光線(xiàn)的當(dāng)前采 樣點(diǎn)在該Block內(nèi),初始值有光線(xiàn)初始化部分得到。通過(guò)處理由前到后排列的各組Block 完成整個(gè)數(shù)據(jù)體的處理。在組內(nèi),Block間是相互獨(dú)立的,可以按任意順序處理,每個(gè)Block
      9都可以用一個(gè)并行計(jì)算線(xiàn)程來(lái)獨(dú)立完成。當(dāng)一條光線(xiàn)離開(kāi)當(dāng)前處理Block組將進(jìn)入下一個(gè) Block組,同時(shí)也被分配給下一個(gè)進(jìn)入的Block,直至所有光線(xiàn)都穿出數(shù)據(jù)體完成MIP繪制。透明體素跳過(guò)在處理每個(gè)Block時(shí),利用其4級(jí)最大值最小值八叉樹(shù),可有效跳 過(guò)透明體素減少計(jì)算量。最大值最小值八叉樹(shù)的運(yùn)用的關(guān)鍵是快速有效地將當(dāng)前采樣點(diǎn)定位到Block的 子節(jié)點(diǎn)中。對(duì)于Block的節(jié)點(diǎn)而言,有六個(gè)入射面,每個(gè)面上有四個(gè)子節(jié)點(diǎn)面,那么就有24 種入射情況,如圖3所示。八叉樹(shù)的子節(jié)點(diǎn)的排列順序如圖4所示,對(duì)于第一個(gè)Block及其子節(jié)點(diǎn)而言,可以 看成是一個(gè)起點(diǎn)為(勸,70,20),棱長(zhǎng)為2(5_^)的正方體,其中l(wèi)ev是其在八叉樹(shù)中的深度, 那么其內(nèi)一點(diǎn)P(x,y,z)所在的子節(jié)點(diǎn)索引值為index = ((χ-χ0) >> (5-lev)) + (((y-y0) >> (5-lev)) << 1) (2-10)+(((z-z0) >> (5-lev)) << 2)其中l(wèi)ev>= 1,結(jié)合面的索引值(如圖5所示)可以計(jì)算出該節(jié)點(diǎn)上所有入射光 線(xiàn)所進(jìn)入的子節(jié)點(diǎn),24種入射情況也就確定,而且不隨入射角度變化,可以作為一個(gè)查找表 而預(yù)先計(jì)算好,記為EntryList。光線(xiàn)在當(dāng)前節(jié)點(diǎn)的子節(jié)點(diǎn)間最多穿行三次,若投影角度確定,24種入射情 況所依次穿過(guò)的子節(jié)點(diǎn)也是確定的,因此也可事先將其計(jì)算出作為一個(gè)查找表,記為 TraverseNodeList0處理每個(gè)Block時(shí),若Block的最大值小于光線(xiàn)的當(dāng)前值則跳過(guò)該Block,否則計(jì) 算光線(xiàn)進(jìn)入的子節(jié)點(diǎn)索引及面索引,通過(guò)查找EntryList得到進(jìn)入情況屬于哪一種,根據(jù) 進(jìn)入情況查找TraverseNodeList得到光線(xiàn)依次穿過(guò)的1級(jí)子節(jié)點(diǎn),依次處理完每個(gè)1級(jí)子 節(jié)點(diǎn)即完成該Block的處理。處理1級(jí)子節(jié)點(diǎn)與處理Block類(lèi)似,若屬于當(dāng)前1級(jí)子節(jié)點(diǎn) 的2級(jí)子節(jié)點(diǎn)的最大值小于當(dāng)前光線(xiàn)的值則跳過(guò),否則根據(jù)進(jìn)入的2級(jí)子節(jié)點(diǎn)索引及面索 引,,通過(guò)查找EntryList得到進(jìn)入情況屬于哪一種,根據(jù)進(jìn)入情況查找TraverseNodeList 得到光線(xiàn)依次穿過(guò)的2級(jí)子節(jié)點(diǎn),以此類(lèi)推。由于子節(jié)點(diǎn)的處理和父節(jié)點(diǎn)的處理方法類(lèi)似, 可以采用遞歸的方式實(shí)現(xiàn)。插值是MIP重建中最關(guān)鍵的一步,直接影響重建圖像的質(zhì)量。傳統(tǒng)的插值方法是 采用等間距采樣(如圖6(a)所示),利用三線(xiàn)性插值求出采樣點(diǎn)的灰度值。本文采用單元 邊界采樣方式,與等間距采樣相比,該采樣方式可以有效介紹數(shù)據(jù)訪問(wèn)量和計(jì)算。采樣點(diǎn)在 立方體單元格的邊界時(shí),根據(jù)三線(xiàn)性插值的權(quán)重關(guān)系可知,有一半的權(quán)重是0,實(shí)際相當(dāng)于 一個(gè)雙線(xiàn)性插值,因此可以直接用雙線(xiàn)性插值完成。雙線(xiàn)性插值與三線(xiàn)性插值相比,其數(shù)據(jù) 訪問(wèn)量和計(jì)算量都只有三線(xiàn)性插值的一半,有效減少地?cái)?shù)據(jù)訪問(wèn)量和計(jì)算量。本領(lǐng)域技術(shù)人員不脫離本發(fā)明的實(shí)質(zhì)和精神,可以有多種變形方案實(shí)現(xiàn)本發(fā)明, 以上所述僅為本發(fā)明較佳可行的實(shí)施例而已,并非因此局限本發(fā)明的權(quán)利范圍,凡運(yùn)用本 發(fā)明說(shuō)明書(shū)及附圖內(nèi)容所作的等效結(jié)構(gòu)變化,均包含于本發(fā)明的權(quán)利范圍之內(nèi)。
      10
      權(quán)利要求
      一種快速高質(zhì)量最大密度投影實(shí)現(xiàn)方法,包括以下步驟A.數(shù)據(jù)預(yù)處理,將數(shù)據(jù)分塊整理存儲(chǔ)并建立最大值最小值八叉樹(shù);B.光線(xiàn)初始化,計(jì)算出光線(xiàn)的進(jìn)入點(diǎn)并根據(jù)進(jìn)入點(diǎn)位置將所有光線(xiàn)分配給其進(jìn)入的數(shù)據(jù)塊;C.根據(jù)光線(xiàn)方向?qū)?shù)據(jù)塊分組,采用并行計(jì)算分別處理每組數(shù)據(jù)塊;D.處理組內(nèi)每個(gè)數(shù)據(jù)塊的所有光線(xiàn),當(dāng)光線(xiàn)穿出數(shù)據(jù)塊時(shí),判斷其是否已經(jīng)穿出數(shù)據(jù)體;若沒(méi)有穿出數(shù)據(jù)體,根據(jù)采樣位置將光線(xiàn)分配給下一個(gè)數(shù)據(jù)塊后進(jìn)入E步驟;E.繼續(xù)處理下一組數(shù)據(jù)塊;F.所有分組處理完成,其特征在于所述B步驟中的光線(xiàn)初始化,先利用移動(dòng)模板的方法得到每條光線(xiàn)的進(jìn)入深度后,再通過(guò)疊加的方法計(jì)算得到每條光線(xiàn)的進(jìn)入點(diǎn)。
      2.根據(jù)權(quán)利要求1所述的一種快速高質(zhì)量最大密度投影實(shí)現(xiàn)方法,其特征在于所述A 步驟中的數(shù)據(jù)塊大小為2η*2η*2η,η大于1,數(shù)據(jù)塊小于CPU的緩存容量。
      3.根據(jù)權(quán)利要求2所述的一種快速高質(zhì)量最大密度投影實(shí)現(xiàn)方法,其特征在于所述B 步驟的所述移動(dòng)模板大小為^"+!!!^?“+?。?!^?“+!^,其中?。。榇蟮扔?的自然數(shù),所述移動(dòng) 模板中心與每個(gè)待投影的數(shù)據(jù)塊的中心重疊,所述移動(dòng)模板記錄有模板中光線(xiàn)的數(shù)目和模 板數(shù)據(jù),所述模板數(shù)據(jù)包括光線(xiàn)相對(duì)于模板中心的2D坐標(biāo)偏移值和光線(xiàn)進(jìn)入深度。
      4.根據(jù)權(quán)利要求3所述的一種快速高質(zhì)量最大密度投影實(shí)現(xiàn)方法,其特征在于,所述 光線(xiàn)進(jìn)入深度和進(jìn)入點(diǎn)的計(jì)算方法為三維坐標(biāo)表不為 vector (χ, y, ζ), vector. χ> vector. y> vector, ζ 分別表不其 Χ、Υ、Ζ 分量,圖像表示大小size (cx,cy),size, cx、size, cy分別表示圖像的寬和高, 體數(shù)據(jù)坐標(biāo)系約定為Voxel坐標(biāo)系,投影平面空間坐標(biāo)系約定為View坐標(biāo)系;體數(shù)據(jù) 到投影平面空間的三維坐標(biāo)變換為VoxeltoView,投影平面空間到體數(shù)據(jù)的三維坐標(biāo)變換 為 ViewtoVoxel ;Voxel坐標(biāo)vecVoxel與對(duì)應(yīng)的View坐標(biāo)vecView之間的轉(zhuǎn)換關(guān)系為 vecVoxel = ViewtoVoxelX vecView vecView = VoxeltoViewX vecVoxel投影大小為imagesize,根據(jù)VoxeltoView計(jì)算數(shù)據(jù)塊間在X、Y、Z三個(gè)方向的3D View 坐標(biāo)偏移 DeltaBX、DeltaBY, DeltaBZ
      5.根據(jù)權(quán)利要求3所述的一種快速高質(zhì)量最大密度投影實(shí)現(xiàn)方法,其特征在于所述η 為5,所述m為4,所述數(shù)據(jù)塊大小為32*32*32,所述移動(dòng)投影模板大小為36*36*36。
      6.根據(jù)權(quán)利要求1所述的一種快速高質(zhì)量最大密度投影實(shí)現(xiàn)方法,其特征在于所述A 步驟中的八叉樹(shù)為對(duì)每個(gè)數(shù)據(jù)塊建立的4級(jí)最大值最小值八叉樹(shù)。
      7.根據(jù)權(quán)利要求6所述的一種快速高質(zhì)量最大密度投影實(shí)現(xiàn)方法,其特征在于所述C 步驟中處理每個(gè)數(shù)據(jù)塊時(shí)透明體素跳過(guò)的方法為令第一個(gè)數(shù)據(jù)塊及其子節(jié)點(diǎn)的起點(diǎn)為(xO,yO,zO),棱長(zhǎng)為2(5_1ct)的正方體,其中l(wèi)ev 是其在八叉樹(shù)中的深度,其內(nèi)一點(diǎn)P(x,y,ζ)所在的子節(jié)點(diǎn)索引值為 index = ((χ-χΟ) >> (5-lev)) + (((y-yO) >> (5-lev)) << 1) + (((z-zO) >> (5-lev)) << 2)其中l(wèi)ev >= 1,結(jié)合面的索引值計(jì)算出該節(jié)點(diǎn)上所有入射光線(xiàn)所進(jìn)入的子節(jié)點(diǎn),計(jì)算 好24種入射情況作為一個(gè)查找表,記為EntryList ;計(jì)算好光線(xiàn)在當(dāng)前節(jié)點(diǎn)的子節(jié)點(diǎn)間的24種入射情況所依次穿過(guò)的子節(jié)點(diǎn)作為一個(gè)查 找表,記為 TraverseNodeList ;處理每個(gè)數(shù)據(jù)塊時(shí),數(shù)據(jù)塊的最大值小于光線(xiàn)的當(dāng)前值則跳過(guò)該數(shù)據(jù)塊,否則計(jì)算光 線(xiàn)進(jìn)入的子節(jié)點(diǎn)索引及面索引,通過(guò)查找EntryList得到進(jìn)入情況屬于哪一種,根據(jù)進(jìn)入 情況查找TraverseNodeList得到光線(xiàn)依次穿過(guò)的1級(jí)子節(jié)點(diǎn),依次處理完每個(gè)1級(jí)子節(jié)點(diǎn) 即完成該數(shù)據(jù)塊的處理;處理1級(jí)子節(jié)點(diǎn),若屬于當(dāng)前1級(jí)子節(jié)點(diǎn)的2級(jí)子節(jié)點(diǎn)的最大值小于當(dāng)前光線(xiàn)的值則 跳過(guò),否則根據(jù)進(jìn)入的2級(jí)子節(jié)點(diǎn)索引及面索引,通過(guò)查找EntryList得到進(jìn)入情況屬于哪 一種,根據(jù)進(jìn)入情況查找TraverseNodeList得到光線(xiàn)依次穿過(guò)的2級(jí)子節(jié)點(diǎn),采用遞歸的 方式實(shí)現(xiàn)子節(jié)點(diǎn)的處理。
      8.根據(jù)權(quán)利要求1所述的一種快速高質(zhì)量最大密度投影實(shí)現(xiàn)方法,其特征在于所述C 步驟中的插值方法為單元邊界采樣方式的雙線(xiàn)性插值。
      全文摘要
      本發(fā)明提供一種快速高質(zhì)量最大密度投影實(shí)現(xiàn)方法,其結(jié)合現(xiàn)有改進(jìn)方案,根據(jù)光線(xiàn)進(jìn)入數(shù)據(jù)塊的24種情況,利用八叉樹(shù)結(jié)構(gòu)對(duì)數(shù)據(jù)塊進(jìn)行遞歸處理,并利用八叉樹(shù)最大最小值結(jié)構(gòu)對(duì)透明數(shù)據(jù)塊或子節(jié)點(diǎn)進(jìn)行有效地跳過(guò),同時(shí)采用并行計(jì)算提高CPU利用效率,有效減少運(yùn)算時(shí)間,此外利用單元邊界采樣,減少數(shù)據(jù)訪問(wèn)量和計(jì)算量。從而大大減少數(shù)據(jù)的計(jì)算,實(shí)現(xiàn)實(shí)時(shí)高質(zhì)量的最大密度投影。
      文檔編號(hào)G06T15/00GK101937575SQ20101026797
      公開(kāi)日2011年1月5日 申請(qǐng)日期2010年8月31日 優(yōu)先權(quán)日2010年8月31日
      發(fā)明者丁亮, 呂廣志, 陳閩峰 申請(qǐng)人:深圳市藍(lán)韻實(shí)業(yè)有限公司
      網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1