python - 使用 Mayavi 进行 RGB 3D 体渲染

标签 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) 如果您的标量和颜色对应于通用颜色图,您应该能够直接设置体积的颜色图

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 颜色放入自定义颜色图的相应行中。

关于python - 使用 Mayavi 进行 RGB 3D 体渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41020522/

相关文章:

c# - 如何检测当前音频设备音量

python - 如何将 http get 响应从 html 转换为 json 格式(来自 kaggle.com)

python - 获取 SQLAlchemy 中已创建记录的 ID

python - 如何在opencv中裁剪检测到的脸部并将roi另存为opencv python中的图像

html - 为网页生成颜色模板

docker - 将数据持久保存在 Oracle 数据库的 docker 卷中

python - Django Rest Framework SerializerMethodField 传递额外参数

colors - 如何在数据库字段中存储颜色?

python - 如何更改 Tkinter 中文本的颜色?

iOS 在应用程序内存不足警告时淡入淡出音频