ITK 和 VTK 及其应用新进展

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

收稿日期:2008-08-02;修回日期:2008-10-08 基金项目:2005年粤港关键领域重点突破项目(2005A 11304003);深圳市科技计划资助项目(07KJ cd005,07KJ cd138)
作者简介:周振环(1963-),男,高级工程师,博士后,主要研究方向为图像处理(zhouzhenhuan@);肖汝(1985-),女,硕士研究生,主要研究方向为图像处理;吴建华(1957-),男,教授,硕导,博士,主要研究方向为图像处理;赵明(1975-),男(土家族),工程师,工学硕士,主要研究方向为.NET 开发和图像处理;夏侯春洪(1984-),男,硕士研究生,主要研究方向为图像处理.
ITK 和VTK 及其应用新进展
*
周振环1
,肖 汝
1,2
,吴建华2
,赵 明1
,夏侯春洪
1,2
(1.深圳职业技术学院电子信息工程学院,广东深圳518055; 2.南昌大学研究生院,南昌330031)摘 要:在国外,基于ITK 和VTK 的3D S licer 和IGS TK 两个软件主要应用于为医学图像分析、图像导航手术和微创手术。

对ITK 和VTK 的现状、安装、开发技术作了详细的综述,并介绍了3D Slicer 和IGSTK 的主要功能和临床应用,为图像引导临床诊断的研究应用指明方向。

关键词:ITK;VTK;医学图像;图像处理;3D Slicer;IGS TK
中图分类号:TP 391.41 文献标志码: A 文章编号:1001-3695(2009)06-2027-05doi:10.3969/j.issn.1001-3695.2009.06.008
ITK,VTK and t heir applica tion of new pr ogr ess
ZHOU Zhen-huan 1,XIAO Ru 1,2,WU J ian-hua 2,ZHAO Ming 1,XIAHOU C hun-hong 1,2
(1.College of Electr onics &Infor mation Engineering,S henzhen Polytechnic,Shenzhen G uangdong 518055,China;2.Graduate School,Nan-chang University,Nanchang 330031,China)
Abst ract :At abroa d,3D S licer a nd IGS TK ba sed on ITK,VTK m ainly used for m edical im age a na ly sis,im a ge guided surgery a nd m inim ally invas iv e surgery.The pa per review ed the s ta tus,inst alla tion,technical developm ent of ITK a nd VTK in deta il a nd int roduced 3D S licer a nd IGS TK ’s m ain funct ions and clinical applica tion a s well as indica te the direction to im age g uidance for the clinica l dia gnosis of a pplicat ion.Key words:ITK;VT K;m edica l im age;im age proces s;3D S licer;IGS TK 随着信息技术迅速积聚和医学发展的需要,对各种医疗设备需求急速增加。

我国许多医疗设备都依靠进口,价格昂贵、信息不流通,这给医学的发展带来障碍,也不利于广大患者的治疗。

因此许多科研工作者都在不断致力于医疗设备的开发。

ITK 和VTK 功能强大、资源开放,提供了一个很好的开发平台,已经有一部分人将IT K 和VTK 应用到医学图像分割、三维重建中,开发了一些医学图像处理平台,但是目前开发的软件应用比较分散或者不断重复其他人的工作,这些都不利于科研开发和创新。

1 ITK 和VTK 的历史和现状
1989年,美国国家医学图书馆(Na tional Libra ry of M edi-cine,N LM)进行人体可视化项目的研究
[1]
,想要开发一个分割
与配准的程序包,作为visible hum an 项目的一个工具。

IT K 就是源于这个项目而形成的。

ITK 是一个开放源码的类库,所以它既可以自己维护,又可以供使用者和开发者不断交流,从而不断扩充该软件。

ITK 实现了大部分的分割和配准算法,形成一个算法仓库,避免重复劳动,减少开发者的障碍。

它主要用于图像导航手术、计算机辅助诊断、外科手术规划、放射治疗和通用医疗上。

ITK 采用C ++AN SI 标准,基于范型编程思想,模板的大量应用是它的一大特色。

1993年12月,GE R&D 部门的Will S chroeder 等人著作的《The v isua lizat ion toolkit:an object-oriented a pproach t o 3D gra ph-
ics 》,将VTK 作为这本书的配套软件赠送。

1998年,此书发行第二版。

此后,使用VTK 的人数不断增加,形成了一个社区。

VTK 也以open source 的形式开发,全世界的开发人员都可以贡献自己的力量,目前已经成为有名的可视化领域的开发工具[2],它以C VS 的方式进行因特网上的联合开发。

VTK 和ITK 已经引起了国际上对t oolkit s 开发的关注。

