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

移动立方体算法的主要思想是在三维离散数据场中通过线性差值来逼近等值面。在医学图像分割与重建中,我们通过定义一个阈值来确定这个等值面。首先,确定“体元”(Cell)的概念,这与“体素”(Voxel)相区别。一个体元是由顺序排列的8个像素构成的方格,而每个体素(边界除外)都为8个体元所共享。

图 移动立方体

则体元中顶点值有三种情况:高于或等于等值表示在表面的内部,低于等值表示在表面的外部。这样,体元的一个顶点有2中可能的状态,则一个体元(8个顶点)就一共有256种状态。根据旋转、映射不变等特性,体元的状态可以被归纳为以下15种基本构型:

图 三角化的网格

也就是说,体元所有的256中状态都可以通过这15种基本构型通过旋转、对称变换等操作获得。其中每一种体元状态中都含有若干三个面片,体元中三角面片顶点的具体位置需要根据等值面的值和所在边的两个顶点的值进行线性插值计算得到。可以对这256种状态制作一个查找表(look up table),便于重建时应用。通过遍历所有体元,找出其中的三角面片并将它们组合起来就可以构成最后的三角网格表面数据(Mesh)。

总结起来,移动立方体算法的操作步骤为:

  • 将图像的4个切片读取到内存中;
  • 按照体元扫描2个切片;
  • 通过将体元的8个顶点值与所取得等值面值相比较,计算立方体的索引;
  • 使用索引从查找表中查找边列表;
  • 使用每个边缘顶点的灰度值,通过线性插值计算得到三角面片顶点的确切位置;
  • 计算每个体元顶点的单位法线,并将法线插值到三角形面片的每个顶点;
  • 输出三角形面片的顶点和法线。

参考

[1] Lorensen, W. E. and H. E. Cline(1987). “Marching cubes: A high resolution 3D surface construction algorithm.” Computers & Graphics.
[2] https://www.cnblogs.com/zhizhan/p/3987254.html
[3] https://zhuanlan.zhihu.com/p/48022195
[4] https://www.cnblogs.com/shushen/p/5542131.html
[5] https://baike.baidu.com/item/Marching%20cubes/624285?fr=aladdin

移动立方体(Marching Cubes,MC)算法相关推荐

  1. Marching Cubes算法理解

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

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

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

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

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

  4. Marching Cubes算法

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

  5. 【算法】Marching Cubes

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

  6. Marching Cubes算法在医学三维重建中的应用

    概述 医学图像三维重建的方法主要有两大类:一类是三维面绘制,另一类是三维体绘制.体绘制能够更真实地反映物体结构,但由于其运算量大,即使利用高性能的计算机也无法满足实际应用中交互操作的需要.因此,面绘制 ...

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

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

  8. marching cubes表面重建原理

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

  9. Unity Marching Cubes 原理与应用

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

最新文章

  1. 员工因公司而加入,却因主管而离开
  2. MoeCTF 2021Re部分------PE
  3. PHP实现四种排序-插入排序
  4. 《信息学奥赛一本通》回文数(Noip 1999)
  5. MyBatis学习笔记(3)-动态SQL
  6. VGG16和VGG19的理解
  7. 关于oracle误删数据如何进行恢复
  8. Qt配置opencv
  9. HTML5七夕情人节表白结婚邀请函网页制作(HTML+CSS+JavaScript)
  10. 丢失的遗传力--Missing heritability
  11. 您的组织策略阻止我们为您完成此操作。有关详细信息,请联系技术支持
  12. 论文Re-ranking Person Re-identification with k-reciprocal Encoding(person re-id的re-ranking)
  13. Dns连通性常用测试方法
  14. 【量化笔记】量价关系分析
  15. 人机智能的逻辑哲学论
  16. 正则表达式给查找到的内容加引号
  17. Crontab定时执行任务
  18. java12/13新特性
  19. IE下使用bootstrap-fileinput清空文件框并设置可用时文件框格式错误
  20. 将SitePoint引用添加到Coda

热门文章

  1. (转)神经网络和深度学习简史(第一部分):从感知机到BP算法
  2. 遇到个RestTemplate接收 application/octet-stream的问题
  3. VSCode调试Nodejs
  4. specify的含义、作用及vcs对应仿真选项
  5. ThinkPHP5 验证器validate的使用总结(详细)
  6. 【NOI Online 2022 提高组 B】【洛谷 P8252】讨论 题解
  7. [转载]RobotFramework测试问题汇总
  8. 服务器做raid 10后更换硬盘,做RAID10内置硬盘更换步骤
  9. 1195:国庆节的礼物
  10. 使用nslookup查看SSL安全证书域名验证信息