在python中创建一个等值网格。行进的多维数据集

时间:2019-07-31 10:04:35

标签: python surface marching-cubes

我创建了一个程序,该程序能够预测形状为nx3的给定位置,它的形状为nx1的等值(n是样本数)。现在,我希望能够将其可视化并将其保存为网格,我已经阅读到一种找到等值面的顶点和面的方法是使用称为行进立方体的算法,我发现它在python skimage.measure中。但是我似乎不明白如何利用给定的数据将其提供给measure.marching_cubes_lewiner,因为它只说接受体积数据(M,N,P)。

我试图将其重塑成3d阵列,但我不知道它的外观。我尝试将其作为网格进行操作,但失败了。我觉得应该不难,但我是网格和网格的新手。


isovalue # nx1 array
isovalue = # how do I process this array(nx1) into marching cubes acceptable

print(isovalue.shape)


verts, faces, normals, values = measure.marching_cubes_lewiner(isovalue)

总是会出现一个错误,即行进的多维数据集应该是3D数组,而不是我尝试提供的内容。

1 个答案:

答案 0 :(得分:0)

如果有人对此也感到好奇,我自己找到了答案。如果您具有nx1形状的1D数组,则需要将其作为体积数组进行形状以输入到measure.marching_cubes_lewiner中,将其重塑为(cbrt(n),cbrt(n),cbrt(n))为这么容易。