SPIE Medica l Im ag ing 2004年的年会上有一个专门的session,叫做visualiza tion toolkits,专门探讨医学影像领域内算法开发平台的研究。

MICC AI2003会议上有一个专门的w orkshop,叫做soft wa re dev elopm ent is sues for m edical ima ging com put ing &com puter a ssis ted intervent ions 。

国际上一些平台(德国汉堡大学Voxel Ma n 、美国U Penn 的3DVIEWN IX 、Viewer (S y racuse Univ ersity )、S t ony Brook 的VolVis)涉及到VTK 。

在国内,有人开始利用ITK 和VTK 开发医学图像处理平台,如MITK [3]。

2 ITK 和VTK 的安装和使用
ITK 具有图像分割和配准的功能,却不能显示,而VTK 具有可视化功能。

ITK 和VTK 有一个共同的特点是它们都不提供用户接口(U I)。

用户可以根据实际操作系统或实际需求来选择UI 。

本文选择在Windows 操作系统下、Vis ua l S tudio 6.0编译工作环境中安装ITK 和VTK 。

2.1 在Windows 上的安装和使用[1,2]
1)准备工作 因为ITK 和VTK 类很多,所以要利用
第26卷第6期2009年6月 计算机应用研究
Applicat ion Research of Com puters Vol.26No.6J un.2009
C Make 软件进行编译。

首先从htt p://ww w.cm a 下载cm ake-2.4.3-win32-x 86.ex e,并在C:\Program Files \CMake 2.4路径进行安装(cm ake 、VC 6.0、ITK 安装文件、VTK 安装文件最好在同一目录下,这样编译时系统更好寻找路径);然后从ht-tp://w ww.it 下载两个文件,分别是Insight Toolkit -2.4.0(主要ITK 的安装文件)与Ins ig ht Applications-2.4.0(主要是用于链接VTK 与ITK);接着从htt p://w ww.vt 下载v tk-5.0.3.zip 、vt kda ta-5.0.0.zip 、vt k-5.0.0-w in32.ex e 。

2)ITK 的安装 因为VC 安装在C :\Progra m Files \Mi-crosoft Visua l S t udio 上,所以将ITK 放在同一目录。

如果在C 盘创建新文件夹名为C:\Program Files \ITK,将下载的两个压缩文件夹解压在ITK 总文件夹中。

将解压后的文件夹Insight-Toolkit -2.4.0重新命名为Insig htToolkit 并对它进行编译。

在ITK 主文件夹中新建一个文件夹,取名为bin 。

打开CMa ke 对ITK 进行编译,编译环境默认为Visual S t udio 6.0,其他选项按照下面路径地址填写。

BU ILD-EXAMPLE S \BU ILD-S HARED-L IB S\BU ILD-TES TING 这三个选项都选择off;cm a ke-insta ll-pre-fix 这个选项选择编译ITK 的总目录C :\Prog ra m Files\ITK 。

点击configure 生成相关的工程,当红色选项都变成灰白色后点击C Make 的ok 键。

运行Microsoft Visua l C ++6.0,打开C:\Progra m Files\ITK\bin 进行编译。

根据上面选项选择的on/off 不同,编译时间也会不同。

如果选择ITK 选项中的E XAMPLE S 和生成动态LIB 文件的选择on,编译时间则相对较长,生成的库也比较大。

完成后可以打开C:\Prog ram Files \ITK \bin \INS TALL.ds p 文件。

执行这一步的目的于使编译结果安装在cm ake_ins ta ll_prefix 设定的目录下。

至此ITK 的安装正式完成。

3)VTK 的安装 新建一个文件夹C:\Program F iles \VTK,把v tk-5.0.0.zip 解压到C:\P rogra m Files \VTK \VTK,把v tkda-ta-5.0.0.zip 解压到C:\Program Files \VTK \VTKDATA,并且在C :\P rogra m Files \VTK 中建立一个新文件夹bin,作为编译程序存放的路径。

执行vt k-5.0.0-w in32.exe,安装目录为C :\P rogra m Files \VTK5.0。

然后需要重新用CMa ke 编译一下VTK,源代码路径为C:\Prog ram Files \VTK \VTK ,编译目的地址为C:\Program F iles \VTK \bin(编译时,把S how Adv anced Va lues 打上勾)。

