三维目标表示方法之八叉树1

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
根节点对应整个物体空间。如 果它完全被物体占据,将该节点标记为 F(Full),算法结束;如果它内部没有物体 ,将该节点标记为E(Empty),算法结束; 如果它被物体部分占据,将该节点标记为 P(Partial),并将它分割成8个子立方体, 对每一个子立方体进行同样的处理。
三维目标表示方法之八元树
长沙理工大学汽车与机械工程学院 袁金海
本次所讲主要内容
一、八元树三维表示法的基本介绍 二、改进的八元树三维目标表示方法
一、八元树三维表示法的基本介绍
八元树(Octree)表示法作为一种简洁、紧凑 、直观的基于体积的表示法,近年来被广泛地应 用到计算机视觉的研究领域。成熟的树的遍历算 法更为物体八元树表示法的许多操作提供了便利 的条件。其本身所具有的层次化数据结构、空间 易达性以及对存储数据的预分类性等特点又极大 地简化了该表示法的实际运用,例如处理遮挡表 面、消影、连接区域、近邻搜索等操作。此外, 由
于八元树编码表示与空间位置能够实现一一对应, 因而便于图像理解时判别边、角、面的相邻位置关 系。
1.1八元树表示法的基本介绍 八元树表示法的基本介绍
八元树(Octrees)表示法是将实体所在空间进行 递归划分,分割成由立方体组成的网格。于是,一 个实体可以由它所占用的立方体序列来表示。当分 割后的立方体越来越小时,就逐步接近用空间点的 集合来表示实体了。分层树结构,称作八元树。构 造树形结构,要求每个节点与三维区域相符。这种 实体表示利用了空间相关性以减少三维物体的存储 需要,它也提供了存储有关物体内部信息的便利表 示。
为了克服以上的两个缺点,我们设计改进的八元 树节点形式,用C语言描述如下: struct Octree { unsigned char StatuS; struct Octree *father; struct Octree *chiid; struct Octree *r_brOther; struct Octree *i_brOther; };
2.1 一般的八元树表示方法 树结构在计算机中一般采用指针的形式。因为 八元树的每个节点最多有八个孩子节点,所以通 常人们采用结构体数组指针的形式来表示。C语 言描述的节点形式如下: struct Octree {unsigned char Status;Struct octree *child[8];};
号来访问的,而改进 的八元树结构是通过 移动指针来访问的。 因为指针移动操作不 是主要的,所以改进 的八元树并没有增加 时间开支。改进的八 元树能弥补原先结构 的缺点,给访问空间 节点带来极大的便利 ,节点之间的联系更 加紧密,且节省了大 量存储空间。
(5)在对实体进行显示时,易于实现消隐。 在对实体进行显示时,易于实现消隐。 八元树表示法的不足: (1)在分辨率较高时,所需的存储容量较大。 (2)难于实现某些几何变换,如旋转和任意比例系 数的比例变换等。 (3)只能近似地表示空间实体,难于转换为表达更 精确的边界表示。
二、改进的八元树三维目标表示方法
4 4 1
7 3 7 3 3 6 2 2
具有子孙的节点 空节点(E) 空节点 (P) 实节点(F) 实节点
1.3八元树的优缺点
用八元树结构表示空间实体具有许多优越性: (1)可以用统一而且简单的形体来表示空间任意 形状的实体。 (2)易于实现实体之间的集合运算,如交、并和 差等运算。 (3)易于检查实体之间是否接触。 (4)易于计算实体的统计量,如体积、质量和重 量等。
用上述的节点形式所表示的八元树如图所示。 图中的箭头表示指针的访问方向。在这种数据结 构中每个节点使用四个指针分别指向该节点的父 亲节点,孩子节点,左兄弟节点,右兄弟节点, 因此可以通过上,下,左,右四个指针直接访问 到该节点的父节点,孩子节点,左兄弟节点,右 兄弟节点。 与原先的八元树数据结构比较,这种新的数据 结构与原先的八元树在结构上是等价的,仍然可 以正确地表示三维目标。原先的八元树结构是通 过指针数组序
用上述的节点形式 所表示的八元树如图 所示,图中的箭头表示 直接通过指针的访问 方向,换句话说,只有箭 头的指向才是八元树 可能访问的路径。
2.2 改进的八元树表示方法 一般的八元树表示方法存在以下两个显而易见 的缺点 一是节点的直接访问形式只能是自上而下 。孩子节点不能够直接去访问其父亲节点,并且 孩子节点之间也不能直接相互访问,这让八元树 三维处理的一些后序操作无法实现,如判定八元 树相邻节点之间的关系,对应空间节点的合并等 ;二是由于每个父亲节点存储了八个孩子节点的 指针,占用比较多的内存。当用数以万计的节点 表示三维物体时,所占用的内存空间十分巨大。
8
八元树的表示应用三维形体 的分解,它对一个外接立方体 的形体进行前后、左右、上下 等部分8个小立方体,如果小 立方体单元为满或为空,表示 该立方体完全在形体中或完全 不在形体中,则其停止分解; 对部分形体占有的小立方体需 进一步分解为8个子立方体, 直至所有小立方体单元要么全 部满,要么全部空,或已分解 到规定的分解精度为止。
三维空间的八元树编码过程是二维空间中编 码方法,称为四元树(guadtree)编码的扩展。 四元树由将连续的二维区域分成四等分而成。四 叉树上的每个节点有四个数据元素,每个象限都 在此区域内。八元树编码方法将三维空间区域( 一般是立方体)分成卦限(octant)且在树上的 每个节点处存储8个数据元素。三维元素的每个元 素称为体素,或体元。当卦限中所有体元的类型 相同时,这类型值存入相应的节点数据元素中。 空间的空区域表示体元型“void”。非均质卦限 再分成卦限,节点相应的数据元素指向树中下一 个节点。
相关文档
最新文档