2016-12-07 30 views
0

RGB 3D体绘制我用Mayavi的渲染3D体积如以下代码:使用Mayavi的

from mayavi import mlab 
vol_mlab = mlab.pipeline.volume(mlab.pipeline.scalar_field(M)) 
mlab.colorbar() 
mlab.show() 

,其中M是一个3D矩阵。我的问题是,如果体素有三个描述(R,G,B)分量的值,是否可以使用颜色信息渲染体积?

回答

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