跳转至

表面重建

1 Marching Cubes

把三维标量场(体数据)变成三角网格等值面的经典算法。

👉 CT / MRI / 体素数据 → 表面模型(mesh)

通过将体数据划分为小立方体,针对每个立方体的八个顶点的标量值进行判断,再根据预设的查表规则生成三角形,最终形成一个网格表面。

vtkNew<vtkMarchingCubes> marchingCubes;
marchingCubes->SetInputData(imageData);
marchingCubes->SetValue(0, 500);
marchingCubes->Update();

2 Flying Edges

Flying Edges 是基于飞行边缘算法的表面重建方法,是 Marching Cubes 的一种优化版,提高对大规模体数据的处理效率。

与传统的 Marching Cubes 算法不同,Flying Edges 通过“飞行”判断每个立方体的边缘,而不是每个角点。

  • Marching Cubes 会检查每个小立方体的 8 个角点,看它们的标量值与等值面(iso-surface)比较的结果,以此决定是否生成三角形。

  • Flying Edges 不需要每次都检查所有 8 个角点,只判断这条边的两个端点是否处于等值面两侧(一个小于等值面,一个大于等值面)。如果是这样,这条边就会与等值面相交。

vtkNew<vtkFlyingEdges3D> skinExtractor;
skinExtractor->SetInputData(imageData);
skinExtractor->Update();