修改以下参数:build_exa m ples,是否编译VTK 中的例子,选off;build_testing,它是VTK 测试代码,与build_exa m ples 类似,选off;build_shared_libs,若选为off,只生成lib 文件,若选为on,还生成dll 文件;cm ake_insta ll_prefix,它是安装VTK 的路径,安装的好处就是可以从1GB 多的文件中提取出.h.lib.dll 等精华,安装在指定目录下,并修改系统环境变量;vt k_dat a_root ,C Make 可以自己找到v tkdat a 的路径,但如果没有,把C:\P rogra m Files\VTK\vt kda ta\填上即可,告诉CMa ke,VTK 需要的数据都在哪里;vt k_us e_para llel,对于想用VT K 进行并行计算,选择on,否则保持off;vt k_use_guisupport,必须设置为on,再次config ure 之后,会出现一个新的选项vt k _use _m fc,也设为on 。

在cm a ke 中有些选项是依赖于另一些选项,如vt k_use_g uisupport 和vt k_use_m fc,当禁用v tk_use_g uisupport,vt k_use_m fc 是看不到的。

修改完CMake 选项以后,不停地按config ure 按钮,直到没有选项显示为红色,而且此时,点击ok 按钮,即可
以生成VC 的工程文件。

打开bin 目录下的vt k.dsw 文件后,直接build 。

再次打开bin 目录下的vt k.dsw 文件,在Bulid->Set Act iv e C onfigura tion 中,设置为ALL B UILD-WIN 32RE-LEAS E 。

再build 一次,然后拷贝C:\P rogra m Files \VTK \bin \bin\Releas e 到C :\w indow s \sy st em 32中。

关闭后重新打开bin 目录下的ins ta ll.ds p 文件,直接build,编译结果就会安装在cm ake_inst all_prefix 设定的目录下。

为VC ++加入相应的库文件和.h 文件。

添加库文件:打开VC ++的Tools ->Options ->Direct ories,选libra ry ,把C:\Progra m Files \VTK \bin \bin \Debug 添加进去。

添加Include 文件:打开VC ++的Tools ->Options ->Direct ories,选Include Files,把C :\P rogra m Files \VTK 文件夹下的Com m on 、F iltering 、Graphics 、Hy brid 、Im ag ing 、Para llel 、Rendering 、bin 文件添加进去。

至此,VTK 安装完成。

4)ITK 与VTK 的链接 本文应用Insight Applica tions-2.4.0来进行ITK 与VTK 的链接。

在ITK 主文件夹中新建文件夹命名为InsightApplica tions-bin 。

运行C Make,S core code 选项填写解压后Insig htApplicat ions 的路径,build the binaries 选项添加在新建立文件夹Insight Applica tions-bin 的路径。

首先,cm ake-inst all-prefix 这个选项选择的路径是InsightApplicat ions 和InsightApplica tions-bin 所在的路径是ITK 主文件夹的文件路径。

其次,executa ble-out put-pat h 路径这里设置的是C:\Pro-gram Files\ITK\bin\bin 。

C:\P rogra m Files\ITK\bin\bin 文件夹是当编译过it k.dsw 后生成的,编译后在ITK 这个主目录下依次寻找可以找到。

It k-dir 路径的设置为C:\Progra m Files \ITK\bin 。

LIB RARY-OU TPU T-PATH 这个选项填写的依然是C:\Progra m Files \ITK \bin \bin 。

最后,vt k-dir 路径为C:\Progra m Files \VTK\bin,而后configure 、ok 。

再打开CMa ke 选择Insight-Applica tions,原来设置好的就会保存下来,主要看C Make 中cm ake-inst all-prefix 、execut able-out put -pa th 、LIB RARY-OUTPU T-PATH 、vt k-dir 这几个选项的路径是否与上面所说的设置保持一致,如不一致调整至上面所说的路径设置。

再次configure 、ok,链接成功。

运行Microsoft Vis ua l C ++6.0,打开C:\Progra m Files \ITK \Insig ht Applicat ionsbin \itk.dsw 进行编译,然后运行C:\Prog ram Files \ITK \Insig htApplicat ionsbin \insta ll.dsp 。

此时Insight Applica tions 安装成功,可以进行ITK 与VTK 的混合编程。

从安装过程可以看出,ITK 和VTK 的选项安装路径过多,很容易出错。

当最后发现安装失败时却无法找出错误。

本文以解释的方式一步一步介绍,目的在于给读者一个清晰的思路和参照。

5)ITK 和VT K 的混合使用 上面的安装成功使得ITK 和VTK 进行混合编程。

因为VT K 已经将它的库文件和Include 文件添加到VC 中,但是ITK 和VTK 的链接文件却没有包含进去,所以首先要将C:\Prog ra m Files \ITK \Ins ig ht Applicat ions \Auxiliary\vt k 添加进去。

在一个新文件夹中建立C Makelists.tx t 和.cxx 文件,本文以C onnec-t edThresholdIm a geFilter “Connec-ted ThresholdIm a geFilter.cxx ”为例,完成图像分割。

