1.等值面的定义及其三角面片近似

等值面是空间中的一张曲面,在该曲面上函数F(x,y,z)的值等于某一给定值。准确地讲,是指在某一网格空间中,假若每一结点保存着三变量函数F(x,y,z),而且网格单元在x,y,z方向上的连续采样值为F(x,y,z),则对于某一给定值Fi,等值面是由所有满足

S={(x,y,z) | F(x,y,z)=Fi}

的点组成的一张曲面。

按照此严格定义下得到的等值面表达式如下:

F(x,y,z)=a0+a1x+a2y+a3Z+a4xy+a5yz+a6xz+a7xyz

可以看出等值面是三次代数曲面,提取过程复杂而且不利于显示。为了简化等值面的提取,W.ELorenson和H.E.CIine在1987年提取了一种等值面的简化提取方法,该方法首先找到等值面经过的六面体网格,求出该六面体与等值面的交点,将这些交点按照一定的拓扑连接关系连接起来,作为等值面在该六面体网格中的近似表示。如图所示,为了叙述的方便以及程序的编写,对所有六面体的顶点采用如下的编码规定:

假设某一个六面体中顶点3的值比要提取的等值面值小,而其他的7个顶点比等值面值大,则显然等值面一定经过该六面体,而且该六面体内的等值面可以采用如图(4.1.1.2)所示的三角面片进行近似。
 该方法虽然在处理时是针对数据场中的某一个六面体单元,似乎等值面的构造是相互独立的。但是处理完所有的六面体单元后,这些等值面之间确是统一,相互关联和连续的。由于它是以六面体为单位,一个接一个的处理,因此被称为MarehingCubes方法。

2.六面体单元网格与等值面的位置关系

MarhcingCubeS方法是采用三角面片来近似六面体内的实际等值面,假设我们得到了一个六面体与等值面的所有交点,这些交点之间该进行怎么样的拓扑连接呢?怎么样的拓扑连接才会保证不同六面体之间拓扑连接的一致性呢?为此,我们将根据六面体8个顶点的值与等值面的位置关系,制定不同的拓扑连接关系。

就一个六面体而言,假设某一个顶点的值大于(或者等于)给定的等值面值C,我们就将该点标记位置1,表示该顶点位于等值面之内(或者之上)。而如果某一个顶点的值小于给定的等值面值C,我们就将该点标记位置0,表示该顶点位于等值面之外。如果六面体中某一条边的一个顶点在等值面之内,另一个顶点在等值面之外,那么该边一定与等值面相交。根据这一方法,就可以确定等值面是否与当前处理的六面体相交。

每一个六面体有8个顶点,而每一个顶点都有0和l两种可能的状态,所以每一个六面体单元根据8个顶点0和1的分布,共有2/=256种不同的状态。如果去定义256种可能的拓扑连接,是十分繁琐的,而且容易出现错误。为此,我们利用两种不同的对称性去简化这256种可能的状态。

