【问题标题】:RGB 3D volume rendering using Mayavi使用 Mayavi 进行 RGB 3D 体积渲染
【发布时间】:2016-12-07 14:50:34
【问题描述】:

我使用 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) 分量的三个值,是否可以使用颜色信息渲染体积?

【问题讨论】:

    标签: python colors volume mayavi


    【解决方案1】:

    几个建议:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-25
      • 1970-01-01
      • 2011-07-08
      相关资源
      最近更新 更多