【Python-VTK】【一】最基本的体数据可视化
by 今天不飞了
真是服了自己,半年不用就能忘得一干二净……每次都要重新百度,而网上的资料总是纷繁杂乱。这次“重新学习”,按自己的习惯分节记录下来,方便以后查看。也分享给其他从零开始的小伙伴。
三维矩阵体绘制-最简结构
网上很多可视化文章都是博主按照自己的工程需求写的,有些需求比较高,代码就相对复杂(我们可能用不着)。所以这里将代码简化,仅保留基本结构(不确定还能不能进一步删减)。
代码如下,里面的数字按需求随意改
# arr3d 是你事先准备好的矩阵
# [矩阵转vtk类]
# (这个函数就是这么长...我也很无奈)
image = vtk.util.vtkImageImportFromArray.vtkImageImportFromArray()
image.SetArray(arr3d) # 加载三维矩阵
image.SetDataSpacing(spacing) # 设置PixelSpacing
image.Update()
# [创建渲染算法]
volumeMapper = vtk.vtkGPUVolumeRayCastMapper()
volumeMapper.SetInputData(image.GetOutput()) # 加载渲染对象(原始提数据)
# [创建物体颜色函数]
colorFunc = vtk.vtkColorTransferFunction() # 创建伪彩转换函数
colorFunc.AddRGBPoint(0.0, 0.0, 0.0, 0.0)
colorFunc.AddRGBPoint(30.0, 196/255, 96/255, 0)
colorFunc.AddRGBPoint(90.0, 254/255, 218/255, 182/255)
colorFunc.AddRGBPoint(200.0, 239/255, 239/255, 239/255)
# [创建物体不透明度函数]
opacityFunc = vtk.vtkPiecewiseFunction() # 创建分段函数
opacityFunc.AddPoint(0, 0)
opacityFunc.AddPoint(10.0, 0.01)
opacityFunc.AddPoint(100.0, 0.5)
opacityFunc.AddPoint(200, 1)
# [创建物体属性]
volumeProperty = vtk.vtkVolumeProperty()
volumeProperty.SetColor(colorFunc) # 设置颜色转换
volumeProperty.SetScalarOpacity(opacityFunc) # 设置不透明度
volumeProperty.SetInterpolationTypeToLinear() # 设置插值方案
volumeProperty.ShadeOn() # 阴影
# [创建物体]
vol = vtk.vtkVolume()
vol.SetMapper(volumeMapper) # 加载渲染算法
vol.SetProperty(volumeProperty) # 加载物体属性
# [创建一个渲染器]
ren = vtk.vtkRenderer()
ren.AddVolume(vol) # 加载物体
ren.SetBackground(0.0, 0.0, 0.0) # 设置背景颜色
# [创建一个渲染窗口]
renWin= vtk.vtkRenderWindow()
renWin.AddRenderer(ren) # 加载渲染器
renWin.SetSize(600, 600) # 设置窗口尺寸
# [创建交互器]
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin) # 加载渲染窗口
# [开始绘制]
ren.ResetCamera() # 重置相机
renWin.Render() # 渲染
iren.Initialize() # 初始化交互器
iren.Start() # show
其他
- 后续一点点加入更多模块和功能,让它NB起来