亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種地質(zhì)體線性八叉樹快速動態(tài)生成的方法

文檔序號:6367224閱讀:193來源:國知局
專利名稱:一種地質(zhì)體線性八叉樹快速動態(tài)生成的方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種計(jì)算機(jī)硬件加速下的地質(zhì)體線性八叉樹快速動態(tài)生成的方法,屬于空間信息技術(shù)領(lǐng)域。
背景技術(shù)
隨著虛擬現(xiàn)實(shí)、科學(xué)計(jì)算可視化等技術(shù)的快速發(fā)展,三維建模技術(shù)已越來越多應(yīng)用在地質(zhì)與地球物理領(lǐng)域,并成為對地球物理數(shù)據(jù)進(jìn)行地質(zhì)解釋的ー種重要手段。在三維地學(xué)建模中,地質(zhì)體一般有兩種表達(dá)方法一種為面表^^,另ー種為體表^^。前者有著易于建模,模型易于顯示和存儲的優(yōu)點(diǎn),但這種面表示模型難以表達(dá)地質(zhì)體內(nèi)屬性信息,不易進(jìn)行如集合等空間操作,而體模型易于集合運(yùn)算與定量量算,并可進(jìn)行體繪制。因此在“數(shù)字礦山”應(yīng)用中,常需要將某些感興趣的空間數(shù)據(jù)轉(zhuǎn)換成ー種更準(zhǔn)確而高效的表達(dá)方式。為了提高轉(zhuǎn)換的效率,通常采用基于圖形硬件加速的快速體素化來生成體數(shù)據(jù)集,但對大規(guī)模地質(zhì)體進(jìn)行高精度體建模時,這種的體數(shù)據(jù)集會異常龐大,需要將其存儲成八叉樹等壓縮結(jié)構(gòu)。線性八叉樹作為八叉樹模型的ー種表示方法,它只存儲表示目標(biāo)地質(zhì)體的葉結(jié)點(diǎn),節(jié)約了存儲空間,重要是的它在三維地學(xué)建模系統(tǒng)中常見的集合操作、地質(zhì)體局部變形和提取操作上效率高。為了滿足大規(guī)模地質(zhì)體高精度建模與交互的需要,針對體素模型的存儲空間過大的缺點(diǎn),本發(fā)明提供了地質(zhì)體的線性八叉樹快速動態(tài)生成技術(shù),從而實(shí)現(xiàn)地質(zhì)體的快速構(gòu)建和可視化,本發(fā)明的方法具有很高的執(zhí)行效率和建模精度,能夠很好的對隱伏礦體預(yù)測中的地質(zhì)對象進(jìn)行模擬與分析。

