等值面

等值面是空间中的一张曲面,在该曲面上函数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​+a1​x+a2​y+a3​za4​xy+a5​yz+a6​xz+a7​xyz
可以看出等值面是三次代数曲面,提取过程复杂而且不利于显示。为了简化等值面的提取,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相关推荐

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

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

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

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

  3. Marching Cubes算法理解

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

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

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

  5. Marching Cubes算法

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

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

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

  7. marching cubes表面重建原理

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

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

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

  9. Unity Marching Cubes 原理与应用

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

最新文章

  1. c语言实现定长顺序存储,c语言:定长顺序串的基本操作实实现
  2. 第十六届智能车竞赛室内视觉AI组别靶标使用说明
  3. 利用HAProxy实现零停机更新维护
  4. IromPython .Net 的简介和第一个例子
  5. python实现第一个web_我的第一个python web开发框架(6)——第一个Hello World
  6. 灵感编程:最大公约数算法解析
  7. PHP应对洪水般的恶意访问接口 访问冲击
  8. 字典-变量的定义以及应用场景
  9. Gson读写JSON 数据
  10. Python基础-通过随机数实现抽奖功能 (代码分享)
  11. 电影院开工在即,第一部电影就看他
  12. FinClip11月产品更新:FIDE 插件开发功能优化;文档中心捉“虫”竞赛火热开启
  13. raw 图像转成fits格式图像
  14. 扫描二维码下载app
  15. 分布式环境下限流器springboot实现,令牌桶
  16. tx:advice相关参数说明
  17. Linux服务器之Samba匿名访问配置
  18. 基于MatLab实现LSB(最低有效位)算法完成图片数字水印隐写功能
  19. [附源码]Python计算机毕业设计SSM基于java学科竞赛管理系统(程序+LW)
  20. ViewPager系列之ViewPager无限循环滑动

热门文章

  1. c#线程中的属性isbackground
  2. 低代码时代:快速开发成为主流,全民开发不是梦
  3. 财商基础知识课(壹到拾)
  4. Python的深浅拷贝
  5. 【转载】视频跟踪的研究
  6. 大数据学习(六)ETL开发详解及实战
  7. mbp同时内外网连接设置
  8. 看看韩国超人气美女李贞贤?
  9. c语言编程数码管显示文字,c语言编程数码管的显示
  10. BERT的get_sequence_output与get_pooled_output方法