VTK开源视觉库 | 概述
01
| VTK开源视觉库 | 行业应用第一篇 |
02
VTK(Visualization Toolkit)是一个开源的、免费提供的软件系统,主要用于3D计算机图形处理、建模、图像处理、体积渲染、科学可视化以及2D绘图。该系统支持多种可视化算法和先进的建模技术,并通过线程处理与分布式内存并行计算来提升处理速度和系统可扩展性。 VTK的设计宗旨是实现跨平台兼容性。这意味着它几乎可以在任何平台上运行,包括 Linux、Windows 和 Mac 系统;也可以在网页环境中运行,甚至可以在移动设备上使用。

03
VTK采用了Kitware的高质量软件开发流程,该流程包括使用CMake、CTest、CDash和CPack来进行系统的构建、测试和打包。再加上一个强大的分布式开发者社区,最终诞生了质量极高、稳定性极强的代码。VTK的核心功能是用C++编写的,这样做是为了最大限度地提升开发效率。这些核心功能随后被封装成了支持其他编程语言的接口,从而让更广泛的用户群体能够使用VTK。尤其是与Python的互操作性方面,VTK做得非常出色。
作为开源软件,VTK可以免费用于任何目的。从技术上讲,VTK采用BSD风格的许可证,这种许可证对开源和闭源应用程序都几乎不施加任何限制。
04
历史
VTK最初是教科书《#>2<#>《可视化工具包:面向对象的三维图形处理方法》3<#>》的一部分。这本书及其配套软件的作者是Will Schroeder、Ken Martin和Bill Lorensen——这三位在图形与可视化领域颇有建树的专家——他们从1993年12月开始,在当时雇主GE R&D的许可下,利用业余时间完成了这本书的编写工作。编写这本书的初衷是为了与其他研究人员合作,共同开发一个用于构建先进可视化与图形应用程序的开放框架。
VTK的诞生源于作者们在GE公司的工作经验,尤其是他们与LYMB面向对象图形系统的接触。此外,Schroeder等人开发的VISAGE可视化系统、伦斯勒理工学院的Clockworks面向对象计算机动画系统,以及Bill Lorensen参与编写的《面向对象建模与设计》一书,也都对VTK的发展产生了重要影响。
在VTK的核心代码编写完成后,世界各地的用户和开发者开始对这一系统进行改进,并将其应用于实际问题中。尤其是GE医疗系统等GE旗下的企业为该系统的开发做出了贡献;同时,像Penny Rheinghans博士这样的研究人员也开始通过编写相关书籍来推广这一技术。其他早期支持者还包括洛斯阿拉莫斯国家实验室的Jim Ahrens,以及那些慷慨资助该项目的石油和天然气行业企业。
<#>为了解决这个日益壮大、活跃且遍布全球的开发者社区所带来的挑战,Ken、Will——与Lisa Avila、Charles Law和Bill Hoffman——于1998年离开了GE公司,共同创立了Kitware公司。从那时起,又有数百名开发者加入了这个团队,他们共同努力将VTK发展成了当今世界上最先进的可视化系统。例如,桑迪亚国家实验室一直是VTK的重要支持者与共同开发者,他们不断改进VTK中的2D图表绘制和信息可视化功能。
05
特点
过滤器
VTK应用程序通过过滤器来处理数据。每个过滤器都会对其接收到的数据进行处理,并生成新的数据。多个过滤器相互连接,共同构成了一个数据流网络。通过这种可配置的网络结构,原始数据可以被转换成更加直观易懂的形式。
图形系统
VTK在底层的图形库(主要是OpenGL)之上添加了一层渲染抽象层。这种高级抽象层简化了创建生动直观的可视化效果的任务。
数据模型
VTK的核心数据模型能够用来表示几乎所有与物理科学相关的现实世界问题。其基础数据结构特别适用于医学成像以及涉及有限差分法和有限元分析的工程领域。

数据交互
交互功能有助于您理解数据的内容、结构及其含义。在 VTK 中,3D 小部件、交互器以及与 Qt 等 2D 小部件库的接口,使您能够为程序添加丰富的用户交互功能。
二维图表
VTK提供了针对表格数据的一系列2D绘图和图表类型。VTK的选取与筛选功能能够帮助用户以交互式的方式查询数据。此外,VTK与Python具有很好的兼容性,包括与Matplotlib的兼容性。
并行处理
VTK在MPI框架下对可扩展的分布式内存并行处理提供了出色的支持。此外,许多VTK滤波器通过vtkSMP实现了更细粒度的并行处理(适用于粗粒度线程化),而vtk-m则适用于多核处理器和GPU架构上的细粒度处理。
06
许可证
VTK是一个开源工具包,采用BSD许可证进行授权。
