VTK医学图像三维重建应用及实现_洪涛

更新时间:2023-05-08 10:37:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

2011 年 第20卷 第 4 期 f5c099234a7302768e993960 计 算 机 系 统 应 用

Research and Development 研究开发127

VTK 医学图像三维重建应用及实现①

洪 涛1,潘志方1,2,林立本2,杨丽丽3,沈琴琴1

1(温州医学院 信息与工程学院,温州 325035)

2

(温州医学院 检验医学院与生命医学院,温州 325035) 3

(温州医学院 第一临床医学院,温州 325035)

摘 要:VTK 是开放源码的自由软件系统,可应用于图像处理、计算机图形学和科学计算可视化,在国内外被广泛用于各行各业。介绍了VTK 的基本组成、系统架构、可视化流程。并且将VTK 应用于医学图像可视化,使用面绘制的移动立方体法和体绘制的光线投影法,在Microsoft Visual Studio 2005下使用C++语言分别实现了医学图像三维重建,并给出了系统实例。实践证明,使用VTK 开发医学图像三维重建系统,重建效果好,开发时间少,代码重用率高。

关键词:VTK ;三维重建;动立方体法;光线投影法;医学可视化

Application and Realization of 3D Reconstruction of Medical Images of VTK

HONG Tao 1, PAN Zhi-Fang 1,2, LIN Li-Ben 2, YANG Li-Li 3, SHEN Qin-Qin 1

1(School of Information and Engineerin, Wenzhou Medical College, Wenzhou 325035, China)

2

(School of Laboratory Medicine and Life Science, Wenzhou Medical College, Wenzhou 325035, China) 3

(School of the First clinical medical sciences, Wenzhou Medical College, Wenzhou 325035, China)

Abstract: VTK, which is an open source free software system, can be applied to image processing, computer graphics

and visualization in scientific computing, and it is widely used in all walks of life at home and abroad. This dissertation describes the basic composition, system architecture, and visualization process of VTK. Furthermore, it applies VTK to the visualization of medical images, uses a surface rendering- Marching Cubes algorithm- and a volume rendering- Ray Casting algorithm- to achieve 3D reconstruction of medical images under the Microsoft Visual Studio 2005, and has designed the system examples. Practice proves, using VTK to develop medical images’ reconstruction system has good reconstruction results, less development time and high code reuse rate.

Keywords: VTK; 3D reconstruction; marching cubes algorithm; ray casting algorithm; medical visualization

近年来,计算机图形图像等技术不断发展,并逐步渗入到医学领域,开创了数字医疗的新时代。基于计算机数字图像处理、计算机图形学、虚拟现实和计算机网络等技术的医学图像处理与三维重建技术,已逐渐成为了一门具有特色的交叉学科。

VTK 是开放式的免费软件,并且具有强大的三维图形图像处理功能,良好的体系结构、高度的灵活性及可移植性,目前在美国、西欧等各高校、研究所已经得到广泛的应用[1]。在美国的耶鲁大学里就有专门

的教材用于高校教学[2]。虽然VTK 在欧美已经十分流行,但其在国内的发展情况却不容乐观,这些都应该引起有关部门和高校的重视。

1 VTK 介绍

VTK(TheVisualization Toolkit)是美国Kitware 公司推出的一个开放源码的自由的软件系统,可以应用于图像处理、计算机图形学、科学计算可视化,最新版本为5.6.0,下载地址为f5c099234a7302768e993960/VTK/ resources/software 。

① 基金项目:浙江省大学生科技创新项目(2009R413013);温州市科技局科技项目(Y20090099)

收稿时间:2010-08-17;收到修改稿时间:2010-10-08

计 算 机 系 统 应 用 f5c099234a7302768e993960 2011 年 第20卷 第 4 期

128研究开发 Research and Development

VTK 完全采用面向对象的设计思想来设计与开发,支持Windows ,Unix 与Linux 等多种平台,支持

