一种地质体线性八叉树快速动态生成的方法

文档序号:6367224阅读:162来源:国知局
专利名称:一种地质体线性八叉树快速动态生成的方法
技术领域
本发明涉及一种计算机硬件加速下的地质体线性八叉树快速动态生成的方法,属于空间信息技术领域。
背景技术
随着虚拟现实、科学计算可视化等技术的快速发展,三维建模技术已越来越多应用在地质与地球物理领域,并成为对地球物理数据进行地质解释的ー种重要手段。在三维地学建模中,地质体一般有两种表达方法一种为面表^^,另ー种为体表^^。前者有着易于建模,模型易于显示和存储的优点,但这种面表示模型难以表达地质体内属性信息,不易进行如集合等空间操作,而体模型易于集合运算与定量量算,并可进行体绘制。因此在“数字矿山”应用中,常需要将某些感兴趣的空间数据转换成ー种更准确而高效的表达方式。为了提高转换的效率,通常采用基于图形硬件加速的快速体素化来生成体数据集,但对大規模地质体进行高精度体建模时,这种的体数据集会异常庞大,需要将其存储成八叉树等压缩结构。线性八叉树作为八叉树模型的ー种表示方法,它只存储表示目标地质体的叶结点,节约了存储空间,重要是的它在三维地学建模系统中常见的集合操作、地质体局部变形和提取操作上效率高。为了满足大規模地质体高精度建模与交互的需要,针对体素模型的存储空间过大的缺点,本发明提供了地质体的线性八叉树快速动态生成技术,从而实现地质体的快速构建和可视化,本发明的方法具有很高的执行效率和建模精度,能够很好的对隐伏矿体预测中的地质对象进行模拟与分析。

