Я использую mayavi (3.3.2) для отображения изоповерхностей томов.
Как правило, мои тома не имеют кубических вокселей;например, сетка выборки могла бы быть 1 мм x 1 мм в X и Y, но 1,4 мм в направлении Z.
Как я могу заставить такие объемы отображать в правильных пространственных пропорциях, используя mlab.contour3d
или * Mayavi?1008 *?Я бы действительно предпочел не пересчитывать тома в кубическую сетку.
Другой способ сформулировать проблему: что я могу сделать, чтобы приведенный ниже код отображал сферу вместо сплющенного эллипсоида (взяв 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 (его преобразования и т. д.) и вставка соответствующего анизотропного масштабирования (если не существует способа сделать это более напрямую через API mlab).