C ,C++,Java ,Tcl/Tk 以及Python 等编程语言[3]。VTK 将众多常用的图形操作、图像处理算法封装成不同的类,非常易于理解和调用。相对于Matlab 与OpenGL 库,VTK 具有应用灵活、重建效果逼真、重建速度较快等优点,同时还可以对图像进行缩放、旋转、平移、组织提取等多种操作[4]。与此同时VTK 具有很好的流

(streaming)和高速缓存(catching)能力,同时支持多线程处理,这些都使得VTK 成为医学图像可视化开发的一个较好的选择[5]。

VTK 最初设计的目的是为了医疗领域的应用,它支持一系列可视化算法和许多高级建模技术,并且己经集成了许多的可视化算法,像MC 算法、光线投射法等。自从开发以来受到广泛重视和应用,并不断得到完善,已成为可视化领域最负盛名的软件开发包。

1.1 VTK 的基本构成

VTK 主要有两个子系统组成,一个是利用C++语言编写的核心层(C++ Class Library),另一个是按照一定规则生成的支持脚本语言的解释层(Tcl/Tk ,java etc

Interpreted Interface)。这种结构的好处是既可用C++建造有效的算法,同时保持解释性语言代码的特点,使得开发人员能选择自己熟悉的工具语言进行开发,而且这些语言都具有自己的GUI 开发支持。

1.2 VTK 的架构

使用VTK 进行可视化应用非常方便,只需两个部分。首先,建立目标图形用以演示数据;其次,建立数据流水线(data pipeline)来处理数据,建立流水线

(data pipeline)就是将Source 、Filters 、Mappers 链接起来。

类似于MFC 中的CObject 基类,VTKObject 是

VTK 的基类,它为可视化流程提供基本的方法。VTKSource 是VTKObject 的派生类,它为整个可视化流程的开始(比如数据读取等)定义具体的行为和接口。

VTKFilter 是VTKSource 的派生类,它对数据进行各种处理,使得数据可以直接用某种算法模块进行处理式。VTKMapper 是VTKObject 的另一个派生类,它将经过VTKFilter 处理后的应用数据映射为几何数据,为原始数据与图像数据之间定义接口。这样,多种类型的Sources ,Filters 和Mappers 就连接了起来。

VTK 使用了面向对象编程,包含大量的对象模型(Object Models),根据其继承关系,流水线(data pipeline)的对象模型可分为两个方面:可视化模型(the Visualization Models)和图形模型(the Graphics Models)[6]。

可视化模型(the Visualization Models)又可分为数据对象(vtkDataObject)和处理对象(vtkProcessObject)。数据对象(vtkDataObject)表达各种类型的数据。处理对象(vtkProcessObject)主要作为过滤器(filter),它被用来对数据对象进行操作并产生新的数据对象。

图形模型(the Graphics Models)主要的类有以下7个: 渲染窗口(vtkRenderWindow)、渲染器(vtkRend-

erer)、灯光(vtkLight)、照相机(vtkCamera)、演员(vtkActor)、属性(vtkProperty)和映射器(vtkMapper)。当我们将这些对象组合在一起,就可以创建一个场景,生成一幅图像。

1.3 VTK 的可视化流程

可视化流程的职责是转换信息为图形数据,图形流程的职责是转化图形数据为图像。换句话说,就是可视化流程应用与建立几何表现,然后由图形流程来处理[7]。图1所示为流水线的可视化流程。

图1 VTK 流水线的可视化流程

VTK 的三维数据可视化流程与三维数据场的可视化流程的过程是相同的。过程如下[8]:

(1) 使用VTK 源处理对象(source process object)来读入数据并产生数据对象(data object);

(2) 数据对象(dataobject)调用过滤器(filter)对数据进行处理,产生新的数据对象(dataobject);

(3) 处理完的数据进入映射器(mapper),通过映射器将三维数据映射为几何像素;