发明内容
I、目的本发明的目的是提供一种地质体三维表达与建模的方法,实现地质测量数据和几何模型的一体化表达与存储,满足操作、分析和解译三维地质体的需要。2、技术方案本发明提供一种地质体线性八叉树快速动态生成的方法,具体步骤如下步骤ー基于深度缓存判断体素与地质体的内外关系采用深度缓存判断体素在地质体的内外,设置与X,Y,Z轴垂直时的大小为2nX2n的(n为正整数)三对深度缓存,将三对深度缓存分别标记为[X1,X2]、[Y1,Y2]、[Z1,Z2],其中每对中的第一项存储最近深度值,另ー项存储最远深度值。用这三对深度缓存建立等价于八叉树空间的立方体区域包围地质体,包围盒的三个对立面分别与X、Y和Z轴垂直,且对应干与其所垂直坐标轴上的那对深度缓存。设空间中有ー实际坐标为(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))),如果返回真,则体素在地质体内,属性为黑,否则在地质体外,属性为白。对于ー个八分体0,若划分次数为I (I < n),0可视为在2^2^21空间下的“体素”,则其属性可通过类似的方法判断。建立3对深度图像[X’ X’ 2]、[Y’ Y,2]、IV vV2],显然,在242421空间下,深度图像的大小应为2421,这种缩小了的深度图像按一定规则从[X1, X2]、[Y1, Y2]、[Z1, Z2]中采样获得。设{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 分别以最小值和最大值采样规则从X’ 2,Y’ 2,Z’ 2中获得,O中心点实际坐标为(x,y,z),在Z1XZ1XZi空间下行列层坐标为(10,J0,ん),边长为a,单个体素的边长为S,则O的属性的可按如下规则判断
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 _ 太I0,ル)]丰 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属性为白;步骤ニ 对地质体进行八分体划分确定与地质体相关的八分体,即确定被地质体完全占据(黒),部分占据(灰)还是不含地质体(白)的八分体,只有在属性为非白的八分体中才可能产生线性八叉树编码,而属性为白的八分体则无需考虑,对每个非白八分体进行处理并确定其中体素的属性,从而生成该八分体中所包含地质体对应的线性八叉树,当处理完所有非白八分体后,整个地质体的线性八叉树将构造完成,对地质体的八分体划分事实上是按地质体的占据情况对整个空间迭代八等分的过程,这ー过程用自底向上构造八叉树的方法来进行。首先指定对空间划分的最大次数I并将空间划分为fxgix〗1个小八分体,然后用深度缓存判断各个小八分体的属性。在这些小八分体中,如果存在8个八分体属于同一个父八分体且属性都为黒,则将这8个八分体合井,从底向上一直合井上去,直到不能合并为止,从此,地质体被划分到各个属性为非白的八分体空间中。这种划分可对应于ー颗不完全八叉树,它等价于地质体最終八叉树的第I层到第1+1层的部分,下一歩确定剩下的部分,即确定不完全八叉树中非白叶结点的分解情况,从而生成地质体的线性八叉树。步骤三生成线性八叉树按先序遍历顺序处理不完全八叉树中的各非白叶结点,在遍历过程中按不同方法处理不完全八叉树中黑叶结点与灰叶结点。对于黑叶结点,因完全被地质体占据不会进ー步分解,则该结点即地质体最終八叉树的黑叶结点,当遇到不完全八叉树中的每个黑结点时,可直接输出其线性八叉树编码,而对灰叶结点,则要扫描其所对应八分体,在扫描中判断其中各体素的属性,从而确定结点的分解情況。(I)扫描灰八分体每个灰叶结点所对应的灰八分体都可视为ー个2mX2mX2m大小的子空间,子空间中每个体素的位置也以一局部的位置码表达,采用ー个2X2X2大小的窗ロ按Morton码的Z序扫描该子空间,下文称该窗ロ所扫描的2X2X2八分体为窗八分体。扫描从子空间的首位置码处开始,每到一处比较深度缓存中的深度值来检查窗口内体素的属性,再比较窗ロ内体素间的属性返回窗八分体的属性黑、白或灰。接着令当前窗ロ的位置码增加8,解码得到下个窗ロ坐标,一直循环扫描下去,执行又一次窗扫描,直到位置码到2mX 2mX 2m结束,由此线性八叉树构造时的排序过程得以避免。本发明采用十进制位置码,因该码具有可被快速地解码的优点。若将2mX2mX2m大小的子空间视为ー颗m+1阶满八叉树,窗扫描过程等价于以先序检查树第m层上各结点的属性。在毎次检查中,由每个结点属性的变化判断树的分解情况,并将分解所得黑叶结点编码动态输出。结点可归为三类,ー类是已经扫描过,属性确定的结点,即已知结点;另ー类当前扫描中属性不确定且有可能分解的结点,为活动结点;再有一类是尚未扫描的,属性未知的结点,即未知结点。当窗扫描发现活动结点分解时,输出其分解所得的黑已知结点编码,并存储新活动结点与未知结点以记录下八叉树分解情況。利用一个栈结构存储这些结点的局部位置码及在所在层,栈中的每个元素对应树的ー个结点,结点按其窗扫描顺序与出栈顺序一致的原则存储在栈中,并保证栈顶存储的是活动结点。扫描过程中若发现活动结点分解,则弹出栈顶,压入活动结点下的未知子结点和新的活动结点来更新树的分解情况,同时根据被弾出的旧活动结点得到新的已知结点。当活动结点扫描完后,它即变成已知结点,弹出栈顶。在栈操作中,子空间中的地质体的线性八叉树编码被动态输出。如图I中有ー颗对应于23X 23X 23大小子空间的4阶的满八叉树。当窗扫描从编码为0(0,括号内为十进制码,下同)到54X(352)的结点属性都为黑时,根结点为活动结点,栈中仅有该根结点记录;而当发现55X(360)处结点属性为灰,属性发生变化,则根结点可分解成图1(b)所示,新的活动结点为为55X(360),此时执行栈更新,在栈更新中虚线内的黑结点线性八叉树编码被动态输出,黑结点的最终线性八叉树编码可由黑结点局部编码与灰八分体的全局位置码求和得到。当子空间扫描完成时,便不存在未知结点和活动结点,栈为空。问题的关键是如何通过窗八分体属性及其变化,确定树的分解情況,即确定活动结点的分解。(2)结点分解的确定显然只有当活动结点为灰时才会分解,存在以下两种情形时都成立时活动结点不为灰(i)当前窗八分体属性为黑或白;(ii)当前窗八分体与上ー窗八分体属性相同;若两 种情形有ー种不成立,则必定存在一个体素V,在V处出现了属性变化。此时就要判断此处属性的变化是否会导致活动结点分解,分解将到哪ー层为止。本发明称活动结点至上到下分解所截止的那ー层为V的最底分解层。
求V的最底分解层可通过检查V在其各层祖先结点中的位置来求得,检查从窗八分体所对应结点(第m层)开始,至此向上展开。若V是其在第k层祖先结点的首位置体素,V处发生属性变化未必能确定其第k层祖先为灰。一旦发现V不是其在第k(k<m)层祖先结点的首位置体素,便意味着该结点下体素的属性必定不一致,则该结点一定为灰,第k层为最底分解层,检查停止。如图2所示,检查发现V处属性发生变化,且V是其在第m层的父结点及其在m-1层祖先结点的首位置体素,此时其父结点及其在m-1层的祖先结点都不为灰,继续向上检查,发现V并非其在m-2层祖先节点的首体素,则该结点判定为灰,其最底分解层确定为第m-2层。(3)栈操作
为了执行栈更新,先弹出栈顶,获得活动结点信息,然后从顶向下输出活动结点以下各层中黑已知结点的线性八叉树编码,并压入活动结点以下各层中新的未知子结点,直到最底分解层为止,最后压入新的活动结点,完成栈更新。设活动结点为Na,Na分解所得的在第I层中的第k号结点为Na(l,k),栈更新过程如下I)弹出栈顶,得到Na信息位置码M和所在层Itl,令当前分解层I = 10+1 ;2)判断第I层否高于或等于V的最底分解层ld,如是则转3),否则转7);3)根据当前窗ロ位置码,求窗八分体在第I层的祖先结点Na(l,p);4)如果上ー窗八分体属性为黑(说明V之前的体素为黑),输出第I层中属性为黑的已知结点的线性八叉树编码顺序产生从凡(1,0)至Na(l,p-1)在子空间下的局部编码,将其与对应于子空间的灰八分体全局位置码求和并输出;5)压入在第I层中的未知结点将该层未知结点从Na(l,7)至Na(l,p+1)逆序压入栈中;6)令 I = 1+1,转 2);7)压入新活动结点在栈中压入窗八分体在最底分解层Id上的祖先结点Na(ld,P),返回。当活动结点扫描完成后,它转成已知结点,进行出栈操作首先弹出栈顶,根据栈顶信息将对应于活动结点的线性八叉树编码输出。编码可根据窗八分体的属性生成,将窗八分体属性视为活动结点属性,若窗八分体属性为白,则一定不含黑体素,不产生编码,否则生成并输出对应于活动结点的编码。3、优点及功效本发明提出了ー种从地质体表面模型动态生成其线性八叉树的方法,利用深度缓存快速确定八分体与地质体关系与体素属性,采用分治策略生成地质体的线性八叉树,在生成过程中动态输出线性八叉树编码,省去了大量的排序并避免了压缩过程,更高效的展示任意位置地质体物理特性之间的空间关系,能满足大規模地质体建模的需要,在“数字矿山”等领域具有广阔的应用前景。