發(fā)明內(nèi)容
I、目的本發(fā)明的目的是提供一種地質(zhì)體三維表達(dá)與建模的方法,實(shí)現(xiàn)地質(zhì)測量數(shù)據(jù)和幾何模型的一體化表達(dá)與存儲,滿足操作、分析和解譯三維地質(zhì)體的需要。2、技術(shù)方案本發(fā)明提供一種地質(zhì)體線性八叉樹快速動態(tài)生成的方法,具體步驟如下步驟ー基于深度緩存判斷體素與地質(zhì)體的內(nèi)外關(guān)系采用深度緩存判斷體素在地質(zhì)體的內(nèi)外,設(shè)置與X,Y,Z軸垂直時的大小為2nX2n的(n為正整數(shù))三對深度緩存,將三對深度緩存分別標(biāo)記為[X1,X2]、[Y1,Y2]、[Z1,Z2],其中每對中的第一項(xiàng)存儲最近深度值,另ー項(xiàng)存儲最遠(yuǎn)深度值。用這三對深度緩存建立等價(jià)于八叉樹空間的立方體區(qū)域包圍地質(zhì)體,包圍盒的三個對立面分別與X、Y和Z軸垂直,且對應(yīng)干與其所垂直坐標(biāo)軸上的那對深度緩存。設(shè)空間中有ー實(shí)際坐標(biāo)為(x,y,z)的體素(I,J,K),對其做如下判斷IF ((X1 (K,J) ^ X ^ X2 (K,J)) AND (Y1 (I,K)彡 y 彡 Y2 (I,K)) AND (Z1 (I,J)彡z<Z2(I,J))),如果返回真,則體素在地質(zhì)體內(nèi),屬性為黑,否則在地質(zhì)體外,屬性為白。對于ー個八分體0,若劃分次數(shù)為I (I < n),0可視為在2^2^21空間下的“體素”,則其屬性可通過類似的方法判斷。建立3對深度圖像[X’ X’ 2]、[Y’ Y,2]、IV vV2],顯然,在242421空間下,深度圖像的大小應(yīng)為2421,這種縮小了的深度圖像按一定規(guī)則從[X1, X2]、[Y1, Y2]、[Z1, Z2]中采樣獲得。設(shè){X’ min Y’ min V min J 和{X’ maxY,maxl,V 眶 J,{X,fflin2, Y,min 2,Z,fflin2}和{X,眶 2,Y,眶 2,V fflax J 分別以最小值和最大值采樣規(guī)則從X’ 2,Y’ 2,Z’ 2中獲得,O中心點(diǎn)實(shí)際坐標(biāo)為(x,y,z),在Z1XZ1XZi空間下行列層坐標(biāo)為(10,J0,ん),邊長為a,單個體素的邊長為S,則O的屬性的可按如下規(guī)則判斷
IF( [x-a/2+ 5/2,x+a/2- S/2] fl [JC mjn ^K0, Jo), T _ 2(K0, Jo)] + 0 AND\y-a/2+ S/2, y+a/2- S/2] fl [F min i(/0, K0), T _ 太I(xiàn)0,ル)]豐 0 AND[z-a/2+ <5/2, z+a/2- S/2] n [Z,min i(ん,J0), T max 2(ん,J0)]豐 0 )
{ IF
([x-a/2+ "2,x+a/2- S/2] a [T _ ,(K0, J0), min 2(KQ, Jo)\ AND [y-a/2+ 5/2,y-^a/2- 8/2\ e [F max X{10, K0), T min 2(/0, K0)] AND [z-a/2+ 5/2,z+a/2- 5/2] c [Z,_ i(70, J0), T min 2(I0, J0)])
O屬性為黑;
ELSE
(9屬性為灰;
}
ELSE
O屬性為白;步驟ニ 對地質(zhì)體進(jìn)行八分體劃分確定與地質(zhì)體相關(guān)的八分體,即確定被地質(zhì)體完全占據(jù)(黒),部分占據(jù)(灰)還是不含地質(zhì)體(白)的八分體,只有在屬性為非白的八分體中才可能產(chǎn)生線性八叉樹編碼,而屬性為白的八分體則無需考慮,對每個非白八分體進(jìn)行處理并確定其中體素的屬性,從而生成該八分體中所包含地質(zhì)體對應(yīng)的線性八叉樹,當(dāng)處理完所有非白八分體后,整個地質(zhì)體的線性八叉樹將構(gòu)造完成,對地質(zhì)體的八分體劃分事實(shí)上是按地質(zhì)體的占據(jù)情況對整個空間迭代八等分的過程,這ー過程用自底向上構(gòu)造八叉樹的方法來進(jìn)行。首先指定對空間劃分的最大次數(shù)I并將空間劃分為fxgix〗1個小八分體,然后用深度緩存判斷各個小八分體的屬性。在這些小八分體中,如果存在8個八分體屬于同一個父八分體且屬性都為黒,則將這8個八分體合井,從底向上一直合井上去,直到不能合并為止,從此,地質(zhì)體被劃分到各個屬性為非白的八分體空間中。這種劃分可對應(yīng)于ー顆不完全八叉樹,它等價(jià)于地質(zhì)體最終八叉樹的第I層到第1+1層的部分,下一歩確定剩下的部分,即確定不完全八叉樹中非白葉結(jié)點(diǎn)的分解情況,從而生成地質(zhì)體的線性八叉樹。步驟三生成線性八叉樹按先序遍歷順序處理不完全八叉樹中的各非白葉結(jié)點(diǎn),在遍歷過程中按不同方法處理不完全八叉樹中黑葉結(jié)點(diǎn)與灰葉結(jié)點(diǎn)。對于黑葉結(jié)點(diǎn),因完全被地質(zhì)體占據(jù)不會進(jìn)ー步分解,則該結(jié)點(diǎn)即地質(zhì)體最終八叉樹的黑葉結(jié)點(diǎn),當(dāng)遇到不完全八叉樹中的每個黑結(jié)點(diǎn)時,可直接輸出其線性八叉樹編碼,而對灰葉結(jié)點(diǎn),則要掃描其所對應(yīng)八分體,在掃描中判斷其中各體素的屬性,從而確定結(jié)點(diǎn)的分解情況。(I)掃描灰八分體每個灰葉結(jié)點(diǎn)所對應(yīng)的灰八分體都可視為ー個2mX2mX2m大小的子空間,子空間中每個體素的位置也以一局部的位置碼表達(dá),采用ー個2X2X2大小的窗ロ按Morton碼的Z序掃描該子空間,下文稱該窗ロ所掃描的2X2X2八分體為窗八分體。掃描從子空間的首位置碼處開始,每到一處比較深度緩存中的深度值來檢查窗口內(nèi)體素的屬性,再比較窗ロ內(nèi)體素間的屬性返回窗八分體的屬性黑、白或灰。接著令當(dāng)前窗ロ的位置碼增加8,解碼得到下個窗ロ坐標(biāo),一直循環(huán)掃描下去,執(zhí)行又一次窗掃描,直到位置碼到2mX 2mX 2m結(jié)束,由此線性八叉樹構(gòu)造時的排序過程得以避免。本發(fā)明采用十進(jìn)制位置碼,因該碼具有可被快速地解碼的優(yōu)點(diǎn)。若將2mX2mX2m大小的子空間視為ー顆m+1階滿八叉樹,窗掃描過程等價(jià)于以先序檢查樹第m層上各結(jié)點(diǎn)的屬性。在毎次檢查中,由每個結(jié)點(diǎn)屬性的變化判斷樹的分解情況,并將分解所得黑葉結(jié)點(diǎn)編碼動態(tài)輸出。結(jié)點(diǎn)可歸為三類,ー類是已經(jīng)掃描過,屬性確定的結(jié)點(diǎn),即已知結(jié)點(diǎn);另ー類當(dāng)前掃描中屬性不確定且有可能分解的結(jié)點(diǎn),為活動結(jié)點(diǎn);再有一類是尚未掃描的,屬性未知的結(jié)點(diǎn),即未知結(jié)點(diǎn)。當(dāng)窗掃描發(fā)現(xiàn)活動結(jié)點(diǎn)分解時,輸出其分解所得的黑已知結(jié)點(diǎn)編碼,并存儲新活動結(jié)點(diǎn)與未知結(jié)點(diǎn)以記錄下八叉樹分解情況。利用一個棧結(jié)構(gòu)存儲這些結(jié)點(diǎn)的局部位置碼及在所在層,棧中的每個元素對應(yīng)樹的ー個結(jié)點(diǎn),結(jié)點(diǎn)按其窗掃描順序與出棧順序一致的原則存儲在棧中,并保證棧頂存儲的是活動結(jié)點(diǎn)。掃描過程中若發(fā)現(xiàn)活動結(jié)點(diǎn)分解,則彈出棧頂,壓入活動結(jié)點(diǎn)下的未知子結(jié)點(diǎn)和新的活動結(jié)點(diǎn)來更新樹的分解情況,同時根據(jù)被弾出的舊活動結(jié)點(diǎn)得到新的已知結(jié)點(diǎn)。當(dāng)活動結(jié)點(diǎn)掃描完后,它即變成已知結(jié)點(diǎn),彈出棧頂。在棧操作中,子空間中的地質(zhì)體的線性八叉樹編碼被動態(tài)輸出。如圖I中有ー顆對應(yīng)于23X 23X 23大小子空間的4階的滿八叉樹。當(dāng)窗掃描從編碼為0(0,括號內(nèi)為十進(jìn)制碼,下同)到54X(352)的結(jié)點(diǎn)屬性都為黑時,根結(jié)點(diǎn)為活動結(jié)點(diǎn),棧中僅有該根結(jié)點(diǎn)記錄;而當(dāng)發(fā)現(xiàn)55X(360)處結(jié)點(diǎn)屬性為灰,屬性發(fā)生變化,則根結(jié)點(diǎn)可分解成圖1(b)所示,新的活動結(jié)點(diǎn)為為55X(360),此時執(zhí)行棧更新,在棧更新中虛線內(nèi)的黑結(jié)點(diǎn)線性八叉樹編碼被動態(tài)輸出,黑結(jié)點(diǎn)的最終線性八叉樹編碼可由黑結(jié)點(diǎn)局部編碼與灰八分體的全局位置碼求和得到。當(dāng)子空間掃描完成時,便不存在未知結(jié)點(diǎn)和活動結(jié)點(diǎn),棧為空。問題的關(guān)鍵是如何通過窗八分體屬性及其變化,確定樹的分解情況,即確定活動結(jié)點(diǎn)的分解。(2)結(jié)點(diǎn)分解的確定顯然只有當(dāng)活動結(jié)點(diǎn)為灰時才會分解,存在以下兩種情形時都成立時活動結(jié)點(diǎn)不為灰(i)當(dāng)前窗八分體屬性為黑或白;(ii)當(dāng)前窗八分體與上ー窗八分體屬性相同;若兩 種情形有ー種不成立,則必定存在一個體素V,在V處出現(xiàn)了屬性變化。此時就要判斷此處屬性的變化是否會導(dǎo)致活動結(jié)點(diǎn)分解,分解將到哪ー層為止。本發(fā)明稱活動結(jié)點(diǎn)至上到下分解所截止的那ー層為V的最底分解層。
求V的最底分解層可通過檢查V在其各層祖先結(jié)點(diǎn)中的位置來求得,檢查從窗八分體所對應(yīng)結(jié)點(diǎn)(第m層)開始,至此向上展開。若V是其在第k層祖先結(jié)點(diǎn)的首位置體素,V處發(fā)生屬性變化未必能確定其第k層祖先為灰。一旦發(fā)現(xiàn)V不是其在第k(k<m)層祖先結(jié)點(diǎn)的首位置體素,便意味著該結(jié)點(diǎn)下體素的屬性必定不一致,則該結(jié)點(diǎn)一定為灰,第k層為最底分解層,檢查停止。如圖2所示,檢查發(fā)現(xiàn)V處屬性發(fā)生變化,且V是其在第m層的父結(jié)點(diǎn)及其在m-1層祖先結(jié)點(diǎn)的首位置體素,此時其父結(jié)點(diǎn)及其在m-1層的祖先結(jié)點(diǎn)都不為灰,繼續(xù)向上檢查,發(fā)現(xiàn)V并非其在m-2層祖先節(jié)點(diǎn)的首體素,則該結(jié)點(diǎn)判定為灰,其最底分解層確定為第m-2層。(3)棧操作
為了執(zhí)行棧更新,先彈出棧頂,獲得活動結(jié)點(diǎn)信息,然后從頂向下輸出活動結(jié)點(diǎn)以下各層中黑已知結(jié)點(diǎn)的線性八叉樹編碼,并壓入活動結(jié)點(diǎn)以下各層中新的未知子結(jié)點(diǎn),直到最底分解層為止,最后壓入新的活動結(jié)點(diǎn),完成棧更新。設(shè)活動結(jié)點(diǎn)為Na,Na分解所得的在第I層中的第k號結(jié)點(diǎn)為Na(l,k),棧更新過程如下I)彈出棧頂,得到Na信息位置碼M和所在層Itl,令當(dāng)前分解層I = 10+1 ;2)判斷第I層否高于或等于V的最底分解層ld,如是則轉(zhuǎn)3),否則轉(zhuǎn)7);3)根據(jù)當(dāng)前窗ロ位置碼,求窗八分體在第I層的祖先結(jié)點(diǎn)Na(l,p);4)如果上ー窗八分體屬性為黑(說明V之前的體素為黑),輸出第I層中屬性為黑的已知結(jié)點(diǎn)的線性八叉樹編碼順序產(chǎn)生從凡(1,0)至Na(l,p-1)在子空間下的局部編碼,將其與對應(yīng)于子空間的灰八分體全局位置碼求和并輸出;5)壓入在第I層中的未知結(jié)點(diǎn)將該層未知結(jié)點(diǎn)從Na(l,7)至Na(l,p+1)逆序壓入棧中;6)令 I = 1+1,轉(zhuǎn) 2);7)壓入新活動結(jié)點(diǎn)在棧中壓入窗八分體在最底分解層Id上的祖先結(jié)點(diǎn)Na(ld,P),返回。當(dāng)活動結(jié)點(diǎn)掃描完成后,它轉(zhuǎn)成已知結(jié)點(diǎn),進(jìn)行出棧操作首先彈出棧頂,根據(jù)棧頂信息將對應(yīng)于活動結(jié)點(diǎn)的線性八叉樹編碼輸出。編碼可根據(jù)窗八分體的屬性生成,將窗八分體屬性視為活動結(jié)點(diǎn)屬性,若窗八分體屬性為白,則一定不含黑體素,不產(chǎn)生編碼,否則生成并輸出對應(yīng)于活動結(jié)點(diǎn)的編碼。3、優(yōu)點(diǎn)及功效本發(fā)明提出了ー種從地質(zhì)體表面模型動態(tài)生成其線性八叉樹的方法,利用深度緩存快速確定八分體與地質(zhì)體關(guān)系與體素屬性,采用分治策略生成地質(zhì)體的線性八叉樹,在生成過程中動態(tài)輸出線性八叉樹編碼,省去了大量的排序并避免了壓縮過程,更高效的展示任意位置地質(zhì)體物理特性之間的空間關(guān)系,能滿足大規(guī)模地質(zhì)體建模的需要,在“數(shù)字礦山”等領(lǐng)域具有廣闊的應(yīng)用前景。


