使用Mayavi进行RGB 3D体积渲染

时间:2016-12-07 14:50:35

标签: python colors volume mayavi

我使用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 个答案:

答案 0 :(得分:0)

几点建议:

1)如果您的标量和颜色对应于常见的色彩映射,您应该可以直接设置色彩映射

2)您可以自定义音量的ColorTransferFunction,如下所示:http://docs.enthought.com/mayavi/mayavi/auto/mlab_pipeline_other_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点并设置自定义色彩图,例如, https://stackoverflow.com/a/30266228/209246。所以这看起来像为每个体素分配一个标量,然后将体素的RGB颜色放入自定义颜色图的相应行中。