我正在使用mayavi (3.3.2) 来显示体积等值面。
通常,我的体积没有立方体素;例如,采样网格可能在 X 和 Y 方向为 1mm x 1mm,但在 Z 方向为 1.4mm。
如何使用 mayavimlab.contour3d
或以正确的空间比例显示这些卷mlab.pipeline.iso_surface
?我真的不希望将卷重新采样为立方网格。
说明问题的另一种方式:我可以做些什么来让下面的代码显示一个球体而不是一个扁平的椭球体(将volume
其预期的 1:1:2 纵横比体素作为给定的,并且不重新生成或重新采样体积)。
import numpy as np
from enthought.mayavi import mlab
def sqr(x): return x*x
s=64
x,y,z = np.ogrid[0:s,0:s,0:s/2]
volume = np.sqrt(sqr(x-s/2)+sqr(y-s/2)+sqr(2*z-s/2))
isos = mlab.contour3d(volume,contours=[5,15,25],transparent=True)
mlab.show()
我猜应该有某种方法可以获取底层的 VTK 图形管道(它的变换等)并插入适当的各向异性缩放(如果没有某种方法可以通过 mlab API 更直接地做到这一点)。