我使用mayavi将3D卷作为以下代码:
from mayavi import mlab
vol_mlab = mlab.pipeline.volume(mlab.pipeline.scalar_field(M))
mlab.colorbar()
mlab.show()
其中m是3D矩阵。我的问题是,如果体素具有三个描述(r,g,b)组件的值,是否可以呈现颜色信息的音量?
几个建议:
1)如果您的标量和颜色对应于一个共同的colormap,则应该能够直接设置卷的colormap
2)您可以自定义卷的ColorTransferFunction,如下所示:http://docs.enthought.com/mayavi/mayavi/mayavi/auto/mlab_pipeline_functions.html#volume(下面复制)。因此,就您的示例而言,只要您的颜色随标量值而变化,请选择一些颜色的航路点并将其添加到CTF
中vol = mlab.pipeline.volume(src)
# Changing the ctf:
from tvtk.util.ctf import ColorTransferFunction
ctf = ColorTransferFunction()
ctf.add_rgb_point(value, r, g, b) # r, g, and b are float
# between 0 and 1
ctf.add_hsv_point(value, h, s, v)
# ...
vol._volume_property.set_color(ctf)
vol._ctf = ctf
vol.update_ctf = True
3)您真的需要卷渲染吗?如果不是这样,它可能会更容易可视化为3D点并设置自定义colormap,例如https://stackoverflow.com/a/30266228/209246。因此,这看起来就像将标量分配给每个体素,然后将Voxel的RGB颜色放入自定义colormap的相应行中。