Python 使用Mayavi的RGB三维体绘制

Python 使用Mayavi的RGB三维体绘制,python,colors,volume,mayavi,Python,Colors,Volume,Mayavi,我使用Mayavi渲染三维体积,如下代码所示: from mayavi import mlab vol_mlab = mlab.pipeline.volume(mlab.pipeline.scalar_field(M)) mlab.colorbar() mlab.show() 其中M是三维矩阵。我的问题是,如果体素具有三个描述(R、G、B)分量的值,是否可以使用颜色信息渲染体积?几点建议: 1) 如果您的标量和颜色对应于公共颜色映射,则应该能够直接设置卷的颜色映射 2) 您可以自定义卷的Col

我使用Mayavi渲染三维体积,如下代码所示:

from mayavi import mlab
vol_mlab = mlab.pipeline.volume(mlab.pipeline.scalar_field(M))
mlab.colorbar()
mlab.show()
其中M是三维矩阵。我的问题是,如果体素具有三个描述(R、G、B)分量的值,是否可以使用颜色信息渲染体积?

几点建议:

1) 如果您的标量和颜色对应于公共颜色映射,则应该能够直接设置卷的颜色映射

2) 您可以自定义卷的ColorTransferFunction,如下所示:(复制如下)。因此,对于您的示例,只要您的颜色随标量值平滑变化,就可以选择一些颜色的路径点并将它们添加到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点并设置自定义颜色贴图,例如。这看起来就像给每个体素指定一个标量,然后将体素的RGB颜色放置到自定义颜色贴图的相应行中