2016-12-07 86 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顏色放入自定義顏色映射的對應行中。