2011 年 第20卷 第 4 期 f5c099234a7302768e993960 计 算 机 系 统 应 用

Research and Development 研究开发129

(4) 映射器(mapper)输出的几何像素映射到角色对象(vkActor);

(5) 把角色对象(vkActor)添加到绘制器对象(vktRenderer);

(6) 把绘制器对象(vktRenderer)添加到绘制窗口(vtkRenderWindow);

(7) 绘制窗口(vtkRenderWindow)通过调用render ()函数对三维体进行绘制和显示。 1.4 VTK 的特点

VTK 是一套极其优秀的三维可视化图形系统,它之所以受到重视和广泛应用,除了具有工具包结构的特点外,还具有以下一些鲜明的技术特点[9]。

(1) VTK 提供全面的功能支持,对目前许多优秀的三维数据场可视化算法进行了封装,可方便地对数据集进行各种变换和操作,支持二维和三维图形图像的可视化计算,同时提供几何计算、体绘制、图像分割、图像配准的算法,支持用户用VTK 实现任何图像的处理功能;

(2) VTK 对于高性能计算的支持是它逐渐成熟起来的特点。它使用分布数据执行机制的方法实现数据的并发处理,打破了集中数据计算模式的瓶颈。VTK 也支持流式数据分割处理,即可在内存有限的情况下处理大于内存限制的数据。而且这种片段数据处理机制对用户是完全透明的,使用非常方便;

(3) VTK 支持C++、Java 、Tcl 、Python 等多种语言环境,并具有多种程序语言之间的代码转换功能,可在Java 、Tcl 、Python 编程语言之间转换。同时,VTK 具有良好的可移植性,可以跨平台使用;

(4) VTK 最为引人注目的特点是源代码公开,它允许用户对开发的控制灵活到源代码层,满足了不同用户的需求,同时由于VTK 的源代码公开,它受到源代码公开界的广泛支持,从而使其代码得到不断的更新,具有超强的生命力。

上述所列只是VTK 众多优点的一部分,另外诸如生成的三维图像的可交互手段多样,代码重用性好,代码编写量少等。当然它也有一些缺点,如对硬件配置要求较高,要求开发人员具有较深的C++(或Java 、

Tcl 、Python 等语言)开发经验等。

2 VTK 的三维重建实现

目前医学图像三维重建的常用方法可分为面绘制和体绘制。

移动立方体算法(Marching Cubes [10],简称MC)是面绘制的典型算法,目前绝大部分的面绘制都采用此法。此算法容易实现,得到了广泛的应用,并且在美国已经申请专利,被公认为是至今为止最流行的面绘制算法之一[11]。光射线投影法(Ray Casting)是目前体绘制中最常采用的算法。光线投射方法有多种光学模型,一般主要有光线吸收模型和光线发射模型[12]。

2.1 VTK 实现数据读取

使用VTK 可以读取DICOM 、BMP 、JPEG 等多种标准的数据,本文以医学影像信息学领域的国际通用标准DICOM( Digital Imaging and Communications

in Medicine)[13]标准为例,用VTK 实现数据的读入。VTK 类库提供的vtkDICOMImageReader 类库封装了对DICOM 格式数据的读取功能。

开始定义一个vtkDICOMImageReader 类对象。然后调用SetDataByteOrderToLittleEndian()函数,此函数用于自动识别,使读入的数据皆为little-endian 的

Unicode 字符,保证本软件跨平台使用的安全性。接着调用函数SetDirectoryName(filedirectory)函数,

filedirectory 是存放图像的路径。最后调用Update()函数更新数据,保存以上所有参数变化。至此DICOM 数据读入完成。

2.2 VTK 实现面绘制的移动立方体法

VTK 类库提供的vtkMarchingCubes 类封装了面绘制的移动立方体法。图2所示为面绘制流程。

图2 面绘制流程 图3 体绘制流程

计 算 机 系 统 应 用 f5c099234a7302768e993960 2011 年 第20卷 第 4 期

