【算法】Marching Cubes
等值面
等值面是空间中的一张曲面,在该曲面上函数F(x,y,z)F(x,y,z)F(x,y,z)的值等于某一给定值。准确地讲,是指在某一网格空间中,假若每一结点保存着三变量函数F(x,y,z)F(x,y,z)F(x,y,z),而且网格单元在x,y,zx,y,zx,y,z方向上的连续采样值为F(x,y,z)F(x,y,z)F(x,y,z),则对于某一给定值FiF_{i}Fi,等值面是由所有满足 S={(x,y,z)∣F(x,y,z)=Fi}S =\left \{ (x,y,z)|F(x,y,z) = F_{i}\right \} S={(x,y,z)∣F(x,y,z)=Fi}的曲线。
按照此严格定义下得到的等值面表达式如下:
F(x,y,z)=a0+a1x+a2y+a3za4xy+a5yz+a6xz+a7xyzF(x,y,z)=a_{0}+a_{1}x+a_{2}y+a_{3}za_{4}xy+a_{5}yz+a_{6}xz+a_{7}xyzF(x,y,z)=a0+a1x+a2y+a3za4xy+a5yz+a6xz+a7xyz
可以看出等值面是三次代数曲面,提取过程复杂而且不利于显示。为了简化等值面的提取,W.ELorenson和H.E.CIine在1987年提取了一种等值面的简化提取方法,该方法首先找到等值面经过的六面体网格,求出该六面体与等值面的交点,将这些交点按照一定的拓扑连接关系连接起来,作为等值面在该六面体网格中的近似表示。
1. 找到等值面经过的六面体网格
前面我们提到过,我们有很多的已知采样点,并且知道这些点在空间中的空间场值,现在我们将空间分为很多个小格子,每个小格子都有8个顶点,我们通过计算8个顶点周围(范围与六面体的大小相关)的采样点,近似计算出8个顶点的空间场值(加权评价等方法)。我们就可以对六面体做以下分类,我们分析一下以下情况:
八个顶点都没有空间场值,0等值面不经过或者经过但是没有采样,我们没有办法进行近似,所以不处理。
八个顶点都有或部分有空间场值,当空间场值都是正值或者都是负值时,说明0等值面,不在六面体内。
当六面体内的的顶点的空间场值有正有负时,则说明有0等直面穿过六面体。我们需要从众多六面体内,筛选出这样的六面体。
2. 求六面体边与0等值面的交点
因为六面体有8个顶点,8个顶点的状态就有28=2562^8 = 25628=256中分布状态,但是由于六面体是有对称性的,我们通过对称性,可以简化这些状态至15种状态。我们看一下15中状态:
Marching Cubes
(1)将原始数据经过预处理之后,读入特定的数组中;
(2)从网格数据体中提取一个单元体,成为当前单元体"同时获取该单元体的所有信息,例如8个顶点的值,坐标位置等;
(3)将当前单元体8个顶点的函数值与给定等值面值C进行比较,得到该单元体的状态表;
(4)根据当前单元体的状态表索引,找出与等值面相交的单元体棱边,并采用线性插值的方法,计算出各个交点的位置坐标;
(5)利用中心差分法,求出当前单元体8个顶点的法向量,在采用线性插值的方法,得到三角面片各个顶点的法向
(6)根据各个三角面片顶点的坐标,顶点法向量进行等值面图象的绘制.
【算法】Marching Cubes相关推荐
- 移动立方体(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"算法.这种算法即简单又高速,因为它基本上完全在查找表(loo ...
- Marching Cubes算法
marching cube算法解析 一. 综述 二.算法原理及实现 一. 综述 定义: Marching cubes是一种计算机图形算法,用于把以网格形式表示的等值面进行三角网格化的过程.由Loren ...
- 【论文精读】Deep Marching Cubes: Learning Explicit Surface Representations
0.摘要 现有的基于学习的3D表面预测解决方案无法进行端到端训练,因为它们在中间表示(例如, TSDF)上操作,在后处理步骤(例如,通过移动立方体算法)中必须从中提取3D表面网格.在本文中,我们研究了 ...
- marching cubes表面重建原理
Marching Cubes算法是三维离散数据场中提取等值面的经典算法,之前主要应用于医学图像重建,当前在TSDF等重建场景广泛应用. 参考论文:Marching Cubes: A High Reso ...
- Marching Cubes初探——Marching Cubes构建体素圆
Marching Cubes初探--Marching Cubes构建体素圆 标签(空格分隔): MarchingCubes OpenGL Marching Cubes根据三维规则数据生成等值面,从而构 ...
- Unity Marching Cubes 原理与应用
视频链接 对于每一个立方体 using System.Collections; using System.Collections.Generic; using UnityEngine;public c ...
最新文章
- c语言实现定长顺序存储,c语言:定长顺序串的基本操作实实现
- 第十六届智能车竞赛室内视觉AI组别靶标使用说明
- 利用HAProxy实现零停机更新维护
- IromPython .Net 的简介和第一个例子
- python实现第一个web_我的第一个python web开发框架(6)——第一个Hello World
- 灵感编程:最大公约数算法解析
- PHP应对洪水般的恶意访问接口 访问冲击
- 字典-变量的定义以及应用场景
- Gson读写JSON 数据
- Python基础-通过随机数实现抽奖功能 (代码分享)
- 电影院开工在即,第一部电影就看他
- FinClip11月产品更新:FIDE 插件开发功能优化;文档中心捉“虫”竞赛火热开启
- raw 图像转成fits格式图像
- 扫描二维码下载app
- 分布式环境下限流器springboot实现,令牌桶
- tx:advice相关参数说明
- Linux服务器之Samba匿名访问配置
- 基于MatLab实现LSB(最低有效位)算法完成图片数字水印隐写功能
- [附源码]Python计算机毕业设计SSM基于java学科竞赛管理系统(程序+LW)
- ViewPager系列之ViewPager无限循环滑动