打开CMake,选择建立的源文件目录和目标文件目录地址为两个参数(可以选择同一个地址),点击configure 进行设置,设置完成后点击ok 来生成工程文件。

打开ConnectedT hresholdIm ag e-Filter 所在的文件夹,运行VC,选择ALL_B UILD,然后build,生

8202・计算机应用研究第26卷
成执行文件后,使用B rainT1Slice.png 来运行,不同阈值的设定实现了不同目标分割,并在窗口中显示图像,如图1~3所示。

2.2 Tcl /Tk 和C /C ++
C ++是一门通用系统程序设计语言,它兼容C 语言,支持数据抽象、面向对象程序设计和范型程序设计。

数据封装和隐藏、强类型、系统性强是C ++语言中的一大特点。

其主要用于服务器软件、网络底层、驱动程序、图像处理软件、视频播放器、嵌入式设备诸多对运算时间、运行空间要求比较严格的场合。

Tcl(tool com m and languag e)是一种开源的动态脚本语言
[4]
,通用语言,易配置、易扩展、具有柔性化,常用于单元测
试、集成测试和自动化、Web 程序和桌面GUI 应用程序、数据库、嵌入式开发、网络、管理等领域。

Tk 是一种图形用户界面的工具,比传统方法更能把对桌面应用程序的开发推向更高层次;它是一种标准GU I,不但支持Tcl,而且支持许多其他的动态语言,也能编制出高效、自然易懂、兼容多平台(如Windows 、M ac OS 、Linux 等操作系统)的脚本语言。

Tcl/Tk 与C/C ++相比[5],C ++比Tcl/Tk 的速度快、代码维护性更好、内存资源占用较少,但是调试复杂,难以掌握;Tcl /Tk 则简单易学、测试简单、具有很好的可移植性,但是速度较慢、内存占用较多。

大多数计算机平台同时使用Tcl/Tk 和C/C ++。

Tcl/Tk 侧重于组装组件到应用,C/C ++偏向于系统的开发,因此可以用C/C ++产生组件,然后用Tcl /Tk 把它们组装起来,更加快速、灵活地实现应用程序的开发。

为了将Tcl/Tk 与C/C ++结合使用,不仅需要解决T cl/Tk 和C/C ++的接口问题[6],而且需要一个在VC 编译环境下进行参数设置。

将Tcl/Tk 在Microsoft Visua l C ++ 6.0上使用,首先从ht tp://www.activest at 下载ActiveTcl,解开压缩文件后有一个子目录“w in ”;然后可以打开t cl.dsw ,或从命令行输入buildall.vc.bat 。

T k 的编译类似,但一定要先编译好Tcl,并指定好编译好的Tcl 文件的路径才行。

详细请参考win 目录下的RE ADME 文件。

2.3 ITK 和VTK 源代码开发方法
IT K 源代码基于C ++语言,并采用范型编程。

范型(ge-nericit y)是指在多种数据类型上皆可操作。

它可以一个或多个类型叠加来重新定义类型,所以从理论意义上讲,ITK 可以创建任何格式的图像,代码的重复使用使得其效率得到提高。

在ITK 中建立一个文件,一般包括两个文件,即头文件和执行文件(.cxx 或.t xx),然后还要包含一个C MakeList s.t xt 文件利用C Make 进行连接。

ITK 通过reader 读入数据,然后filt er object 载入数据并进行处理操作,新的数据通过w rit er 写到文件中。

VTK 是一个面向对象的系统,主要采用C ++设计,允许使用J ava 、Tcl 和Pyt hon 等解释型语言。

VT K 的两个对象模型是图形和可视化。

VTK 中有一些基本的对象(如光照、相机、绘制窗、映射、查找表等),利用这些对象产生一个场景。

VTK 的rea der 对象读取数据或者构造数据,然后通过filt er 进行处理,新的数据通过write 写入文件或流中。

可视化流水线负责构成几何表达,然后由图形流水线来绘制。

VTK 使用数据流方法
将信息变换成图形数据,2D(图像)和3D(体素)数据均看成是vt kIm ag eDa ta 。

VTK 支持广泛的图像处理和体素绘制功能。

3 ITK 和VTK 源代码开发技术
3.1 ITK 、VTK 图像格式及相互转换
从应用的角度来看,ITK 、VTK 不仅支持读写J P EG 、BM P 、PN G 、TIFF 等常用图像格式,还提供了DICOM 医学图像格式的支持。

从ITK 的内部结构而言,IT K 并不是支持任何格式的图像文件,而是提供了转换格式的方式和一些基本的子类。

Im ag eIO 类包括很多子类,如PN GIm ag eIO 、VTKIm ag eIO 、M et aIm -ageIO 、Dicom Im ag eIO 、Ra wIm a g eIO 、VOLIm ag eIO 、GiplIm a g eIO 类等。