第一种对称性是利用等值面与8个交点的相对位置关系,如果将等值面的值和8个顶点的物理值的大小关系颠倒过来,六面体内等值面与六面体8个顶点的拓扑关系不会发生改变。也就是说,如果将一个六面体中其物理值大于给定值C的顶点和小于给定值C的顶点所标记的0,1值互换,生成的等值面是相同的(如图(4.1.1.3)。图(a)中顶点3的值大于等值面的值,而其他的7个顶点的值都小于等值面的值,图b()中顶点3的值小于等值面的值,而其他的7个顶点的值都小于等值面的值,在六面体内等值面连接都是一样的,所以可以归纳为一起。

第二种对称性是利用六面体8个顶点的旋转对称性,进一步对可能的状态进行组合"如图(4.1.1.4)所示,在这两种六面体内三角面的拓扑连接相对与图中的黑点来说,是一样的,因此,我们将它们组合成一类。经过上述两种对称性处理之后,我们得到了如图(4.1.1.5)所示的15种类型

Marching Cubes相关推荐

  1. 【论文精读】Deep Marching Cubes: Learning Explicit Surface Representations

    0.摘要 现有的基于学习的3D表面预测解决方案无法进行端到端训练,因为它们在中间表示(例如, TSDF)上操作,在后处理步骤(例如,通过移动立方体算法)中必须从中提取3D表面网格.在本文中,我们研究了 ...

  2. 移动立方体(Marching Cubes,MC)算法

    移动立方体(Marching Cubes)算法是面绘制算法中的经典算法,它是W.Lorensen等人于1987年提出的体素级重建算法,也被称为"等值面提取"(Isosurface ...

  3. PCL库中Marching Cubes(移动立方体)算法的解析

    PCL库中Marching Cubes(移动立方体)算法解析 1. Marching Cubes算法的原理这里不再赘述,不懂的话,提供一下文献资源: 链接:MARCHING CUBES A HIGH ...

  4. Marching Cubes算法理解

    背景知识 Marching Cubes算法是三维离散数据场中提取等值面的经典算法,其主要应用于医学领域的可视化场景,例如CT扫描和MRI扫描的3D重建等. 等值面 空间中所有具有某个相同值的点的集合, ...

  5. Marching Cubes初探——Marching Cubes构建体素圆

    Marching Cubes初探--Marching Cubes构建体素圆 标签(空格分隔): MarchingCubes OpenGL Marching Cubes根据三维规则数据生成等值面,从而构 ...

  6. 【算法】Marching Cubes

    等值面 等值面是空间中的一张曲面,在该曲面上函数F(x,y,z)F(x,y,z)F(x,y,z)的值等于某一给定值.准确地讲,是指在某一网格空间中,假若每一结点保存着三变量函数F(x,y,z)F(x, ...

  7. marching cubes表面重建原理

    Marching Cubes算法是三维离散数据场中提取等值面的经典算法,之前主要应用于医学图像重建,当前在TSDF等重建场景广泛应用. 参考论文:Marching Cubes: A High Reso ...

  8. Marching Cubes算法 - 计算机图形学

    本文章描述了一种三维标量场等值面的多边形曲面的创建方法.对于这类问题的一个通常的名字叫做"marching cubes"算法.这种算法即简单又高速,因为它基本上完全在查找表(loo ...

  9. Marching Cubes算法

    marching cube算法解析 一. 综述 二.算法原理及实现 一. 综述 定义: Marching cubes是一种计算机图形算法,用于把以网格形式表示的等值面进行三角网格化的过程.由Loren ...

  10. Unity Marching Cubes 原理与应用

    视频链接 对于每一个立方体 using System.Collections; using System.Collections.Generic; using UnityEngine;public c ...

最新文章

  1. html无序列表的滚动效果,html无序列表标签和有序列表标签使用示例
  2. 计算机保存文档,2010年职称计算机考试:保存文档
  3. MPLS转发过程中涉及的相关概念—Vecloud微云
  4. Anaconda安装与环境配置
  5. 蓝桥 试题 基础练习 杨辉三角形——11行代码AC
  6. Lintcode--4(1)--A+B
  7. 灰度重采样的方法分为_DSA医疗影像增强技术特点及方法
  8. 文具订购(【CCF】NOI Online能力测试 入门组第一题)
  9. php动态添加属性,php – Yii2.动态添加属性和规则到模型
  10. python代码整体加密,python 代码加密
  11. cubemx stm32 配置两个串口_用STM32CubeMX怎么配置串口的接收中断
  12. TIS-prescan
  13. 中国科学院沈阳计算机夏令营,中国科学院沈阳计算技术研究所2018年推免夏令营通知...
  14. 高数——微分中值定理之拉格朗日与柯西
  15. HTC M7日版HTL22刷机包 毒蛇2.5.0 ART NFC Sense6.0
  16. 家政?保险?滴滴?外卖?通信人的转型方向,究竟在哪?
  17. 波束形成,通过matlab仿真不同参数的波束形成以及旁絆级
  18. tensorflow学习笔记(八):LSTM手写体(MNIST)识别
  19. Errors报错记录
  20. 干货 | 这可能是最详细的「阻抗匹配」介绍

热门文章

  1. 音乐人高嘉丰在 Opensea 发布音乐 NFT
  2. 2018/12/26
  3. Java集合框架之三:HashMap源码解析
  4. Vmware Ubuntu 开机蓝屏
  5. 通过第三方工具体验Microsoft Graph
  6. LPC1758串口ISP下载程序
  7. [转载] Dreamweaver——02 创建网页的基本对象
  8. 9.29 csp-s模拟测试55 联+赛+题
  9. C语言基础篇(零)gcc编译和预处理
  10. day9——函数初识