真是服了自己,半年不用就能忘得一干二净……每次都要重新百度,而网上的资料总是纷繁杂乱。这次“重新学习”,按自己的习惯分节记录下来,方便以后查看。也分享给其他从零开始的小伙伴。
网上很多可视化文章都是博主按照自己的工程需求写的,有些需求比较高,代码就相对复杂(我们可能用不着)。所以这里将代码简化,仅保留基本结构(不确定还能不能进一步删减)。
代码如下,里面的数字按需求随意改
image = vtk.util.vtkImageImportFromArray.vtkImageImportFromArray()
image.SetArray(arr3d)
image.SetDataSpacing(spacing)
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()
- 后续一点点加入更多模块和功能,让它NB起来
Python-VTK,最简结构的三维数据体绘制代码。真是服了自己,半年不用就能忘得一干二净……每次都要重新百度,而网上的资料总是纷繁杂乱。这次“重新学习”,按自己的习惯分节记录下来,方便以后查看。也分享给其他从零开始的小伙伴。
此软件包完全属于Paulo Herrera,目前托管于:
我确实盗用,伪造并重新包装了此软件包,以便将其托管在PyPI上,并在我经常使用时易于分发和安装。 我对此一无所获。
我的fork位于:
这个包是现今主要维护和。
EVTK(导出VTK)程序包允许将数据导出到二进制VTK文件,以便使用支持VTK文件的任何可视化程序包(例如Paraview,VisIt和Mayavi)进行可视化和数据分析。 EVTK不依赖于任何外部库(例如VTK),因此很容易安装在不同的系统中。
从0.9版开始,该软件包仅由一组纯Python文件组成,因此可以直接在安装了Python的任何系统中安装和运行它。 EVTK提供了低级和高级接口。 虽然可以使用低级接口导出存储在任何类型的容器中的数据,但高级功能可以轻松导出存储在Numpy数组中的数据。
该软件包托管在PyPI上,其位置如下
VTK在Java, Tcl, Python中都有接口 ,本文介绍VTK在Python中的接口。
VTK (The Visualization Toolkit) 是一款用于计算机3D成像、构建模型、图像处理、容积渲染、科学数据可视化等方面的免费软件系统,支持Linux, Windows, Mac, Web, mobile devices等平台;
一些使用场景????????
VTK中图像融合方法-VTKImageBlend 的用法:
在一些场景中,我们需要将二张图像进行融合,在VTK中,有这种方法,就是 VTKImageBlend。
用法说明:
官网的说明
example
#!/usr/bin/env python
# encoding: utf-8
import vtk
if __name__ == '__main__':
image_jpeg_reader_vol = vtk.vtkJPEGReader()
image_jpeg_reader_v
体数据由
体素组成。
体素是
基本体积元素,也可以理解为
三维空间内的具有排列和颜色的点或一小块区域,这也是为什么可以保持高达六个标量参数的原因。
通常
体素属于固定网格,因此
体数据可以作为表格储存。在这种情况下,运行可以被认为是多维数组,
体数据可以被当作为本地储存的*.csv文件。然而,更常见的是,数据集被分成若干片,并且每个片被存储为位图图像。由于可以应用于图像的复杂压缩算法,明显减小模型尺寸。
体数据可视化算法
可视化体数据包括四种主要算法。以下将讨论各种算法和技术的特点及目前存在的问题。
1.基于切片方法
PyVista是一个基于VTK的Python库,它提供了一组用于三维可视化和数据分析的工具。它可以与许多其他科学计算库集成,例如NumPy和Pandas,以便更好地处理数据。
以下是PyVista的一些主要功能:
1. 创建并操作网格:PyVista可以轻松地创建各种类型的网格,例如结构化网格、非结构化网格、点云等,并支持各种网格操作,例如裁剪、切割、重采样等。
2. 高质量的可视化:PyVista提供了各种高质量的可视化选项,例如体绘制、等值面绘制、流线绘制等。此外,PyVista还支持交互式可视化,例如平移、旋转、缩放、选择等。
3. 数据分析:PyVista还包括各种数据分析工具,例如点云配准、曲面拟合、体积计算等。
以下是一个使用PyVista创建并可视化网格的示例:
```python
import pyvista as pv
import numpy as np
# 创建一个球体网格
sphere = pv.Sphere()
# 将其转换为numpy数组
points = np.array(sphere.points)
# 可视化网格
p = pv.Plotter()
p.add_mesh(sphere)
p.show()
此外,PyVista还支持从文件中加载和保存网格数据,例如STL、PLY、VTK等。因此,在科学计算和三维可视化方面,PyVista是一个非常强大而且易于使用的Python库。