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
正在阅读:
VTK医学图像三维重建应用及实现_洪涛05-08
习题(提取)06-08
7.第七章 组织变革、组织文化08-26
部编版三年级语文下册课时训练-26方帽子店(含答案)04-20
初中英语试讲稿02-23
隐形矫正牙齿介绍08-12
自媒体人如何快速写好一篇原创文章11-10
美好集团废弃塑料循环利用再生塑编织布扩建项目可研报告03-26
小学生秋韵作文06-15
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 洪涛
- 三维
- 重建
- 图像
- 医学
- 实现
- 应用
- VTK
- 2014年412多省联考申论考前冲刺秘籍
- 天然气公司压力容器事故应急预案
- 苏教版小学语文六年级上册第一单元复习要点归纳55
- 加班工资如何计算问题概要
- 高一级上学期期中考试英语科试题及参考答案
- 供电所线损分析及整改措施
- 人事经理的职场笔记.doc
- 2020年北京市劳动合同范本
- 2014年税务代理实务-所得税纳税申报代理实务考试试题及答案解析(一)
- 英美文学选读笔记完整笔记,全面归纳各章重点
- 甘肃省临泽县二中2015-2016学年八年级上学期期末考试生物试卷
- 九年级历史下册第五单元第12课苏联和东欧社会主义国家的改革习题3岳麓版
- ISO10012:测量过程和测量设备的要求(doc 13)
- 九年级英语下册 Lesson 45 Planet Danny教案 冀教版
- 中小学课题申报:充分利用信息技术,科学有效优化课堂教学的研究
- 2012-2013学年第二学期《市场营销基础》教案
- 吉林省延边朝鲜族自治州2020版二年级上学期数学期末试卷C卷
- 多传感器火灾报警系统设计(毕业设计)-精品
- 生物统计附试验设计复习资料
- 跨铁路封锁施工方案内容