前言
国内医学图像编程一般采用VC++6.0来开发,其开发周期长,代码难以维护,特别是三维绘制速度慢、质量差;在使用OpenGL之后,三维绘制速度有了较大程度的提高,显示质量也得到了不断改善,但医学图像编程的浪潮并非如大多程序员期待的那样一帆风顺,主要原因有三个:第一,OpenGL虽然存在很多优势,但编程门槛较高,代码实现更注重底层,编写代码复杂;第二,软件开发周期长这一令厂商和程序员头疼的问题也并未解决,致使无法保障软件如期投入市场;第三,常规和经典算法没有得到重复利用。
美国Kitware公司1998年推出的三维可视化工具箱(VisualizationToolkit,VTK)和2002年推出的医学图像分割与配准工具箱(InsightSegmentationandRegistrationToolkit, ITK)很好地解决了上述问题。首先,VTK采用完全的面向对象编程风格,不仅代码编写结构简单,还封装了各种三维、二维图像的显示算法和专用图像的读写对象,极大地方便了2D/3D图像的绘制;其次,ITK采用泛型编程风格,编程灵活,也封装了大量的图像分割和配准算法,不仅使算法得到了重复利用,也缩短了软件开发周期;这两种工具包在欧美国家已广泛推广,并利用其开发性在不断完善和丰富。
本书主要围绕国内外现有资料,将VTK和ITK的内容以具体用例的形式展现出来,代码完整。本书的主要章节及内容安排如下:第1章VTK与ITK的安装与测试,详细介绍了VTK和ITK的安装方法,以及在VC++2008上面的使用用例;第2章VTK数据操作,通过本章可以了解VTK的编程结构(数据流模型);第3章VTK图形与图像,通过本章不仅可以接触到VTK同MFC的混合使用,还可以了解常规的面绘制、体绘制等方法和模型;第4章ITK数据表达,介绍了如何采用ITK描述一幅图像结构,以及常用的数据表达单元的使用;第5章滤波,本章开始主要介绍对图像处理的主要用例,主要包括门限处理、边缘检测、投射和亮度映射、梯度的应用、均值/中值滤波、数学形态学在图像处理中的应用、投票滤波、平滑滤波,以及几何变换和提取图像信息等用例;第6章ITK配准,在本章中将介绍ITK的配准框架、多形态配准、居中变换、多分辨率配准、优化器、形变配准、虚拟变形配准及基于模型的配准方法用例;第7章图像分割,主要用例包括基于区域生长的分割、基于分水岭的图像分割、基于水平集的分割、基于混合法的图像分割及特征提取等算法;第8章统计,进一步介绍了数据容器、统计的算法和函数、图像直方图、图像信息理论和分类等用例。
本书以具体用例介绍为主要特点,随书光盘包含了完整的代码和可执行程序,可供读者运行和上机实验。本书由周振环、郑小中、赵明编著。本书以实验为主,覆盖面广,限于篇幅主要侧重用例,可作为有VTK、ITK基础的用户的用户手册。此外,限于作者水平,书中难免存在错误,敬请读者批评指正。
本书由深圳市科技计划项目“医学图像处理算法平台(SY200806270054A)”和深圳职业技术学院重点项目“立体定向手术计划系统(2208K004CD)”资助。
作者
2011年7月