您好,欢迎来到好走旅游网。
搜索
您的当前位置:首页基于分块混合八叉树编码的海量体视化研究

基于分块混合八叉树编码的海量体视化研究

来源:好走旅游网
维普资讯 http://www.cqvip.com 第33卷 第14期 计算机工程 2007年7月 Vo1.33 No.J Computer Engineering July 2007 ・软件技术与数据库・ 文章编号:100o-_3428(2007)14__0033—03 文献标识码:A 中圈分类号:TP311 基于分块混合八叉树编码的海量体视化研究 张传明,潘慈,徐绘宏 (北京大学地球与空间科学学院,北京100871) 摘要:在介绍当前体数据的数据模型与绘制方法的基础上,使用混合八叉树进行体数据的描述,实现了对其自适应分块存储。并用体元 投射和三维纹理映射方法分别实现了混合八叉树的体绘制与多分辨率绘制。实验结果表明,该文的算法较好地实现了基于混合八叉树结构 的海量体数据的组织、存储和绘制。 关健词:混合八叉树;分块;三维纹理映射;体元投射 Hybrid Blocking Octree—based Mass Volume Rendering ZHANG Chuanming,PAN Mao,XU Huihong (School of Earth and Space Sciences,Peking University,Beijing 100871) [Abstract]Based on the introduction of common data models and rendering algorithms for volume data,this paper proposes a hybrid octree encoding to describe it.Self-adaptive blocking method is applied to store and manage mass volume data.Volume rendering and mulit—resolution rendering for hybrid octree via cell projection and 3D—texture mapping are implemented.Experimental results show that the algorithms effectively solve storage,management nad rendering for hybrid octree based mass volume data. [Key words]hybrid octree;blocking;3d—texture mapping;cell projection 随着体数据在各领域的广泛应用,人们对其可视化方法 存储调入。以往对于分块并没有过多的研究,而仅仅采用简 的研究日益深入。同时由于数据量激增,海量体数据的组织 单8“划分的方法,如图1中方案A所示。 方式也成为一个关键问题。最简单的体数据结构是三维规则 格网,但规则格网内不仅可能有“空数据区”,还可能存在大 量邻近且属性一致的体元,形成数据冗余。八叉树结构很好 区域含 地解决了这个问题,它采用“渐进描述”的思想,当体数据 四面体 复杂度不大时,可以极大地节省存储量【l J。然而,经典八叉 树结构描述的三维物体在边界处可能存在锯齿现象。因此, 本文使用分块的混合八叉树以改进经典的八叉树结构。 体数据可视化的目的是将物体内部的细节表现到屏幕 上,形成体最终图像,这种模式使得观察者可以把握整个三 lieI ile3 …・ File8 ilel ile3 …‘ File8 …‘‘ Filel 5 维数据场分布整体特征。体绘制从实现方法上可以分为软件 (a)方案A (b)方案B 法和硬件法两种 J,软件方法主要以光线跟踪法、体元投射 图1两种分块方案 法为代表,这类算法效果最好但速度较慢。硬件方法以三维 当应用经典八叉树时,能在理论上计算某层八叉树所有 纹理映射为代表,速度快且绘制效果好。 节点数据量的上限,故方案A能有效分配内存。但混合八叉 本文讨论了基于混合八叉树结构的体数据分块编码算 树的某些区域可能因含有大量四面体而导致方案A的某些分 法,用体元投射和三维纹理分别实现了体数据的可视化,通 块超出预定大小,而若再做一次细分,则又会造成某些简单 过“节点综合”技术实现了多分辨率的体绘制。 分块不必要的八分。如果能根据数据量的大小创建出图1中 1 自适应分块混合八叉树编码 方案B的分块结构,则能有效减少分块的个数,进而提高绘 1.1混合八叉树数据结构 制的效率。但随之而来的困难是无法通过在内存中创建出整 为解决规则八叉树在边界处的锯齿问题,李清泉等人提 棵八叉树来进行“全局规划”,下文便针对此问题讨论在仅有 出了混合八叉树 J,它的主体结构仍然是八叉树,但当节点 矢量外壳时直接创建分块混合八叉树的方法。 位于物体边界且外形不是规则立方体时,则改用若干四面体 1.3索引八叉树结构 描述物体在该体元处的真实外形。本文亦采用该结构,混合 本文对分块八叉树用索引八叉树加以组织。索引八叉树 八叉树的节点结构如下: 对应着全树去除所有子文件所对应的细节节点而剩下的主体 部分,使用它不仅能够方便地组织各个分块,还能在海量绘 作者简介:张传明(1982一),男,博士研究生,主研方向:三维地理 1.2常规分块与自适应分块 信息系统;潘懋,教授、博士生导师;徐绘宏,博士研究生 对于海量数据,不可能同时将其调入内存,因此需分块 收稿日期:2006—08—25 E-mail:chuanming_zhang@pku.org.ca 33— 维普资讯 http://www.cqvip.com 制时快速地根据光线方向确定分块的绘制顺序,并且索引树 本身也构成了一个粗略的体数据。 索引八叉树的所有叶节点都必须唯一对应一个子八叉 当调用Process(Root)完成后,一系列子树就被存储,而 内存中未被删除的八叉树便是索引八叉树。 2海量体视化的实现 树,这是由体绘制的性质决定的,具体来说需满足如下2点: (1)索引八叉树的所有叶节点都必须对应子块,但索引八叉树本 身不应参与绘制,否则绘制结果可能错误。如图2中的叶节点111、n 不属于任何子块,但它们对应的体数据仍须参与绘制,因此只能绘 制索引八叉树。若光线的方向决定了绘制必须按照顺序(a,b,m,c, d,e,n,f)进行,则m,n必须分开绘制,这和三维纹理映射的特性是相 矛盾的(索引八叉树必须被整体地转化为三维格网并且一次性绘制 完毕)。 (2)索引八叉树的每个叶节点只能对应一个子块,即子块之间不 允许有嵌套关系。图2说明了违反该准则可能导致的问题,子块8 的第6节点因包含细节过多,被子块9来描述,形成嵌套关系。根 据绘制的顺序,应当在块8绘制到第6节点处“转而”绘制块9, 完成后再进行块8其余部分的绘制。但事实上,由于三维纹理的整 体性,因此这2个子块是无法实现交叉绘制的。 a b m C d e n f Filel Fil…fe3…File6  圈2两种错误的分块方法 1.4生成分块iI茜合八叉树 该算法使用的节点数据结构在1.1节中的Node结构上添 加了一个辅助布尔量stopsave(初始为false)以及一个整型变 量TotalSize,存储了节点的累计大小(该节点和所有子节点的 大小之和,含四面体大小)。下面给出递归函数Process的 伪码: Process(Node){ if(Node深度不够){ 分出子节点并在内存中与当前节点建立指针关联; if(子节点属性一致) 直接删除子节点 else{ Process(chd[0]); Process(chd[1】); rPocess(chd[7】); } } else{ if(节点自身stopsave==false)f if(父节点stopsave为true) 存储当前节点对应的子树并将子树从八叉树中去除 else if(节点TotalSize过大){ 将节点的8 个子节点对应子树各存储为一个文件 在内存中删除8个子节点对应的所有子树 将节点及所有父、祖节点的stopsave都设置为true ) else 父节点的累计大小+=当前节点累计大小 )else 检查8个孩子节点,将未存储的存储并在内存中删除 )) 34一 2.1确定绘触的分块晨序 当光线以某一角度射入分块后的体数据时,必然会有某 些分块先被绘制,而某些后被绘制,以往的研究者归纳出了 8种最基本的情况 J,在图3中列出了这些情况(从后向前)。 光线方向 绘制顺序 x<O,y<O,z<O 7 6.5 3 4 2.1.O x<O.y<O.z>=O 6.7.4 2.5 3 O 1 y x<O,y>=O,z<O 5-4.7.1.6 O 3.2 x<《)’y)=0,z>=0 4.5.6.O-7.1.2 3 x>=O.y<O.z<O 3.2.1.7.O.6.5 4 x>:O ,z>=O 2.3.O 6.1.7.4.5 x>=O,y>=0,z<O 1 O 3 5.2 4 7.6 x>--O,y>=O,z>=O O 1 2 4.3.5 6.7 圈3给定光线的节点绘翻晨序 当未在第1层生成子文件块时,需要递归地确定绘制顺 序,此时应按图3的顺序遍历整个索引八叉树。在绘制时, 按队列顺序执行“读入子树一绘制一保留绘制结果一删除子 树一读入下一子树……”,即可完成海量体数据的绘制。 2.2基于体元投射的绘倒 2.2.1体元投射概述 体元投射是一种精度较高的软件实现算法,它的核心思 想是分别绘制每个体元,并按从后往前的顺序叠加各个体元 的绘制结果,最终形成屏幕图像 J。由于屏幕分辨率远细于 体元大小,因此采用体元投射能够避免不规则边界处的走样 现象。在对八叉树进行体元投射绘制时,应先将所有节点根 据光线方向顺序绘制,具体排序方法见2.1节。 2.2.2绘制四面体 Jane[61指出,穿过某厚度体元后的光线不透明度值为O 。 =l—e~,其中m为各处对光线的“阻碍度”在厚度上的积分。 因四面体内属性均一,所以m与厚度成正比,这样问题便转 化为求得各条光线穿过四面体的厚度。而在所有的光线中, 必然存在一条入射厚度最大的光线,后文称作“最佳光线”。 当最佳光线及其入射厚度获得后,其余光线的厚度均可以通 过插值得到。绘制过程分为如下2步: (1)确定最佳光线。4个顶点在像平面上的投影组成的凸 壳为四边形或三角形(见图4)。当凸壳为四边形,光线穿过对 角线交点时便有最大厚度;当凸壳为三角形时,必然有一个 顶点在三角形内部或是在三角形边上,只要入射光穿过此点, 则会有最大厚度。 △ 图4四面体投影的4种情况 (2)完成厚度计算。获得最佳光线并计算出最大厚度后, 可以据此将四面体在象平面上的投影分割为若干三角形。这 些三角形顶点中,除了最佳光线穿过的顶点有最大厚度之外, 其余顶点厚度均为0。对每个三角形内的各点根据3个顶点 的厚度进行插值即可完成体元厚度计算过程。 2.2.3绘制立方体 一个直观的绘制立方体的思路是将立方体分解为若干个 维普资讯 http://www.cqvip.com 四面体进行绘制,但此法效率极低。考虑到组成物体的所有 子节点均值并不一定正确。图6中,g节点拥有与兄弟节点 立方体存在某些“共性”,Jane提出了基于模板的立方体元投 迥异的属性,当该异常为噪音时,应当在节点综合中滤去; 射法 ,利用模板只需进行一次计算,便可通过在像平面上 若是体数据的重要特征点,应在父节点中完全保留。 的二维平移来绘制所有等大的规则节点。 模板体元的绘制也分为确定最佳光线和计算入射厚度两 步,实现思路和四面体类似,并已在文献[6】中有了详细的阐 述,此处不再展开。 2.3基于三维纹理的绘倒 2.3.1三维纹理概述 三维纹理是随着图形硬件技术发展而提出的一种高性能 图6 3种不同的节点综合方法 体绘制算法,最早由Cullip 提出,其思想仍然是“采样一合 为解决该问题,本文提出如下的“节点综合”算法: 成”。以图像空间法为例,用户通过若干个与Z方向垂直的平 (1)计算prop =(propl+prop2+…+props)/8;(2)选出属性距 面去切割属性为颜色值的纹理块获得若干切面,最后合成这 prop 最大的k个元素(】<k<8),k称为“综合系数”;(3)取 些切面得到图像。三维纹理的绘制效果主要由纹理的分辨率 上述k个元素属性的均值,作为父节点的属性。 和切片的次数决定,因此在多分辨率绘制模式下往往用较少 不难看出,k的值越小,越倾向于认为异常值节点是“真 的切片和较小的纹理块来实现低分辨率的绘制【3】。 实异常”;而当k增大,则说明异常值属噪音的概率增大;当 但在当纹理块较小时,三维纹理往往无法精确绘制边界 k取8时,父节点即为8个子节点的均值。可以在计算时通 体元。因此一种扬长避短的设想是在对某八叉树的规则叶节 过调整k的值,获得不同的效果。 点使用三维纹理映射的同时,使用体元投射绘制边界四面体。 3实验结果 而事实上,这个思路并不可行。例如图5中某光线穿过混合 笔者在单机上进行了下列对比实验。实验环境为AMD 八叉树的6个节点,应按照6—5—4・3—2・1顺序合成这些体元的 Athlon 2400+,512MB的RAM,NVIDIA6800+显卡。 绘制结果,但规则体元3、1已作为一个整体进行绘制,在其 (1)分块方案对比测试。从矢量外壳分别进行规则细分和 中是无法插入不规则体元2的。 自适应细分生成混合八叉树后,均完全从磁盘分块读入并用 三维纹理进行硬件绘制。对比结果如下 、、、 、、 5 、 3 、、 、 、(2)四面体加入三维纹理效果测试。分别绘制了将四面体 、 ▲ 加入三维纹理网格和半透明化后再加入的结果,见图7中A、 图5同时进行三堆纹理和体元投射绘倒 B。可见半透明化四面体增强了三维纹理绘制的真实感。 综上所述,采用三维纹理映射时应将不规则体元也一并 (3)多分辨率绘制实验。分别用减少切片数和“节点综 纳入纹理内存进行绘制。 合”算法进行了粗略绘制(k=1),见图7中C、D。可见本文 2.3.2由混合八叉树构建三维纹理块 的算法能通过调整“综合系数”有效地保留特征点。 三维纹理块实际上相当于一个三维数组,每个元素对应 于真实物体的某一区域。而由上节所述可知,若将边界体元 直接映射到纹理块,将产生与规则八叉树类似的边缘锯齿问 题。借鉴图形学中对二维直线的反走样算法,本文通过根据 不规则体元的体积占规则相应体元体积的比例来削弱该体元 的不透明度,达到简单的反走样效果。削弱后的不透明度可 用如下公式计算: Alpha e =Alpha×(Vt tI+Vt t2+...+Vt“n)/Vcube 2.3.3切片与合成 构建三维纹理块后,需要用若干平面切割纹理块。在实 现中,OpenGL对三维纹理提供了方便的接口,只要提供三 维纹理数组和一系列切面多边形的纹理坐标,OpenGL就能 图7测试绘倒结果 借助硬件完成切面颜色值的插值与合成。 4结论 2.3.4多分辨率的实现 本文引入的混合八叉树结构既保留了八叉树方便访问、 多分辨率在很多场合是必需的,实现的难点是对某些区 减少冗余的优点,又精确地描述了体数据的外壳。然而由于 域使用较少的时间绘制尽可能真实的图像。Imma提出了一种 内存和纹理内存的限制,因此海量体数据必须在磁盘上分块 减少切片次数,并用插值算法调整每个切面的颜色值后再加 存储读取,本文可以在未知剖分后四面体数量的情况下实现 以合成的策略I 。本文则用较浅的八叉树节点填充入较小的 对体数据外壳直接自适应地生成分块数据,保证了每个分块 纹理块,自然减少了切片的次数,有效节约了绘制时间。 的大小限制在阈值内。本文将生成的分块数据用索引八叉树 在图6中,为了用节点K表示子节点a.h的总体情况, 组织,并保证索引八叉树的所有叶节点均对应且仅对应一个 需要先计算出K的属性值,即实现子节点的综合,而简单取 文件分块。 (下转第78页) 3S一 维普资讯 http://www.cqvip.com 2.4测试树生成 构造测试树算法描述如下: unprocessed={x1Ix1∈s1)×{x21x2∈s2}... processing= ̄ processed= ̄ processing={newNode(Z0)} repeat select one node Z Eprocessing for eachtransitiont ETatZ{ iftis enabled atZ{ y=resultState(Z,t) if(y诺processeduprocessing){ newNode(y) processing=processing u{Y) remove Y from unprocessed}) else{ y=abnormal append(Z,Y,t))) remove Z rom processifng prOcessed=prOcessed U Z until processing= ̄ D ̄Deposit ~Withdraw 测试用例是调用序列和数据的组合。测试人员需根据测 试要求选择测试用例生成准则,即:(1)从测试树的根结点到 DX(I) ̄D(13),D(14),D(I5),D(16),D(I7) WX(1卜 I4), I5), I6), I7) 叶子结点至少测试1次。(2)每个状态至少被测试1次。 (3)每个迁移至少被测试1次。 圈3属性balance的测试树 3结论 如果构件的状态对应为事物的整体抽象描述,则需从高 层次上构造状态图或状态迁移图,且测试人员在设计测试用 属性balance不与其他属性存在关联关系,可作为独立的 属性关联关系构造测试树。假设A取值为200,Balance的理 想状态空间为(【O,O],(O,1 ooo),[1 000,1 000],(1 000,1 200), [1 200,1 200],(1 200,2 ooo),[2 000,2 000]】,分别命名为 例时,必须考虑行为之间上下文依赖和内容的依赖关系。 参考文献 1 Jerry G Monitoring Software Component and Component—based {s1,s2,s3,s4,s5 J。状态迁移集见表2。构造好测试树后,根 据测试覆盖准则产生测试用例。根据测试用例生成准则I生 成测试用例见表3。 表3部分测试用倒 Software[C]//Proc.of the 24 Annual International Computer Software&Applications Conference.2000—08. 2 Beydeda S.Gruhn V Testing Component—based Systems Using FSMs[M].Springer-Verlag.2004:363—379. 3 Sohn H W Kung D C,Hsia E State—based Reproducible Test— ing for CORBA Applications[C】//Proc.of IEEE International Symposium on Software Engineering for Parallel and Distibuted r构造的测试树如图3所示。 Systems.1999. (上接第35页) 在体元投射算法中,组成体数据的所有体元最终被转化 为四面体和立方体分别绘制。在应用三维纹理映射时,本文 提出了将四面体纳入三维纹理的反走样算法以及用自由度较 4李德仁,李清泉.一种三维GIS混合数据结构研究[JJ.测绘学报, 1997,26(2):128—133. 5 Srinivasan R,Fang Shiaofen,Huang Su.Volume Rendering by 大的“节点综合”法实现多分辨率,测试结果证明,本文提 出的算法在应用中获得到了很好的效果。 Template—based Octree Projection[C]//Proc.of the 3 murographics Workshop on Visualization in Scientiic Computifng.1 997.4: l55—163. 参考文献 1 Samet H,Webber R E.Hierarchical Data Structures and Algorithms 6 Wi ̄elms J.Van Gelder A.A Coherent Projection Approach for Direct Volume Rendering[C]//Proceedings of he l t8 Annual Conference on Computer Graphics nd aInteractive Techniques.1991.7:275—284. 7 Cullip T J.Neumann U.Accelerating Volume Reconstruction wih 3D tor fComputer Graphics[J].IEEE Computer Graph,1988,8(4):59—75. 2唐泽圣.三维数据场可视化[M】.北京:清华大学出版社,1999. 3 Boada I,Navazo I,Scopigno R.Multi—resolution Volume Visualization with a Texture—based Octree[J].The Visual Computer,2001,l7(3): 185—197. Texture Mapping Hardware[R].University of North Carolina, Technical Report:TR93—027,1993. —-78~ 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- haog.cn 版权所有 赣ICP备2024042798号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务