130研究开发 Research and Development

移动立方体法中,在读入数据后,建立vtkM archingCubes 类对象,设置阈值、灰度值,进行表面抽取。接着创建vtkPolyDataNormals 类对象和vtkPoly

DataMapper 类对象,将vtkMarchingCubes 对象的输出作为vtkPolyDataNormals 对象的输入,并将vtkPoly

DataNormals 对象的输出作为vtkPolyDataMapper 对象的输入。然后再创建一个代表此次处理结果的角色vtk

LODActor 类对象,将它与vtkPolyDataMapper 对象关联起来。至此面绘制的数据处理完成。再建立绘制者

vtkRenderer 和绘制窗口vtkRenderWindow ,将vtk LODActor 对象加入到vtkRenderer 后,再将vtkRenderer 对象加入vtkRenderWindow 。最后为了具有交互效果,建立vtkRenderWindowInteractor 对象,将vtkRenderWindow 设置为交互绘制窗口。至此面绘制的移动立方体法重建完成。

2.3 VTK 实现体绘制的光线投影法

VTK 类库提供的vtkFixedPointV olumeRayCast Mapper 类,封装了体绘制的光线投影法。图3所示为体绘制流程。

对于光线投影法,在读入数据后,建立不透明度函数的对象vtkPiecewiseFunction 用以设置不透明函数的拐点以及其对应的不透明度;建立色彩传递函数对象vtkColorTransferFunction 设置不同组织的不同颜色;建立vtkFixedPointV olumeRayCastMapper 对三维数据进行光线投射算法的计算;建立vtkV olume 对象读入上一步的计算结果。至此体绘制的数据处理完成。接下来的窗口绘制及交互,同面绘制步骤一样。至此体绘制的光线投影法重建完成。

3 VTK 实现的系统实例

本人按以上方法,在Microsoft Visual Studio

2005 平台下,借助VTK 类库,基于C++语言的MFC 应用程序框架实现了一种医学图像三维重建系统。系统软件可以将读取的DICOM 格式数据以二维的平面图像形式显示,也可以立体的三维图像形式显示,同时支持面绘制的移动立方体法和体绘制的光线投影法。

本软件执行的PC 配置如下:CPU 是DualCore

AMD Athlon 64 X2 5200+(2700 MHz),物理内存

2G ,独立显卡NVIDIA GeForce 8500 GT(512 MB),显示器分辨率为1440x900,32bit 真彩色。本文使用的数据源是人体脚部CT 断层数据,由250张

512x512的DICOM 数据组成。使用本系统软件,分别按移动立方体法、光线投影法实现三维重建,如图4、图5所示。

图4 移动立方体法重建效果

图5 光线投影法重建效果

4 总结

实践证明,应用VTK 开发医学图像三维重建系统,不仅保证了重建效果,更节约了发开时间,代码重用性极高。鉴于VTK 的各种特征,随着VTK 在开源环境下的不断发展壮大,将VTK 应用于医学图像三维重建及其他科学生产方面的研究将不断深入展开,

VTK 的应用将越来越广泛,越来越深入。

参考文献

1 祁俐娜,罗述谦.基于VTK 的医学图像三维重建.北京生物

医学工程,2006,25(2):1-5.

2 Papademetris X. An Introduction to Programming for Medical Image Analysis with The Visualization Toolkit, Yale University, 2006,12.

3 郭圣文.利用VTK 与ITK 的集成实现医学图像可视化.计算

(下转第85页)

2011 年 第20卷 第 4 期 f5c099234a7302768e993960 计 算 机 系 统 应 用 Research and Development 研究开发85

3R 搜寻到1R 并得到距其的距离和方位角,通过文中

