vtkplotter如何设置颜色贴图

2024-07-03 08:13:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用带标签的DICOM,我正在使用vtkplotter可视化3D模型。每个体素都有一个标签,标识骨骼的可识别部分,范围从-1024到根据DICOM扫描而变化的值。如何为每个标量值指定特定的颜色?我尝试使用color(),但据我所知,我只能以有序的方式插入与从最小值开始的值对应的颜色。我必须为某个标量值x指定颜色y

用于显示三维模型的代码段:

from vtkplotter import *

volume = load('Letter:/dicom_folder')
volume.color(['white', 'red', 'yellow'])
volume.alpha([0.0, 0.5, 0.5])

volume.show()

编辑

我是这样解决的:

from vtkmodules.vtkCommonDataModel import vtkPiecewiseFunction
from vtkmodules.vtkRenderingCore import vtkColorTransferFunction, vtkVolumeProperty
from vtkplotter import *

volume = load('Letter:/dicom_folder')

volumeColor = vtkColorTransferFunction()
r, g, b = getColor('white')
volumeColor.AddRGBPoint(-1024, r, g, b)
r, g, b = getColor('yellow')
volumeColor.AddRGBPoint(-1023, r, g, b)
r, g, b = getColor('blue')
volumeColor.AddRGBPoint(-1022, r, g, b)


volumeScalarOpacity = vtkPiecewiseFunction()
volumeScalarOpacity.AddPoint(-1024, 0.0)
volumeScalarOpacity.AddPoint(-1023, 0.5)
volumeScalarOpacity.AddPoint(-1022, 0.5)


volumeProperty = vtkVolumeProperty()
volumeProperty.SetColor(volumeColor)
volumeProperty.SetScalarOpacity(volumeScalarOpacity)
volumeProperty.SetInterpolationTypeToLinear()
volumeProperty.ShadeOn()
volumeProperty.SetAmbient(0.4)
volumeProperty.SetDiffuse(0.6)
volumeProperty.SetSpecular(0.2)

volume.SetProperty(volumeProperty)

volume.show()

如果您有更好或更有效的解决方案,请让我知道


Tags: from模型import颜色标签dicom标量volume
1条回答
网友
1楼 · 发布于 2024-07-03 08:13:23
from vtkmodules.vtkCommonDataModel import vtkPiecewiseFunction
from vtkmodules.vtkRenderingCore import vtkColorTransferFunction, vtkVolumeProperty
from vtkplotter import *

volume = load('Letter:/dicom_folder')

volumeColor = vtkColorTransferFunction()
r, g, b = getColor('white')
volumeColor.AddRGBPoint(-1024, r, g, b)
r, g, b = getColor('yellow')
volumeColor.AddRGBPoint(-1023, r, g, b)
r, g, b = getColor('blue')
volumeColor.AddRGBPoint(-1022, r, g, b)


volumeScalarOpacity = vtkPiecewiseFunction()
volumeScalarOpacity.AddPoint(-1024, 0.0)
volumeScalarOpacity.AddPoint(-1023, 0.5)
volumeScalarOpacity.AddPoint(-1022, 0.5)


volumeProperty = vtkVolumeProperty()
volumeProperty.SetColor(volumeColor)
volumeProperty.SetScalarOpacity(volumeScalarOpacity)
volumeProperty.SetInterpolationTypeToLinear()
volumeProperty.ShadeOn()
volumeProperty.SetAmbient(0.4)
volumeProperty.SetDiffuse(0.6)
volumeProperty.SetSpecular(0.2)

volume.SetProperty(volumeProperty)

volume.show()

相关问题 更多 >