图I结点的分解图2最底分解层的确定图3实验对象的及其线性八叉树绘制结果(a)地层、(b)岩体五具体实施方式
本发明涉及一种地质体线性八叉树快速动态生成的方法,该方法的具体步骤如下步骤ー基于深度缓存判断体素与地质体的内外关系采用深度缓存判断体素在地质体的内外,设置与X,Y,Z轴垂直时的大小为2nX2n的(n为正整数)三对深度缓存,将三对深度缓存分别标记为[X1,X2]、[Y1,Y2]、[Z1,Z2],其中每对中的第一项存储最近深度值,另ー项存储最远深度值。用这三对深度缓存建立等价于八叉树空间的立方体区域包围地质体,包围盒的三个对立面分别与X、Y和Z轴垂直,且对应干与其所垂直坐标轴上的那对深度缓存。设空间中有ー实际坐标为(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))),如果返回真,则体素在地质体内,属性为黑,否则在地质体外,属性为白。对于ー个八分体0,若划分次数为I (I < n),0可视为在Z1XZ1XZi空间下的“体素”,则其属性可通过类似的方法判断。建立3对深度图像[X’ X’ 2]、[Y’ Y,2]、IV v
V2],显然,在242421空间下,深度图像的大小应为2421,这种缩小了的深度图像按一定规则从[X1, X2]、[Y1, Y2]、[Z1, Z2]中采样获得。设{X’ min Y’ min V min J 和{X’ maxY,maxl,Z,maxl},{X,min2,Y,fflin2, V fflin2}和{X,max2,Y,眶 2,V J 分别以最小值和最大值采样规则从X’ 2,Y’ 2,Z’ 2中获得,0中心点实际坐标为(x,y,z),在Z1XZ1XZi空间下行列层坐标为(レ,ム,も),边长为a,单个体素的边长为S,则0的属性的可按如下规则判断
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 _ 太I0, 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属性为白;步骤ニ 对地质体进行八分体划分
确定与地质体相关的八分体,即确定被地质体完全占据(黒),部分占据(灰)还是不含地质体(白)的八分体,只有在属性为非白的八分体中才可能产生线性八叉树编码,而属性为白的八分体则无需考虑,对每个非白八分体进行处理并确定其中体素的属性,从而生成该八分体中所包含地质体对应的线性八叉树,当处理完所有非白八分体后,整个地质体的线性八叉树将构造完成,对地质体的八分体划分事实上是按地质体的占据情况对整个空间迭代八等分的过程,这ー过程用自底向上构造八叉树的方法来进行。首先指定对空间划分的最大次数I并将空间划分为ズ※〗1※〗1个小八分体,然后用深度缓存判断各个小八分体的属性。在这些小八分体中,如果存在8个八分体属于同一个父八分体且属性都为黒,则将这8个八分体合井,从底向上一直合井上去,直到不能合并为止,从此,地质体被划分到各个属性为非白的八分 体空间中。这种划分可对应于ー颗不完全八叉树,它等价于地质体最終八叉树的第I层到第1+1层的部分,下一歩确定剩下的部分,即确定不完全八叉树中非白叶结点的分解情况,从而生成地质体的线性八叉树。步骤三生成线性八叉树按先序遍历顺序处理不完全八叉树中的各非白叶结点,在遍历过程中按不同方法处理不完全八叉树中黑叶结点与灰叶结点。对于黑叶结点,因完全被地质体占据不会进ー步分解,则该结点即地质体最終八叉树的黑叶结点,当遇到不完全八叉树中的每个黑结点时,可直接输出其线性八叉树编码,而对灰叶结点,则要扫描其所对应八分体,在扫描中判断其中各体素的属性,从而确定结点的分解情況。(I)扫描灰八分体每个灰叶结点所对应的灰八分体都可视为ー个2mX2mX2m大小的子空间,子空间中每个体素的位置也以一局部的位置码表达,采用ー个2X2X2大小的窗ロ按Morton码的Z序扫描该子空间,下文称该窗ロ所扫描的2X2X2八分体为窗八分体。扫描从子空间的首位置码处开始,每到一处比较深度缓存中的深度值来检查窗口内体素的属性,再比较窗ロ内体素间的属性返回窗八分体的属性黑、白或灰。接着令当前窗ロ的位置码增加8,解码得到下个窗ロ坐标,一直循环扫描下去,执行又一次窗扫描,直到位置码到2mX 2mX 2m结束,由此线性八叉树构造时的排序过程得以避免。本发明采用十进制位置码,因该码具有可被快速地解码的优点。若将2mX2mX2m大小的子空间视为ー颗m+1阶满八叉树,窗扫描过程等价于以先序检查树第m层上各结点的属性。在毎次检查中,由每个结点属性的变化判断树的分解情况,并将分解所得黑叶结点编码动态输出。结点可归为三类,ー类是已经扫描过,属性确定的结点,即已知结点;另ー类当前扫描中属性不确定且有可能分解的结点,为活动结点;再有一类是尚未扫描的,属性未知的结点,即未知结点。当窗扫描发现活动结点分解时,输出其分解所得的黑已知结点编码,并存储新活动结点与未知结点以记录下八叉树分解情況。利用一个栈结构存储这些结点的局部位置码及在所在层,栈中的每个元素对应树的ー个结点,结点按其窗扫描顺序与出栈顺序一致的原则存储在栈中,并保证栈顶存储的是活动结点。扫描过程中若发现活动结点分解,则弹出栈顶,压入活动结点下的未知子结点和新的活动结点来更新树的分解情况,同时根据被弾出的旧活动结点得到新的已知结点。当活动结点扫描完后,它即变成已知结点,弹出栈顶。在栈操作中,子空间中的地质体的线性八叉树编码被动态输出。
如图I中有ー颗对应于23X 23X 23大小子空间的4阶的满八叉树。当窗扫描从编码为0(0,括号内为十进制码,下同)到54X(352)的结点属性都为黑时,根结点为活动结点,栈中仅有该根结点记录;而当发现55X(360)处结点属性为灰,属性发生变化,则根结点可分解成图1(b)所示,新的活动结点为为55X(360),此时执行栈更新,在栈更新中虚线内的黑结点线性八叉树编码被动态输出,黑结点的最终线性八叉树编码可由黑结点局部编码与灰八分体的全局位置码求和得到。当子空间扫描完成时,便不存在未知结点和活动结点,栈为空。问题的关键是如何通过窗八分体属性及其变化,确定树的分解情況,即确定活动结点的分解。(2)结点分解的确定显然只有当活动结点为灰时才会分解,存在以下两种情形时都成立时活动结点不为灰(i)当前窗八分体属性为黑或白;(ii)当前窗八分体与上ー窗八分体属性相同;若两种情形有ー种不成立,则必定存在一个体素V,在V处出现了属性变化。此时就要判断此处属性的变化是否会导致活动结点分解,分解将到哪ー层为止。本发明称活动结点至上到下分解所截止的那ー层为V的最底分解层。求V的最底分解层可通过检查V在其各层祖先结点中的位置来求得,检查从窗八分体所对应结点(第m层)开始,至此向上展开。若V是其在第k层祖先结点的首位置体素,V处发生属性变化未必能确定其第k层祖先为灰。一旦发现V不是其在第k(k < m)层祖先结点的首位置体素,便意味着该结点下体素的属性必定不一致,则该结点一定为灰,第k层为最底分解层,检查停止。如图2所示,检查发现V处属性发生变化,且V是其在第m层的父结点及其在m-1层祖先结点的首位置体素,此时其父结点及其在m-1层的祖先结点都不为灰,继续向上检查,发现V并非其在m-2层祖先节点的首体素,则该结点判定为灰,其最底分解层确定为第m-2层。(3)栈操作先弹出栈顶,获得活动结点信息,然后从顶向下输出活动结点以下各层中黑已知结点的线性八叉树编码,并压入活动结点以下各层中新的未知子结点,直到最底分解层为止,最后压入新的活动结点,完成栈更新。设活动结点为Na,Na分解所得的在第I层中的第k号结点为Na (I,k),栈更新过程如下I)弹出栈顶,得到Na信息位置码M和所在层Itl,令当前分解层I = 10+1 ;2)判断第I层否高于或等于V的最底分解层ld,如是则转3),否则转7);3)根据当前窗ロ位置码,求窗八分体在第I层的祖先结点Na(l,p);4)如果上ー窗八分体属性为黑(说明V之前的体素为黑),输出第I层中属性为黑的已知结点的线性八叉树编码顺序产生从凡(1,0)至Na(l,P-1)在子空间下的局部编码,将其与对应于子空间的灰八分体全局位置码求和并输出;5)压入在第I层中的未知结点将该层未知结点从Na(l,7)至Na(l,p+1)逆序压入栈中;6)令 I = 1+1,转 2);7)压入新活动结点在栈中压入窗八分体在最底分解层Id上的祖先结点Na(ld,P),返回。 当活动结点扫描完成后,它转成已知结点,进行出栈操作首先弹出栈顶,根据栈顶信息将对应于活动结点的线性八叉树编码输出。编码可根据窗八分体的属性生成,将窗八分体属性视为活动结点属性,若窗八分体属性为白,则一定不含黑体素,不产生编码,否则生成并输出对应于活动结点的编码。实施例I :选用某铜矿床中的一地层和一岩体,在一台主要配置为Pentiumn4 3. 06GHz (HT)CPU、512MB内存和GeForce 6600显卡的计算机上进行了实施。表I给出了上述2个对象基本情况,表2给出了本发明在不同分辨率下的运行时间。表I.测试对象
权利要求
1.本发明涉及一种地质体线性八叉树快速动态生成的步骤包括 步骤一基于深度缓存判断体素与地质体的内外关系 采用深度缓存判断体素在地质体的内外,设置与X,Y,Z轴垂直时的大小为2nX2n的三对深度缓存,将三对深度缓存分别标记为[XnX2]、[YijY2]、[Z1, Z2],其中每对中的第一项存储的最近深度值,另一项存储最远深度值,用这三对深度缓存建立等价于八叉树空间的立方体区域包围地质体,包围盒的三个对立面分别与X,Y和Z轴垂直,且对应于与其所垂直坐标轴上的那对深度缓存,设空间中有一坐标为(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))),如果返回真,则体素在地质体内,属性为黑,否则在地质体外,属性为白。
对于一个八分体O,若划分次数为I (I < n),O可视为在21 X 21 X 21空间下的“体素”,则其属性可通过类似的方法判断,建立3对深度图像[X’ pX’ 2]、[Y’ pY’ 2]、IV x, V 2],深度图像按一定规则从[X1, X2]、[Y1, Y2]、[Z1, Z2]中采样获得;设{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 分别以最小值和最大值采样规则从X’ 2,Y’ 2,Z’ 2中获得,O中心点实际坐标为(x,y,z),在Z1XZ1XSi空间下行列层坐标为(10,J0, 10,边长为a,单个体素的边长为S,则O的属性可按如下规则判断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属性为白; 步骤二 对地质体进行八分体划分 确定与地质体相关的八分体,即确定被地质体完全占据(黑),部分占据(灰)还是不含地质体(白)的八分体,只有在属性为非白的八分体中才可能产生线性八叉树编码,而属性为白的八分体则无需考虑,对每个非白八分体进行处理并确定其中体素的属性,从而生成该八分体中所包含地质体对应的线性八叉树,当处理完所有非白八分体后,整个地质体的线性八叉树将构造完成,这一过程用自底向上构造八叉树的方法来进行,首先指定对空间划分的最大次数I并将空间划分为XXZ1XZi个小八分体,用深度缓存判断各个小八分体的属性,在这些小八分体中,如果存在8个八分体属于同一个父八分体且属性都为黑,则将这8个八分体合并,从底向上一直合并上去,直到不能合并为止,从此,地质体被划分到各个属性为非白的八分体空间中,下一步确定剩下的部分,即确定不完全八叉树中非白叶结点的分解情况,从而生成地质体的线性八叉树 步骤三生成地质体线性八叉树 按先序遍历顺序处理不完全八叉树中的各非白叶结点,在遍历过程中按不同方法处理不完全八叉树中黑叶结点与灰叶结点,当遇到不完全八叉树中的每个黑结点时,可直接输出其线性八叉树编码,而对灰叶结点,则要扫描其所对应八分体,在扫描中判断其中各体素的属性,从而确定结点的分解情况。
(1)扫描灰八分体 每个灰叶结点所对应的灰八分体都可视为一个2mX2mX2m大小的子空间,采用一个2X2X2大小的窗口按Morton码的Z序扫描该子空间,下文称该窗口所扫描的2X2X2八分体为窗八分体,扫描从子空间的首位置码处开始,每到一处比较深度缓存中的深度值来检查窗口内体素的属性,再比较窗口内体素间的属性返回窗八分体的属性黑、白或灰,解码得到下个窗口坐标,一直循环扫描下去,执行又一次窗扫描,直到位置码到2mX 2mX 2m结束,在每次检查中,将分解所得的黑叶结点编码动态输出,当窗扫描发现活动结点分解时,输出其分解所得的黑已知结点编码,并存储新活动结点与未知结点以记录下八叉树分解的情况。
利用一个栈结构存储这些结点的局部位置码及在所在层,栈中的每个元素对应树的一个结点,结点按其窗扫描顺序与出栈顺序一致的原则存储在栈中,并保证栈顶存储的是活动结点,扫描过程中若发现活动结点分解,弹出栈顶,压入活动结点下的未知子结点和新的活动结点来更新树的分解情况,同时根据被弹出的旧活动结点得到新的已知结点,在栈操作中,动态输出子空间中地质体的线性八叉树编码。
(2)结点分解的确定 本发明称活动结点自上到下分解所截止的那一层为体素V的最底分解层,求V的最底分解层可通过检查V在其各层祖先结点中的位置来求得,检查从窗八分体所对应结点(第m层)开始,至此向上展开,一旦发现V不是其在第k(k<m)层祖先结点的首位置体素,该结点为灰,第k层为最底分解层,检查停止。
(3)栈操作 先弹出栈顶,获得活动结点信息,然后从顶向下输出活动结点以下各层中的黑已知结点的线性八叉树编码,并压入活动结点以下各层中新的未知子结点,直到最底分解层为止,最后压入新的活动结点,完成栈更新,设活动结点为Na,Na分解所得的在第I层中的第k号结点为Na(l,k),栈更新过程如下 1)弹出栈顶,得到Na信息位置码M和所在层Itl,令当前分解层I= 10+1 ; 2)判断第I层否高于或等于V的最底分解层ld,如是则转3),否则转7); 3)根据当前窗口位置码,求窗八分体在第I层的祖先结点Na(l,p); 4)如果上一窗八分体属性为黑(说明V之前的体素为黑),输出第I层中属性为黑的已知结点的线性八叉树编码顺序产生从Na(l,0)至凡(1,?-1)在子空间下的局部编码,将其与对应于子空间的灰八分体全局位置码求和并输出; 5)压入在第I层中的未知结点将该层未知结点从Na(l,7)至凡(1,p+1)逆序压入栈中; 6)令I = 1+1,转 2);7)压入新活动结点在栈中压入窗八分体在最底分解层Id上的祖先结点Na(ld,p),返回。
当活动结点扫描完成后,它转成已知结点,进行出栈操作,首先弹出栈顶,根据栈顶信息将对应于活动结点的线性八叉树编码输出,将窗八分体属性视为 活动结点属性,若窗八分体属性为白,则一定不含黑体素,不产生编码,否则生成并输出对应于活动结点的编码。
全文摘要
该发明提供了一种地质体面模型快速动态生成其线性八叉树的方法,利用深度缓存判断体元在实体内外,通过栈结构来存储八叉树分解的情况,对栈的操作中输出编码,省去了结点的复杂排序和压缩过程,进一步利用深度缓存的信息,对地质体进行分块并按分块实时构造线性八叉树,从而实现地质体的快速构建和可视化,能很好的对隐伏矿体预测中的地质对象进行模拟与分析。
文档编号G06T17/05GK102651144SQ201210089320
公开日2012年8月29日 申请日期2012年3月30日 优先权日2012年3月30日
发明者张立强, 张良, 邓浩 申请人:北京师范大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1