提出的队形控制算法得到第一次循环的运动向量,重复此过程,2R ,3R 不断向自己在队形中位置奔去,途中1R 和2R 依据避障活动障碍的模糊控制规则相互避碰,在1R 运动方向发生变化时,2R ,3R 较迅速的完成队形的维持;图5(b)中2R ,3R 在1R 的同侧,同样依据文中的算法,每一次循环2R ,3R 得到一次更新的运动向量,不断的调整自己向理想的目标位置奔去,途中1R 遇到障碍并依据避障静止障碍模糊控制规则避开,接着2R 也遇到了此障碍并暂时放弃跟随1R 而采取避障行为,在1R 变换运动方向后,2R ,3R 较快的再次形成指定队形。

5 结论

本文针对步行机器人模型建立困难并且传感信息有限的情况下对其进行的队形控制研究。提出了基于主从知识联想的平行四边形法解决方案,在脱离运动学方程的情况下,依靠先验知识和有限的传感信息,构造出虚拟的主从联想的位置关系平行四边形,总结出不同的边角关系对应从机器人不同的位置,从而得出不同位置直接对应得队形控制方法,在队形控制要求不精确的前提下有较好的控制效果。此外,应用模

(上接第130页)

机工程与应用,2006,30:183-184.

4 张翔,肖小玲,张爱华.基于VTK 库的人脑三维可视化面绘制.长江大学学报,2006,3(1):75-76.

5 王树秀,雷声,常发亮.利用VTK 实现DICOM 医学图像三维重建.信息技术与信息化,2008,5:115-116.

6 Schroeder WJ. The VTK User’s Guide (Vesrnin 4.0).Kitware, Inc 1998:19-20.

7 王利.基于VTK 的医学图像可视化研究及应用[硕士学位论文].泰安:泰山医学院,2009.

8 宋海友.基于VTK 的医学图像三维重建及其可视化技术研究[硕士学位论文].成都:成都理工大学,2006.

9 胡战利.基于VTK 的医学图像三维重建及交互研究.哈尔滨:哈尔滨工程大学,2008.

糊控制理论,基于人为经验制定的模糊避障控制规则可使机器人有效的避开动静障碍。

参考文献

1 王月海,洪炳熔.基于行为的机器人部队队形控制.机器人

技术与应用,2001,4:28-32.

2 Balch T, Arkin RC. Behavior-based formation control for multi-robot teams. IEEE Trans. on Robotics and Automation, 1998,14(6):926-939.

3 Fredslund J, Matari ′c MJ. A general, local algorithm for robot formations. IEEE Trans. on Robotics Automation, 2002,18(5):837-846.

4 杨甜甜,刘志远,陈虹,裴润.移动机器人编队控制的现状与问题.智能系统学报,2007,8:21-24.

5 任德华,卢桂章.对队形控制的思考.控制与决策,2005,6: 601-606.

6 杨丽,曹志强,谭民.不确定环境下多机器人的动态编队控制.机器人,2010,3:283-284.

7 熊举峰,谭冠政,窦宏全.基于虚拟力的群机器人队形控制.计算机工程与应用,2007,5:185-188.

8 韩学东,洪炳熔,孟伟.多机器人任意队形分布式控制研究.机器人,2003,1:66-71.

9 雷艳敏,朱齐丹,冯志彬.基于混合式控制结构的多机器人编队控制研究.计算机工程与应用,2010,11:49-51.

10 Lorensen WE, Cline HE. Marching cubes: a high resolution 3D surface construction algorithm. Computer Graphics, 1987,21(4).

11 张季,王宜杰.医学图像三维重建方法的比较研究.医学信

息,2006,19(5).

12 Max N. Optical models for direct volume rendering. IEEE Transactions on Visualization and Computer Graphics, 1, (2):99-108.

13 National Electrical Manufacturers Association (NE MA). 2009. Digital imaging and communications in medicine (DICOM), Part 1: Introduction and Overview. [2010-6]. ftp://f5c099234a7302768e993960/medical/dicom/2009/09_01pu.pdf

本文来源:https://www.bwwdw.com/article/ar2e.html

Top