ITK 读取一幅图像,首先由it k::Im ageFileReader 类捕获;然后由Im a geIO 类寻找与图像格式匹配的子类,找到原图像格式的子类后返回指向该子类的指针,创建该图像格式的实例;最后返回给itk::Im ageFileWriter 。

用户可以自己创造新的图像格式的子类。

了解ITK 的图像读写机制后,就不难完成不同格式的转换。

ITK 基于编程范例类,大多数类型定义在编辑时间上,所以可以预见不同图像之间的转换。

首先模板定义要输入的图像格式类型为输入类型,转换后的图像格式类型为输出类型,利用Resca leInt ensity Im a geFilter 类定义一个滤波器调节输入/输出参数改变,从而完成图像的格式转换。

在VTK 中,图像数据作为一种特殊的数据类型有多种不同的处理和显示方式。

图像数据的特点是拓扑与几何都是规则的,其数据排列完全由orig in(起始位置)、spa cing (空间间距)、dim ensions(三维范围)这几个参数来决定。

vt kSt ruct ured-Point s 结构化点集是VT K 中表示图像数据的惟一方式。

通常VTK 读入一幅图像时,首先会将图像文件转换为结构化点集的数据格式,然后再对这种结构化点集数据进行处理。

在VTK 中,图像的来源有两种,一种是从磁盘文件中读取,另一种是用特定的图形绘制函数来绘制。

在VTK 中,它提供了丰富、灵活的用于读取各种数据格式的文件及其相互转换的类,如从vt kIm ageReader 继承而来的各种用于读取图像的类,vtkBMP Reader(位图读取类)、vt kJ pegRea der(J PEG 图像读取类)、vt kTIFFRea der(TIFF 图像读取类)、vt kPNM Reader(读PNM(pnm 、pgm 、pbm)类)等。

也可以扩展基类vt kIm a geRea-der 、vt kIm a geWrit er 以增加读写其他格式图像的类,如v tkDi-com Reader 、vtkDicom w riter 等DIC OM 3.0标准的医学图像等。

同样,在VTK 中,将众多常用的图形操作以及图像处理算法封装成不同的类,非常易于理解和调用。

3.2 DICOM 图像的读和写
DIC OM(digita l im a ging and com m unicat ions in m edicine)是医疗设备的国际标准通信协议,是数字医学图像的网络通信接口标准,它为在不同医疗设备之间对医学图像等数字信息进行各种命令操作定义了统一的规范。

目前,医学图像的种类很多,包括B 超、磁共振(MRI)、CT 、DSA 、PET 、S PEC T 、数字X 光机、X 射线透视、各种电子内窥镜、显微镜下病理切片图像等,但都以DICOM 标准来保存显示。

在ITK 中,DICOM 的范函性由GDCM 库提供。

利用ITK 可以读写单个DIC OM 切片,使用GDC MIm ageIO 对象作为被it k::Im a geFileWrit er 使用的Im a geIO 的对象连接。

在临床应用
・9
202・第6期周振环,等:ITK 和VTK 及其应用新进展
图!
阈值改变后的分割图像
图"
#$%&'(")*&+,-.'/图0
12'',+3,4(5$,652*4分割后的图像
中最普遍的数据表示是用DIC OM 切片集去组成三维空间图像,ITK 读2D DIC OM 序列图像并写入体数据,利用itk::GDC-MSeriesFileN a m es 对象确定一个测定体积的数据切片。

另外,ITK 可以从DICOM 文件中获取DIC OM 的标签或者改变头文件信息。

因为DIC OM 文件中病人信息非常精确,所以在编写程序的同时要保证安全性。

VTK 5.0可直接读取该格式文件。

vt kDICOMIm ag eRea der 实现读取一个文件夹内的DIC OM 文件。

该部分被封装为Re-const ruction 类的一个成员函数S et-DCMDirect ory(char*sdir)。

其中参数sdir 为DICOM 文件的文件夹路径。

3.3 三个正交面显示和3D 绘制
图像三个正交面是横断面、矢状面和冠状面[7]。

将Z 方向中间层图像提取出来,二维图像就是横断面;将X 方向中间层图像提取出来,二维图像就是矢状面;将Y 方向中间层图像提取出来,图像就是冠状面。

对体数据图像进行切片有两种方式:
a)用一个平面对图像进行切分,平面上会有体数据上的图像信息,这一方式得到的数据为Poly Dat a 数据,并不是普通的图像文件数据,只能保存为VTK 格式文件。

其占用空间大,且格式不通用。

