文章目录
一、原理概述
简单来说,该算法的基本思想是通过找出所有与等值面相交的体素,在这些基础上再分别找出每个体素与等值面相交的交面,最终将这些交面连在一起即是我们所求的曲面。其大致过程如下所述:
(1)首先将点云在空间上进行体素划分,并对每个体素的8个顶点进行分类用以判断体素顶点是位于等值面内还是位于等值面之外。而顶点的分类规则主要有两种情况:1、如果顶点数据值大于等值面则该点位于等值面之内;2、如果顶点数据值小于等值面则该点位于等值面之外。
(2)根据顶点的分类结果来确定等值面的剖分方式。当一个体素中一些顶点位于等值面内,而另一顶点位于等值面外,那么这个等值面一定通过这个体素。当确定等值面通过该体素之后,由于体素共有8个顶点,每个顶点都有在等值面内或外两种情况,所以就有256中组合方式,每一种组合都对应一种剖分方式,不过由于8个点所存在的对称关系,这些组合方式又可以简化为以下14中组合。
![](https://i-blog.csdnimg.cn/blog_migrate/159751d14881c9b010dd2ad0a7be5dae.png)
(3)获取完整的等值面。在了解等值面如何与体素相交之后,我们就可以求取等值面与体素边界的交点。当体素很小时,那么就可以假定函数沿体素边界呈线性变换,因此根据这一假设就可以用线性插值计算等值面与体素边界的交点。在求出等值点之后,就可以根据上述的剖分方式将这些等值点连接成三角形或多边形,最后将得到的三角形和多边形进行连接即可。<