Marching Cubes
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相关推荐
- 【论文精读】Deep Marching Cubes: Learning Explicit Surface Representations
0.摘要 现有的基于学习的3D表面预测解决方案无法进行端到端训练,因为它们在中间表示(例如, TSDF)上操作,在后处理步骤(例如,通过移动立方体算法)中必须从中提取3D表面网格.在本文中,我们研究了 ...
- 移动立方体(Marching Cubes,MC)算法
移动立方体(Marching Cubes)算法是面绘制算法中的经典算法,它是W.Lorensen等人于1987年提出的体素级重建算法,也被称为"等值面提取"(Isosurface ...
- PCL库中Marching Cubes(移动立方体)算法的解析
PCL库中Marching Cubes(移动立方体)算法解析 1. Marching Cubes算法的原理这里不再赘述,不懂的话,提供一下文献资源: 链接:MARCHING CUBES A HIGH ...
- Marching Cubes算法理解
背景知识 Marching Cubes算法是三维离散数据场中提取等值面的经典算法,其主要应用于医学领域的可视化场景,例如CT扫描和MRI扫描的3D重建等. 等值面 空间中所有具有某个相同值的点的集合, ...
- Marching Cubes初探——Marching Cubes构建体素圆
Marching Cubes初探--Marching Cubes构建体素圆 标签(空格分隔): MarchingCubes OpenGL Marching Cubes根据三维规则数据生成等值面,从而构 ...
- 【算法】Marching Cubes
等值面 等值面是空间中的一张曲面,在该曲面上函数F(x,y,z)F(x,y,z)F(x,y,z)的值等于某一给定值.准确地讲,是指在某一网格空间中,假若每一结点保存着三变量函数F(x,y,z)F(x, ...
- marching cubes表面重建原理
Marching Cubes算法是三维离散数据场中提取等值面的经典算法,之前主要应用于医学图像重建,当前在TSDF等重建场景广泛应用. 参考论文:Marching Cubes: A High Reso ...
- Marching Cubes算法 - 计算机图形学
本文章描述了一种三维标量场等值面的多边形曲面的创建方法.对于这类问题的一个通常的名字叫做"marching cubes"算法.这种算法即简单又高速,因为它基本上完全在查找表(loo ...
- Marching Cubes算法
marching cube算法解析 一. 综述 二.算法原理及实现 一. 综述 定义: Marching cubes是一种计算机图形算法,用于把以网格形式表示的等值面进行三角网格化的过程.由Loren ...
- Unity Marching Cubes 原理与应用
视频链接 对于每一个立方体 using System.Collections; using System.Collections.Generic; using UnityEngine;public c ...
最新文章
- html无序列表的滚动效果,html无序列表标签和有序列表标签使用示例
- 计算机保存文档,2010年职称计算机考试:保存文档
- MPLS转发过程中涉及的相关概念—Vecloud微云
- Anaconda安装与环境配置
- 蓝桥 试题 基础练习 杨辉三角形——11行代码AC
- Lintcode--4(1)--A+B
- 灰度重采样的方法分为_DSA医疗影像增强技术特点及方法
- 文具订购(【CCF】NOI Online能力测试 入门组第一题)
- php动态添加属性,php – Yii2.动态添加属性和规则到模型
- python代码整体加密,python 代码加密
- cubemx stm32 配置两个串口_用STM32CubeMX怎么配置串口的接收中断
- TIS-prescan
- 中国科学院沈阳计算机夏令营,中国科学院沈阳计算技术研究所2018年推免夏令营通知...
- 高数——微分中值定理之拉格朗日与柯西
- HTC M7日版HTL22刷机包 毒蛇2.5.0 ART NFC Sense6.0
- 家政?保险?滴滴?外卖?通信人的转型方向,究竟在哪?
- 波束形成,通过matlab仿真不同参数的波束形成以及旁絆级
- tensorflow学习笔记(八):LSTM手写体(MNIST)识别
- Errors报错记录
- 干货 | 这可能是最详细的「阻抗匹配」介绍