可视化工具 VTK 简介

概述

VTK1 (visualization Toolkit)可视化类库是一套免费的、 源代码公开的软件工具包,是美国 Kitware 公司基于面向对象的编程技术设计和开发的,可用于图像处理、三维图形学及可视化程序设计。 VTK 被设计成一个工具包(Toolkit)而非一个系统,它是一个独立的目标库,可以很容易嵌入到任何一种开发工具中,并在此基础上开发自己的库函数,从而建立独立的大型应用系统。 VTK 由 C++类库和包括 Tcl/Tk, Java 以及 Python 的编译界面层组成。这种层次结构使得开发人员能够根据需要选择自己熟悉的工具语言进行开发,并且这些语言都有自己的 GUI 开发支持。

VTK 把图形图像和可视化领域内许多常用的算法封装起来, 并屏蔽了可视化开发过程中经常遇到的一些细节,这极大地方便了广大研究人员和开发人员。在图像处理和可视化方面, VTK 具有其他软件包无法比拟的优点。它作为一种流行的图像应用软件开发平台广泛应用于科学研究和工程领域。

特点

VTK 是一套优秀的三维可视化图形系统,近年来广泛受到重视和应用。它具有如下一些鲜明的技术特点2

  1. VTK 最引入注目的特点是源代码公开,它可满足不同用户的需求。由于它的源代码开放,世界各地的许多研究机构和个人在用它进行教学、研究和可视化系统的开发,使它受到广泛的支持,促使其代码持续更新,因此得到了不断的完善和改进。
  2. VTK 支持 c++、 Tcl、 Java、 Python 等多种语言环境,并具有多种程序语言之间的代码转换功能。
  3. VTK 封装了目前许多优秀的三维数据场可视化算法,提供了全面的功能支持,可方便地实现对数据集进行各种操作和变换。用户可用 VTK 实现任何图像的处理功能,如二维和三维图形图像的可视化计算、体绘制、图像分割、图像配准等。
  4. VTK 生成的三维图像方便交互,代码编写量少,而且代码重用性好。
  5. VTK 既可以在 Windows 系统中使用,也可以在 Unix 系统中使用,具有平台无关性和良好的可移植性。
  6. VTK 支持丰富的数据类型,可以对多种数据类型进行处理。

框架结构

VTK 采用面向对象的设计方法, 它包括图形模型和可视化模型两种不同的对象模型。图形模型是三维图形的抽象,可视化模型是可视化的数据流程模型3

图形模型表现了三维图形系统的本质特征, 主要用来将数据集的几何形状展示为直观的三维图形,并对属性、照相机、灯光、渲染窗口等属性进行设置和操作,实现图像生成和用户交互的功能。可用于二维、三维等一般图形的处理,它主要有 9 种基本对象4

  1. 属性:说明几何物体的一些特性,如光照特性、反射强度、物体的灰度、物体的绘制样式、着色模式等,以实现具有真实感的三维图形的绘制。
  2. 角色:代表渲染场景中的绘制对象实体,可以实现对角色的缩放,而且角色的位置、方向、渲染特性、引用、纹理映射等属性可以通过参数调节来设置。
  3. 变换:是一个堆栈,里面放置了 4×4 的变换矩阵,可以对堆栈进行平移、缩放、旋转等各种操作,一般在栈的顶部进行。
  4. 映射:指定了图形库中基本图元和渲染数据之间的联系,它的主要任务是把可视化过程中的数据对象转换为几何图元, 一个或多个角色可使用相同的映射,有多个参数对映射进行控制。
  5. 照相机:用来定义视点位置、聚焦点位置和其他一些相关属性,调用者可根据需要来设置参数。
  6. 灯光:可在场景中照亮绘制对象,可通过调用参数对灯光的位置、灯光的状态、照射角度、光照强度以及颜色等进行改变,并支持点光源和平行光源。当场景中的角色与光线发生作用时,就可以通过照相机进行观察。
  7. 渲染控制器:创建渲染窗口,定义坐标计算方法,此方法与设备无关。
  8. 渲染器:主要用于控制目标的渲染过程,对光源、照相机和绘制对象的位置、属性等进行管理,提供了观察坐标系、显示坐标系和世界坐标系三者之间的转换。完成渲染后,需要把渲染器加载到渲染窗口中进行显示。
  9. 渲染窗口:是用户图形界面,用于在显示设备上生成一个窗口,可以设置渲染窗口的大小、产生立体显示效果等,多个图像渲染器可以绘制到单个图像渲染窗口中,同时也可以创建多个图像渲染窗口。

可视化模型采用了数据流程模型5,在此模型中,各个模块是在网络中连接的,对数据的一系列操作利用模块来实现。这种模型的特点是适用于不同的数据类型和不同的算法,所以灵活性很强。 VTK 使用数据流方法把原始信息转换成图形数据。在此方法中有两个基本对象:数据对象(Data Object)和流程对象(Process Object)。

VTK 采用的是流水线(pipe line)机制,支持有规则或无规则的点阵(Point sets)、图像(Image)、体元数据(Volume)等多种数据类型,并且可以很方便地实现这些数据类型之间的相互转换。在 VTK 类库中,提供了灵活丰富的用于读取各种数据格式的文件及其相互转换的类,如 vtkBmpReader( 位图读取类 ) ,vtkJpegReader(Jpeg 图像读取类)等从 vtkimageReader 继承而来的用于读取图像的类6
VTK的运行机制
大体框架如图所示。其中, Source 是整个流水线的开始,首先通过读入文件等方式产生源数据。滤波器(Filter)可以有若干个数据输入,并可以产生若干个数据输出,是一个相对独立的计算模块,功能是对数据作各种变换。 Mapper 将 Filter 处理后的数据转换为图形数据,实现由数据到图形的映射关系,是可视化流水线和图形模型之间的接口。只有映射关系很明显是不行的,要想看到真实的图像,还需要 Actor,其作用就是实体化由 Mapper 得到的映射关系,使人们能够看到最终的绘制结果。 Actor 还可以控制图像的显示属性,以使图像显示地更为逼真,这是通过调用属性对象(VTKProperty)来实现的。下一步就是由 Render 和 Renderwindow 来将图像显示在电脑窗口上。 通过调用它们提供的图形引擎和电脑视窗系统之间的接口,绘制出的图形就可以在窗口中得以显示。 RenderWindowInteractor 用来实现使用者与图像的交互,这样就可以通过鼠标操作使图像旋转,方便从各个角度对图像进行观察。

本文作者: 旌旗
原文链接: https://seekzzh.site/vtk-introduction/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!


  1. W.J.Schroeder,K.M.Martin,W.E.Lorensen,The Visualization Toolkit—An 0bject Oriented Approach to 3D Graphics,Prentice Hall,Upper Saddle River,NJ,1996. ↩︎

  2. 石玉.基于 VTK 的可视化技术研究与实现[D].西安建筑科技大学,2009.6. ↩︎

  3. Schroeder W,Martin K,Lorensen B.The Visualization Toolkit an Object-oriented Approach to 3D Graphics[M].Prentice Hall:Kitware Inc,2002. ↩︎

  4. 许庆功,李昌华.VTK 框架结构与运行机制的探讨[J].洛阳理工学院学报(自然科学版),2008,18(1):67-70. ↩︎

  5. 黄姗姗,王博亮,闵小平.基于 VTK 的可视化技术的研究[J].中国数字医学,2008,3(1): 31-34. ↩︎

  6. 吴松峻,彭复员. 基于 VTK 的二维轮廓线的三维可视化重建[J].计算机与现代化,2004,(10):111-113. ↩︎

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值