b)将体数据旋转,用v tkIm ag eReslice 滤波,重新生成体数据,然后定义切平面,设置切平面的法向量,新建v tkVolum e-Ra yCa stM apper 对象,S etCroppingReg ionPlanes()表示对体数据切取的范围,由其中的六个参数表示,分别代表XYZ 轴上切取的数据范围,调用函数AddClippingPlane()实现对体数据的切割,得到图像的切片数据。

这样得到的切片可以保存为普通图像文件。

最简单通用的可视化技术是通过标量值或颜色投射的色彩对象。

其思想很简单:通过一个查找表投射标量值来得到一个颜色,而且在绘制过程中颜色被用于修改点或者单元的外观。

三维绘制
[8]
通常可分为面绘制(surfa ce rendering)和体绘
制(volum e rendering)。

体绘制根据不同的光照模型有多种算法,如基于空间域的光线投射法、足迹表法、剪切曲变法,基于硬件的3D 纹理映射以及基于变换域的频域体绘制等。

经典的体绘制方法是光线投影法。

光线投射算法(ra y ca sting)是直接体绘制中最为常用的算法,是像序体绘制方法的代表。

它从每个像素发出(至少)一条光线,穿过体数据空间,在光线与体空间的交点之间等距地进行采样,对每个采样点通过三线性或更高次插值计算求出其数据,再计算在给定的光学模型中的光强,并与前面的采样点结果合成。

对每一个像素进行如上计算,最终得到整幅图像。

该算法涉及三种计算函数,封装在合成体绘制函数(v tkVolum eRay Cast Com positeFuncit on)、最大密度投影(v tkVolum eRa yC ast MIPFunction )、等值面探测函数(vt kVolum eRay Ca stIsoFunction)中。

面绘制法主要分为基于断层轮廓线的方法和基于体素的方法。

在面绘制的方法中,经典的算法有移动立方体(m arc-hing cubes)方法。

其基本思想是:将三维数据网格分成许多体元,根据物体表面特征的信息,给出物体等值面的相关参数值,再逐个测试体元的八个角点是否在等值面上,通过线性插值得出体元中的哪些点在等值面上,用连接这些点得到的三角形或多边形来代替立方体,由这些全部的三角形或多边形得到三维数据场的三维表面信息。

该算法用vt kM arching Cubes 类设定
等值面的值,调用vt kPolyDat aMa pper 函数进行映射处理,利用vt Actor 、vt kRender 类显示出来。

3.4 图像分割
所谓图像分割是指将图像中具有特殊含义的不同区域区分开来,这些区域是互相不交叉的,每一个区域都满足特定区域的一致性。

ITK 研究平台提供一套基本的算法
[9]
,用来开发
和定制一个完全的分割应用。

主要算法有区域生长、基于分水岭、快速步进分割、形态检测分割、测量主动轮廓分割、Ca nny 边缘水平集分割、模糊连接度和置信连接度混合分割、模糊连接度和Voronoi 分类分割、特征提取法等。

3.5 图像配准
图像配准是指对于一幅图像寻求一种空间变换,是该图像与另一幅医学图像中的对应点达到空间上的一致。

利用图像配准进行图形分割,从不同图像的模式中得到相关的信息,有利于观察病情和治疗的进展,广泛地应用于临床和研究医学中。

它可以分为同一/不同对象配准、单个/多模配准。

配准框架是基于配准算法集合的通用框架。

首先把一幅图像作为固定图像,另外一幅图像进行插值运算;然后将两幅图像进行相似性匹配,将匹配后的结果进行优化运算,再反馈到图像插值运算上,改变变换参数,直到两幅图像达到某种标准,完全匹配。

ITK 提供了多种变换,从简单平移、缩放到一般的核心仿射变换。

主要算法
[9]
有监控配准、多形态配准、居中
变换、多分辨率配准、内插法、尺度、优化配准、结合预先知识的刚性配准、可变形配准、虚拟变形配准、点集配准等。

4 ITK 和VTK 应用软件分析
4.1 3D Slicer 和IGSTK
3D Slicer 是免费开源的软件包
[10]
,主要用于图像的可视
化和分析。

它可以在Windows 、Linux 和Mac Os X.等平台使用。

美国国立卫生院(N IH)等参与了该软件的开发。

在国外,Slicer 已经在导航手术理论领域起着关键作用,而且随着医学图像导航领域的不断应用而扩大。

在图像导航理论领域,Sli-cer 频繁地用于重建和可视化方面,并在术前和术中采取实时跟踪。

S licer 除了可以重建常规的MRI 图像外,还能显示来自fMRI 、DTI 的图像和心电图。

S licer D 代码大部分有C ++设计,并且基于VTK 、ITK 的设计,也包含一些Pyt hon/Tcl 、M AT-LAB 等代码。