圖I結(jié)點(diǎn)的分解圖2最底分解層的確定圖3實(shí)驗(yàn)對象的及其線性八叉樹繪制結(jié)果(a)地層、(b)巖體五具體實(shí)施方式
本發(fā)明涉及一種地質(zhì)體線性八叉樹快速動態(tài)生成的方法,該方法的具體步驟如下步驟ー基于深度緩存判斷體素與地質(zhì)體的內(nèi)外關(guān)系采用深度緩存判斷體素在地質(zhì)體的內(nèi)外,設(shè)置與X,Y,Z軸垂直時的大小為2nX2n的(n為正整數(shù))三對深度緩存,將三對深度緩存分別標(biāo)記為[X1,X2]、[Y1,Y2]、[Z1,Z2],其中每對中的第一項(xiàng)存儲最近深度值,另ー項(xiàng)存儲最遠(yuǎn)深度值。用這三對深度緩存建立等價(jià)于八叉樹空間的立方體區(qū)域包圍地質(zhì)體,包圍盒的三個對立面分別與X、Y和Z軸垂直,且對應(yīng)干與其所垂直坐標(biāo)軸上的那對深度緩存。設(shè)空間中有ー實(shí)際坐標(biāo)為(x,y,z)的體素(I,J,K),對其做如下判斷IF ((X1 (K,J) ^ X ^ X2 (K,J)) AND (Y1 (I,K)彡 y 彡 Y2 (I,K)) AND (Z1 (I,J)彡z<Z2(I,J))),如果返回真,則體素在地質(zhì)體內(nèi),屬性為黑,否則在地質(zhì)體外,屬性為白。對于ー個八分體0,若劃分次數(shù)為I (I < n),0可視為在Z1XZ1XZi空間下的“體素”,則其屬性可通過類似的方法判斷。建立3對深度圖像[X’ X’ 2]、[Y’ Y,2]、IV v
V2],顯然,在242421空間下,深度圖像的大小應(yīng)為2421,這種縮小了的深度圖像按一定規(guī)則從[X1, X2]、[Y1, Y2]、[Z1, Z2]中采樣獲得。設(shè){X’ min Y’ min V min J 和{X’ maxY,maxl,Z,maxl},{X,min2,Y,fflin2, V fflin2}和{X,max2,Y,眶 2,V J 分別以最小值和最大值采樣規(guī)則從X’ 2,Y’ 2,Z’ 2中獲得,0中心點(diǎn)實(shí)際坐標(biāo)為(x,y,z),在Z1XZ1XZi空間下行列層坐標(biāo)為(レ,ム,も),邊長為a,單個體素的邊長為S,則0的屬性的可按如下規(guī)則判斷
IF( [x-a/2+ 5/2, x+a/2- S/2] Pl [X" min i(Ko, Jo), X1 max2([o,ゾo)]AND
\y-a/2+ 8/2, y+a/2- 5/2} fl [F min 人I0, K0), F _ 太I(xiàn)0, K0)] ^ 0 AND[z-a/2+ 5/2,z+a/2- S/2] H [Z,min ,(/0, J0), Z' _ 2(/0, J0)]豐 0 )
{
IF
([x-a/2+ S/2, x+a/2- ^/2] cz [X" max \{Ko, Jo),Xs mini(Ko, Jo)] AND[y-a/2+ 8/2, y+a/2- <S/2] c [T max \ {Io, Ko), min 2(/0, Ko)]AND
[z-a/2+ S/2, z+a/2- 8/2\ c [Z' max \ {Jo, Jo), ^ min 2(-^0, Jo)] )
O屬性為黑;
ELSE
O屬性為灰;
}
ELSE
O屬性為白;步驟ニ 對地質(zhì)體進(jìn)行八分體劃分
確定與地質(zhì)體相關(guān)的八分體,即確定被地質(zhì)體完全占據(jù)(黒),部分占據(jù)(灰)還是不含地質(zhì)體(白)的八分體,只有在屬性為非白的八分體中才可能產(chǎn)生線性八叉樹編碼,而屬性為白的八分體則無需考慮,對每個非白八分體進(jìn)行處理并確定其中體素的屬性,從而生成該八分體中所包含地質(zhì)體對應(yīng)的線性八叉樹,當(dāng)處理完所有非白八分體后,整個地質(zhì)體的線性八叉樹將構(gòu)造完成,對地質(zhì)體的八分體劃分事實(shí)上是按地質(zhì)體的占據(jù)情況對整個空間迭代八等分的過程,這ー過程用自底向上構(gòu)造八叉樹的方法來進(jìn)行。首先指定對空間劃分的最大次數(shù)I并將空間劃分為ズ※〗1※〗1個小八分體,然后用深度緩存判斷各個小八分體的屬性。在這些小八分體中,如果存在8個八分體屬于同一個父八分體且屬性都為黒,則將這8個八分體合井,從底向上一直合井上去,直到不能合并為止,從此,地質(zhì)體被劃分到各個屬性為非白的八分 體空間中。這種劃分可對應(yīng)于ー顆不完全八叉樹,它等價(jià)于地質(zhì)體最終八叉樹的第I層到第1+1層的部分,下一歩確定剩下的部分,即確定不完全八叉樹中非白葉結(jié)點(diǎn)的分解情況,從而生成地質(zhì)體的線性八叉樹。步驟三生成線性八叉樹按先序遍歷順序處理不完全八叉樹中的各非白葉結(jié)點(diǎn),在遍歷過程中按不同方法處理不完全八叉樹中黑葉結(jié)點(diǎn)與灰葉結(jié)點(diǎn)。對于黑葉結(jié)點(diǎn),因完全被地質(zhì)體占據(jù)不會進(jìn)ー步分解,則該結(jié)點(diǎn)即地質(zhì)體最終八叉樹的黑葉結(jié)點(diǎn),當(dāng)遇到不完全八叉樹中的每個黑結(jié)點(diǎn)時,可直接輸出其線性八叉樹編碼,而對灰葉結(jié)點(diǎn),則要掃描其所對應(yīng)八分體,在掃描中判斷其中各體素的屬性,從而確定結(jié)點(diǎn)的分解情況。(I)掃描灰八分體每個灰葉結(jié)點(diǎn)所對應(yīng)的灰八分體都可視為ー個2mX2mX2m大小的子空間,子空間中每個體素的位置也以一局部的位置碼表達(dá),采用ー個2X2X2大小的窗ロ按Morton碼的Z序掃描該子空間,下文稱該窗ロ所掃描的2X2X2八分體為窗八分體。掃描從子空間的首位置碼處開始,每到一處比較深度緩存中的深度值來檢查窗口內(nèi)體素的屬性,再比較窗ロ內(nèi)體素間的屬性返回窗八分體的屬性黑、白或灰。接著令當(dāng)前窗ロ的位置碼增加8,解碼得到下個窗ロ坐標(biāo),一直循環(huán)掃描下去,執(zhí)行又一次窗掃描,直到位置碼到2mX 2mX 2m結(jié)束,由此線性八叉樹構(gòu)造時的排序過程得以避免。本發(fā)明采用十進(jìn)制位置碼,因該碼具有可被快速地解碼的優(yōu)點(diǎn)。若將2mX2mX2m大小的子空間視為ー顆m+1階滿八叉樹,窗掃描過程等價(jià)于以先序檢查樹第m層上各結(jié)點(diǎn)的屬性。在毎次檢查中,由每個結(jié)點(diǎn)屬性的變化判斷樹的分解情況,并將分解所得黑葉結(jié)點(diǎn)編碼動態(tài)輸出。結(jié)點(diǎn)可歸為三類,ー類是已經(jīng)掃描過,屬性確定的結(jié)點(diǎn),即已知結(jié)點(diǎn);另ー類當(dāng)前掃描中屬性不確定且有可能分解的結(jié)點(diǎn),為活動結(jié)點(diǎn);再有一類是尚未掃描的,屬性未知的結(jié)點(diǎn),即未知結(jié)點(diǎn)。當(dāng)窗掃描發(fā)現(xiàn)活動結(jié)點(diǎn)分解時,輸出其分解所得的黑已知結(jié)點(diǎn)編碼,并存儲新活動結(jié)點(diǎn)與未知結(jié)點(diǎn)以記錄下八叉樹分解情況。利用一個棧結(jié)構(gòu)存儲這些結(jié)點(diǎn)的局部位置碼及在所在層,棧中的每個元素對應(yīng)樹的ー個結(jié)點(diǎn),結(jié)點(diǎn)按其窗掃描順序與出棧順序一致的原則存儲在棧中,并保證棧頂存儲的是活動結(jié)點(diǎn)。掃描過程中若發(fā)現(xiàn)活動結(jié)點(diǎn)分解,則彈出棧頂,壓入活動結(jié)點(diǎn)下的未知子結(jié)點(diǎn)和新的活動結(jié)點(diǎn)來更新樹的分解情況,同時根據(jù)被弾出的舊活動結(jié)點(diǎn)得到新的已知結(jié)點(diǎn)。當(dāng)活動結(jié)點(diǎn)掃描完后,它即變成已知結(jié)點(diǎn),彈出棧頂。在棧操作中,子空間中的地質(zhì)體的線性八叉樹編碼被動態(tài)輸出。
如圖I中有ー顆對應(yīng)于23X 23X 23大小子空間的4階的滿八叉樹。當(dāng)窗掃描從編碼為0(0,括號內(nèi)為十進(jìn)制碼,下同)到54X(352)的結(jié)點(diǎn)屬性都為黑時,根結(jié)點(diǎn)為活動結(jié)點(diǎn),棧中僅有該根結(jié)點(diǎn)記錄;而當(dāng)發(fā)現(xiàn)55X(360)處結(jié)點(diǎn)屬性為灰,屬性發(fā)生變化,則根結(jié)點(diǎn)可分解成圖1(b)所示,新的活動結(jié)點(diǎn)為為55X(360),此時執(zhí)行棧更新,在棧更新中虛線內(nèi)的黑結(jié)點(diǎn)線性八叉樹編碼被動態(tài)輸出,黑結(jié)點(diǎn)的最終線性八叉樹編碼可由黑結(jié)點(diǎn)局部編碼與灰八分體的全局位置碼求和得到。當(dāng)子空間掃描完成時,便不存在未知結(jié)點(diǎn)和活動結(jié)點(diǎn),棧為空。問題的關(guān)鍵是如何通過窗八分體屬性及其變化,確定樹的分解情況,即確定活動結(jié)點(diǎn)的分解。(2)結(jié)點(diǎn)分解的確定顯然只有當(dāng)活動結(jié)點(diǎn)為灰時才會分解,存在以下兩種情形時都成立時活動結(jié)點(diǎn)不為灰(i)當(dāng)前窗八分體屬性為黑或白;(ii)當(dāng)前窗八分體與上ー窗八分體屬性相同;若兩種情形有ー種不成立,則必定存在一個體素V,在V處出現(xiàn)了屬性變化。此時就要判斷此處屬性的變化是否會導(dǎo)致活動結(jié)點(diǎn)分解,分解將到哪ー層為止。本發(fā)明稱活動結(jié)點(diǎn)至上到下分解所截止的那ー層為V的最底分解層。求V的最底分解層可通過檢查V在其各層祖先結(jié)點(diǎn)中的位置來求得,檢查從窗八分體所對應(yīng)結(jié)點(diǎn)(第m層)開始,至此向上展開。若V是其在第k層祖先結(jié)點(diǎn)的首位置體素,V處發(fā)生屬性變化未必能確定其第k層祖先為灰。一旦發(fā)現(xiàn)V不是其在第k(k < m)層祖先結(jié)點(diǎn)的首位置體素,便意味著該結(jié)點(diǎn)下體素的屬性必定不一致,則該結(jié)點(diǎn)一定為灰,第k層為最底分解層,檢查停止。如圖2所示,檢查發(fā)現(xiàn)V處屬性發(fā)生變化,且V是其在第m層的父結(jié)點(diǎn)及其在m-1層祖先結(jié)點(diǎn)的首位置體素,此時其父結(jié)點(diǎn)及其在m-1層的祖先結(jié)點(diǎn)都不為灰,繼續(xù)向上檢查,發(fā)現(xiàn)V并非其在m-2層祖先節(jié)點(diǎn)的首體素,則該結(jié)點(diǎn)判定為灰,其最底分解層確定為第m-2層。(3)棧操作先彈出棧頂,獲得活動結(jié)點(diǎn)信息,然后從頂向下輸出活動結(jié)點(diǎn)以下各層中黑已知結(jié)點(diǎn)的線性八叉樹編碼,并壓入活動結(jié)點(diǎn)以下各層中新的未知子結(jié)點(diǎn),直到最底分解層為止,最后壓入新的活動結(jié)點(diǎn),完成棧更新。設(shè)活動結(jié)點(diǎn)為Na,Na分解所得的在第I層中的第k號結(jié)點(diǎn)為Na (I,k),棧更新過程如下I)彈出棧頂,得到Na信息位置碼M和所在層Itl,令當(dāng)前分解層I = 10+1 ;2)判斷第I層否高于或等于V的最底分解層ld,如是則轉(zhuǎn)3),否則轉(zhuǎn)7);3)根據(jù)當(dāng)前窗ロ位置碼,求窗八分體在第I層的祖先結(jié)點(diǎn)Na(l,p);4)如果上ー窗八分體屬性為黑(說明V之前的體素為黑),輸出第I層中屬性為黑的已知結(jié)點(diǎn)的線性八叉樹編碼順序產(chǎn)生從凡(1,0)至Na(l,P-1)在子空間下的局部編碼,將其與對應(yīng)于子空間的灰八分體全局位置碼求和并輸出;5)壓入在第I層中的未知結(jié)點(diǎn)將該層未知結(jié)點(diǎn)從Na(l,7)至Na(l,p+1)逆序壓入棧中;6)令 I = 1+1,轉(zhuǎn) 2);7)壓入新活動結(jié)點(diǎn)在棧中壓入窗八分體在最底分解層Id上的祖先結(jié)點(diǎn)Na(ld,P),返回。 當(dāng)活動結(jié)點(diǎn)掃描完成后,它轉(zhuǎn)成已知結(jié)點(diǎn),進(jìn)行出棧操作首先彈出棧頂,根據(jù)棧頂信息將對應(yīng)于活動結(jié)點(diǎn)的線性八叉樹編碼輸出。編碼可根據(jù)窗八分體的屬性生成,將窗八分體屬性視為活動結(jié)點(diǎn)屬性,若窗八分體屬性為白,則一定不含黑體素,不產(chǎn)生編碼,否則生成并輸出對應(yīng)于活動結(jié)點(diǎn)的編碼。實(shí)施例I :選用某銅礦床中的一地層和一巖體,在一臺主要配置為Pentiumn4 3. 06GHz (HT)CPU、512MB內(nèi)存和GeForce 6600顯卡的計(jì)算機(jī)上進(jìn)行了實(shí)施。表I給出了上述2個對象基本情況,表2給出了本發(fā)明在不同分辨率下的運(yùn)行時間。表I.測試對象
權(quán)利要求
1.本發(fā)明涉及一種地質(zhì)體線性八叉樹快速動態(tài)生成的步驟包括 步驟一基于深度緩存判斷體素與地質(zhì)體的內(nèi)外關(guān)系 采用深度緩存判斷體素在地質(zhì)體的內(nèi)外,設(shè)置與X,Y,Z軸垂直時的大小為2nX2n的三對深度緩存,將三對深度緩存分別標(biāo)記為[XnX2]、[YijY2]、[Z1, Z2],其中每對中的第一項(xiàng)存儲的最近深度值,另一項(xiàng)存儲最遠(yuǎn)深度值,用這三對深度緩存建立等價(jià)于八叉樹空間的立方體區(qū)域包圍地質(zhì)體,包圍盒的三個對立面分別與X,Y和Z軸垂直,且對應(yīng)于與其所垂直坐標(biāo)軸上的那對深度緩存,設(shè)空間中有一坐標(biāo)為(x,1,z)的體素(I,J,K),對其做如下判斷IF ((X1 (K,J) ^ X ^ X2 (K,J)) AND (Y1(LK) ^ y ^ Y2 (I,K)) AND (Z1 (I,J) ( z ( Z2(IjJ))),如果返回真,則體素在地質(zhì)體內(nèi),屬性為黑,否則在地質(zhì)體外,屬性為白。
對于一個八分體O,若劃分次數(shù)為I (I < n),O可視為在21 X 21 X 21空間下的“體素”,則其屬性可通過類似的方法判斷,建立3對深度圖像[X’ pX’ 2]、[Y’ pY’ 2]、IV x, V 2],深度圖像按一定規(guī)則從[X1, X2]、[Y1, Y2]、[Z1, Z2]中采樣獲得;設(shè){X’ min 1 V min 1 V min J和IX’ _V _ J,{X,fflin 2,Y,min 2,Z’ fflin J 和{X,_ 2,Y,_ 2,V _ J 分別以最小值和最大值采樣規(guī)則從X’ 2,Y’ 2,Z’ 2中獲得,O中心點(diǎn)實(shí)際坐標(biāo)為(x,y,z),在Z1XZ1XSi空間下行列層坐標(biāo)為(10,J0, 10,邊長為a,單個體素的邊長為S,則O的屬性可按如下規(guī)則判斷IF( [x-a/2+ d/2, x+a/2- S/2] fl [JC min i(K0, Jo), ^ _ 2(^0, Jo)] + 0 AND\y-a/2+ S/2, y+a/2- S/2\ fl [T min i(70, K0), T _ 2(/0, K0)] + 0 AND[z-a/2+ 8/2, z+a/2- S/2] fl [Z5 min 1(/0, Jo), Z5 max 2(/0, Jo)] i1 0 ){ IF([x-a/2+ ^/2, x+a/2- 8/2] a [JC max \{Ko, Jo), ^ mm2([o,^/o)] AND\y-a/2+ 8/2, y+a/2- S/2] c: [T max i(/0, K0), T _2(/o, K0)] AND[z-a/2+ S/2, z+a/2- S/2] c= [Z, max i(70, J0), T min 2(I。, J0)]) O屬性為黑; ELSE O屬性為灰; } ELSE (9屬性為白; 步驟二 對地質(zhì)體進(jìn)行八分體劃分 確定與地質(zhì)體相關(guān)的八分體,即確定被地質(zhì)體完全占據(jù)(黑),部分占據(jù)(灰)還是不含地質(zhì)體(白)的八分體,只有在屬性為非白的八分體中才可能產(chǎn)生線性八叉樹編碼,而屬性為白的八分體則無需考慮,對每個非白八分體進(jìn)行處理并確定其中體素的屬性,從而生成該八分體中所包含地質(zhì)體對應(yīng)的線性八叉樹,當(dāng)處理完所有非白八分體后,整個地質(zhì)體的線性八叉樹將構(gòu)造完成,這一過程用自底向上構(gòu)造八叉樹的方法來進(jìn)行,首先指定對空間劃分的最大次數(shù)I并將空間劃分為XXZ1XZi個小八分體,用深度緩存判斷各個小八分體的屬性,在這些小八分體中,如果存在8個八分體屬于同一個父八分體且屬性都為黑,則將這8個八分體合并,從底向上一直合并上去,直到不能合并為止,從此,地質(zhì)體被劃分到各個屬性為非白的八分體空間中,下一步確定剩下的部分,即確定不完全八叉樹中非白葉結(jié)點(diǎn)的分解情況,從而生成地質(zhì)體的線性八叉樹 步驟三生成地質(zhì)體線性八叉樹 按先序遍歷順序處理不完全八叉樹中的各非白葉結(jié)點(diǎn),在遍歷過程中按不同方法處理不完全八叉樹中黑葉結(jié)點(diǎn)與灰葉結(jié)點(diǎn),當(dāng)遇到不完全八叉樹中的每個黑結(jié)點(diǎn)時,可直接輸出其線性八叉樹編碼,而對灰葉結(jié)點(diǎn),則要掃描其所對應(yīng)八分體,在掃描中判斷其中各體素的屬性,從而確定結(jié)點(diǎn)的分解情況。
(1)掃描灰八分體 每個灰葉結(jié)點(diǎn)所對應(yīng)的灰八分體都可視為一個2mX2mX2m大小的子空間,采用一個2X2X2大小的窗口按Morton碼的Z序掃描該子空間,下文稱該窗口所掃描的2X2X2八分體為窗八分體,掃描從子空間的首位置碼處開始,每到一處比較深度緩存中的深度值來檢查窗口內(nèi)體素的屬性,再比較窗口內(nèi)體素間的屬性返回窗八分體的屬性黑、白或灰,解碼得到下個窗口坐標(biāo),一直循環(huán)掃描下去,執(zhí)行又一次窗掃描,直到位置碼到2mX 2mX 2m結(jié)束,在每次檢查中,將分解所得的黑葉結(jié)點(diǎn)編碼動態(tài)輸出,當(dāng)窗掃描發(fā)現(xiàn)活動結(jié)點(diǎn)分解時,輸出其分解所得的黑已知結(jié)點(diǎn)編碼,并存儲新活動結(jié)點(diǎn)與未知結(jié)點(diǎn)以記錄下八叉樹分解的情況。
利用一個棧結(jié)構(gòu)存儲這些結(jié)點(diǎn)的局部位置碼及在所在層,棧中的每個元素對應(yīng)樹的一個結(jié)點(diǎn),結(jié)點(diǎn)按其窗掃描順序與出棧順序一致的原則存儲在棧中,并保證棧頂存儲的是活動結(jié)點(diǎn),掃描過程中若發(fā)現(xiàn)活動結(jié)點(diǎn)分解,彈出棧頂,壓入活動結(jié)點(diǎn)下的未知子結(jié)點(diǎn)和新的活動結(jié)點(diǎn)來更新樹的分解情況,同時根據(jù)被彈出的舊活動結(jié)點(diǎn)得到新的已知結(jié)點(diǎn),在棧操作中,動態(tài)輸出子空間中地質(zhì)體的線性八叉樹編碼。
(2)結(jié)點(diǎn)分解的確定 本發(fā)明稱活動結(jié)點(diǎn)自上到下分解所截止的那一層為體素V的最底分解層,求V的最底分解層可通過檢查V在其各層祖先結(jié)點(diǎn)中的位置來求得,檢查從窗八分體所對應(yīng)結(jié)點(diǎn)(第m層)開始,至此向上展開,一旦發(fā)現(xiàn)V不是其在第k(k<m)層祖先結(jié)點(diǎn)的首位置體素,該結(jié)點(diǎn)為灰,第k層為最底分解層,檢查停止。
(3)棧操作 先彈出棧頂,獲得活動結(jié)點(diǎn)信息,然后從頂向下輸出活動結(jié)點(diǎn)以下各層中的黑已知結(jié)點(diǎn)的線性八叉樹編碼,并壓入活動結(jié)點(diǎn)以下各層中新的未知子結(jié)點(diǎn),直到最底分解層為止,最后壓入新的活動結(jié)點(diǎn),完成棧更新,設(shè)活動結(jié)點(diǎn)為Na,Na分解所得的在第I層中的第k號結(jié)點(diǎn)為Na(l,k),棧更新過程如下 1)彈出棧頂,得到Na信息位置碼M和所在層Itl,令當(dāng)前分解層I= 10+1 ; 2)判斷第I層否高于或等于V的最底分解層ld,如是則轉(zhuǎn)3),否則轉(zhuǎn)7); 3)根據(jù)當(dāng)前窗口位置碼,求窗八分體在第I層的祖先結(jié)點(diǎn)Na(l,p); 4)如果上一窗八分體屬性為黑(說明V之前的體素為黑),輸出第I層中屬性為黑的已知結(jié)點(diǎn)的線性八叉樹編碼順序產(chǎn)生從Na(l,0)至凡(1,?-1)在子空間下的局部編碼,將其與對應(yīng)于子空間的灰八分體全局位置碼求和并輸出; 5)壓入在第I層中的未知結(jié)點(diǎn)將該層未知結(jié)點(diǎn)從Na(l,7)至凡(1,p+1)逆序壓入棧中; 6)令I(lǐng) = 1+1,轉(zhuǎn) 2);7)壓入新活動結(jié)點(diǎn)在棧中壓入窗八分體在最底分解層Id上的祖先結(jié)點(diǎn)Na(ld,p),返回。
當(dāng)活動結(jié)點(diǎn)掃描完成后,它轉(zhuǎn)成已知結(jié)點(diǎn),進(jìn)行出棧操作,首先彈出棧頂,根據(jù)棧頂信息將對應(yīng)于活動結(jié)點(diǎn)的線性八叉樹編碼輸出,將窗八分體屬性視為 活動結(jié)點(diǎn)屬性,若窗八分體屬性為白,則一定不含黑體素,不產(chǎn)生編碼,否則生成并輸出對應(yīng)于活動結(jié)點(diǎn)的編碼。
全文摘要
該發(fā)明提供了一種地質(zhì)體面模型快速動態(tài)生成其線性八叉樹的方法,利用深度緩存判斷體元在實(shí)體內(nèi)外,通過棧結(jié)構(gòu)來存儲八叉樹分解的情況,對棧的操作中輸出編碼,省去了結(jié)點(diǎn)的復(fù)雜排序和壓縮過程,進(jìn)一步利用深度緩存的信息,對地質(zhì)體進(jìn)行分塊并按分塊實(shí)時構(gòu)造線性八叉樹,從而實(shí)現(xiàn)地質(zhì)體的快速構(gòu)建和可視化,能很好的對隱伏礦體預(yù)測中的地質(zhì)對象進(jìn)行模擬與分析。
文檔編號G06T17/05GK102651144SQ201210089320
公開日2012年8月29日 申請日期2012年3月30日 優(yōu)先權(quán)日2012年3月30日
發(fā)明者張立強(qiáng), 張良, 鄧浩 申請人:北京師范大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1