VTK 虽然基于C ++代码,但是提供了一个Tcl 封装可以使用Tcl 算法,Tcl /Tk 组成了3D S licer 其他的用户接口和事件处理。

IGS TK(im a ge-guided surgery t oolkit)提供图像导航手术应用的基本软件包
[11]
,是基于C ++开发设计的类库。

IGS TK 利
用C Make 连接不同的平台,支持跨平台使用。

因为它是开源的,所以全世界的人都可以使用、调试、维护和扩展。

IGSTK 是基于范型编程的,重在交流和测试,也正是这个原因使得IG-STK 不断强大。

IGS TK 是建立在ITK 、VTK 、FLTK 、Qt 软件的基础之上,在某些方面产生了更好的效果。

4.2 图像格式及转换
3D Slicer 支持大多数标准图像格式(net CDF 、HDF 、BMP 、DICOM 、DIB 、J PG 、PICT 、TIFF 、CLP 、EPS 、WMF)。

格式转换可在滤波模块中完成。

因为IGS TK 只用于医学图像的处理,所以它只支持DIC OM 图像标准。


0302・计算机应用研究第26卷
4.3 主要功能模块和临床意义
3D S licer的功能模块包括:a)读写DICOM格式的图像和一些其他格式;b)图像交互可视化、三维模型的表面绘制、体绘制;c)人工操作、量化分析;d)融合、使用刚性和非刚性算法的配准;e)自动分割;f)分析和显示扩散张量成像数据;g)图像引导程序的跟踪。

3D S licer既可用于医学算法研究方面[12],又可用于医疗临床。

T.M.N go等人[13]设计了基于3D S licer软件的互动GU I模块。

在图像引导的治疗研究方面,S licer用于构建和显示术前和术中的MRI数据,以获得跟踪器的空间坐标。

有人综合3D S licer与一个MR扫描仪[14],以手术前的数据加强术中的成像。

随着手术的进展,同样的手术前的数据分析可以适用于探索的解剖变化,实时扫描的同时伴随着手术前切片和曲面模型的查看。

在布莱根妇女医院,该系统已应用在超过20个神经外科案例,并在继续使用中。

Slicer可以用于不同的医疗情况,包括自闭症、多发性硬化症、狼疮、精神分裂症、骨科增生、慢性阻塞性肺疾病、心血管疾病和神经外科手术。

IGS TK的结构中状态机的设计[15,16]是一大特色。

状态机具有安全的可靠性和一体化模式,其设计清楚、API简单,对代码的质量进行控制。

另一方面,IGS TK基于组件叠加的架构,由状态机管理下的每个组件都有其自己的功能模块。

IGS TK 由八个组件实现主要功能:a)显示模块。

显示二/三维图像、病人信息和交互绘制。

b)几何表达。

包括基本的几何形状和复杂的形状如血管、超声波探头等,主要用于图像引导手术现场的虚拟操作。

c)可视化表达。

包括颜色、表面反射度、线的粗细、分辨率等,用于探索更有效的方法来构建手术场景。

d)跟踪。

跟踪医疗器械或者三维空间解剖结构的位置和方向。

e)数据读入。

支持CT/MRI图像的DIC OM格式、网格、标记文件读入。

f)标记。

手术前对病人进行标记,手术中根据原来的标记点进行配准。

g)基础结构。

定时、协调不同组件之间的工作,提供状态机的编程框架。

h)服务。

沟通各个组件的工作,如任务运行时发送日志以便调试、性能显示、优化设计。

IGS TK的核心是鲁棒性,它提供强大的功能,如读写数据、可视化、配准、提供用户界面;可以DIC OM格式标准读取和显示C T和MRI图像。

它是一个图形用户界面和可视化能力,包括一个四象限视图(轴向面、矢状面、冠状面和3D)以及一个多层轴视图(从1×1到10×10),选择不同的点并基于点配准;拥有强大的内部软件测试、异常处理、问题解决方案服务。

IGS TK临床应用主要有穿刺活检、超声波引导射频消融治疗、机器人辅助针检等图像引导手术方面。

在射频消融(RFA)应用[17]中,IGS TK对超声波探针的三维跟踪并利用二维超声波图像进行体绘制。

尽管在手术中有呼吸、心脏运动、探针压力等外在因素影响,IGS TK能够有效地重建活的肝脏三维图像。

IGS TK可以在术前、术中进行U S/C T/MRI图像融合,也可以应用于图像引导的穿刺活检实例[18]。

在乔治敦大学医学中心,该软件目前正在用于图像引导手术和电磁跟踪肺穿刺活检临床实验[19]。

2006年IGSTK在S PIE图像处理会议中的ITK 项目中提取,与此同时进行了演示实验;2008年2月,它再次在S PIS图像处理会议上对动物进行临床演示。

5 结束语
VTK和ITK熟练地解决了图像读取和分割、配准、绘制显示等问题。

基于VTK、ITK再开发的软件充分利用它们的优点并与实际应用结合起来,设计不同需求的新软件。

3D Slicer和IGS TK是国外的医学研究和导航软件,它们虽然基于VTK和ITK,却有着不同的设计思想和应用方向。

在VTK、ITK类库的基础之上设计和开发的软件系统在实际应用中显示了较强的功能,其设计和开发理念对开发医学图像导航相关软件具有很好的启发、参考作用。

现在图像处理的各个方面日趋成熟,利用计算机技术开发的图像引导的手术诊断系统正在快速发展,使得真正的微创手术逐渐应用到实际医疗诊断中,为医学的发展提供了一条重要途径。

参考文献:
[1]BANE Z L,S CHROE DER W,NG L,et al.ITK softwa re guide second
edition updated for ITK ver sion2.4[EB/OL].(2005-11-21)[2008-07-15]./ItkS oftwareGuide.pdf.
[2]S CHEROEDE R W J,AUILA L S,HOFFM AN W A,et al.The visua-
lization toolkit user’s guide[M].[S.l.]:Kitwar e Inc Press,2006. [3]赵明昌,田捷,薛健,等.医学影像处理与分析开发包M ITK的设
计与实现[J].软件学报,2005,16(4):485-495.
[4]Tcl Dev eloper Xchange Site.Tcl tutor ial[EB/OL].(1997)[2008-07-
15].http://ww /ma n/tcl8.5.
[5]OUSTERHOUT J K.Scr ipting:higher level pr ogramm ing for the21st
century[J].IEE E Comput er,1998,31(3):23-30.
[6]梁伟杰,蒋科艺,吕剑锋.Tcl/Tk命令与C/C++的集成研究[J].
微计算机信息,2006,22(9):79-81.
[7]徐人凤,周振环.面向对象的医学图像工作站[J].计算机工程与
应用,2006,42(28):214-217.
[8]廖其光,鲍苏苏,潘家辉,等.基于VTK肝脏三维模型可视化研究
与实现[J].计算机与数字工程,2008,36(2):102-104.
[9]周振环,王安明,王京阳,等.医学图像分割与配准[M].成都:电
子科技大学出版社,2007.
[10]S licer2.6g etting started[EB/OL].[2008-07-15].http://www.sli-
cer.or g/pa ges.
[11]IGS TK Cor pora tion.IGSTK:tutorial[EB/OL].[2008-07-20].ht-
tp://public.kitw /IGSTKWIKI.
[12]MADDAH M,ZOLLEI L,E RIC W L,et al.A ma thematica l framework
for incor por ating anatomical know ledge in DT-M RI analy sis[C]// Pr oc of the5th IEEE International Sym posium on B iomedica l Imaging.
2008.
[13]NGO T M,WE STIN C F,GOLLAND P.A w hite matter stocha stic tra c-
tography system[C]//Proc of the5th IE EE Inter national S ymposium on Biomedical Imaging.2008.
[14]CHINZEI K,HATA N,J OLES Z F A,et al.M R compatible sur gical as-
sist r obot:system integra tion and prelimina ry feasibility study[M].
B erlin:Spr inger,2004:921-930.
[15]PENG C hen-ga,ZHANG Hui,KIM H S,et al.IGSTK:fr amewor k and
example application using an open sour ce toolkit for image-guided sur-gery applications[C]//Proc of S PIE Medical Imaging v ol6141.2006: 590-598.
[16]CLEARY K,Insight S oftwar e C onsor tium.IGSTK:the book[EB/OL].
(2007-02-02)[2008-07-15].http://www.igstk.or g/documentation.
htm.
[17]GARY K,BLAKE M B,IBANEZ L,et al.IGS TK:a n open source soft-
ware platform for image-g uided surger y[J].IEE E Computer,2006, 39(4):46-53.
[18]ES TE PAR R S J,STYLOPOULOS N,ELLIS R,et al.Towar ds sca rless
surger y:an endoscopic ultrasound naviga tion system for tr ansgastr ic
a ccess procedures[J].Co mputer Aide d S urgery,2007,12(6):
311-324.
[19]NDI C orporation.IGS TK:an open source softwar e toolkit for image-
g uided surger y[E B/OL].(2007-10)[2008-07-20].http://www.
/medical/infocus/2007-10/article-4.php.

1
3
2

第6期周振环,等:ITK和VTK及其应用新进展。

相关文档
最新文档