医学影像图像处理实践教程
上QQ阅读APP看书,第一时间看更新

第2节 常用医学影像处理工具

一、基本图像处理语言

医学图像处理的各种技术方法需要借助计算机语言、以函数或软件的形式来简洁高效地实现。多数计算机语言均可进行图像处理编程实现,但并不都是简便易用的。我们基于影像技术从业人员的学习背景和理论基础,推荐使用Matlab平台,它是一种介于语言和软件的中间件,其函数的高度整合和语言的简便易懂,更适合进行实用的医学影像图像处理。

Matlab是一种功能强大、运算效率高的数字工具软件,全称Matrix Laboratory。起初它是一种专门应用于矩阵运算的软件,诞生于20世纪70年代,由Cleve Moler博士及其同事开发。经过多年的发展,Matlab已演变成可以解决多数科学问题计算的综合性软件,目前已升级到Matlab 2011版本。

Matlab的基本数据单位是矩阵,其指令表达式与数学、工程中常用的形式十分相似,所以用Matlab来解算问题要比用C、VB等语言简单方便。同时在新版本的Matlab中,也支持对C、JAVA、C++的直接调用。用户也可以将自己编写的实用程序导入到Matlab函数库中方便自己以后调用。Matlab除了数值计算能力外,还提供了专业水平的图像处理、符号计算、文字处理、可视化建模仿真和实时控制等功能。

目前的Matlab版本包括拥有数百个内部函数的主箱和三十几种工具箱(toolbox)。工具箱又可以分为功能工具箱和学科工具箱。功能工具箱用来扩充Matlab的符号计算、可视化建模仿真、文字处理及实时控制等功能。学科工具箱是专业性比较强的工具箱,如图像处理工具箱、控制工具箱、信号处理工具箱、通信工具箱等。这些工具箱都是由特定领域的专家开发的,用户可以直接使用而不需要自己编写代码。目前,Matlab主要有数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、影像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通信、电力系统仿真等工具箱。

Matlab是一个高级的矩阵/阵列语言,有控制语句、函数、数据结构、输入、输出和面向对象的编程特点,其语言规则和编程方法简单易学,Matlab语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似。用户可以在命令窗口中输入语句并执行,也可以先编写好一个大的复杂应用程序(M文件)后,再作为函数调用运行。

由于Matlab中将所有的数据以数组的形式来表示和存储,矩阵和数组是Matlab的核心,所以Matlab具有强大的数字图形图像处理能力。同时,Matlab带有相应的影像处理工具箱(image processing toolbox)和影像处理函数,简化了编程过程,可以十分方便地用于医学影像处理演示和练习。

Matlab可在编辑窗口中直接编程运行或调用影像处理函数,影像及其处理后效果一般在Figure窗口中显示。常见的影像处理操作(可调用的影像处理函数)有:

影像读取imread('文件名.格式'),影像格式必须是JPEG、BMP、PCX、TIFF等Matlab支持的影像文件格式,以及二值影像、索引影像、灰度影像、RGB影像和多帧影像阵列等Matlab支持的影像类型。如:I=imread('rice.png'),意为读取影像rice.png,并赋给矩阵I。

影像的查询imfinfo('文件名.格式'),在Matlab中查询一个影像文件的信息,对应于所有影像处理工具箱中所有支持的影像文件格式。如:info=imfinfo('rice.png'),即查询影像rice.png的相关信息,并赋给info。

影像的显示函数imshow('文件名.格式'),显示影像的最基本的手段。该函数还产生了影像对象的句柄,并允许对对象的属性进行设置。显示二值影像使用imshow(BW),BW为黑白二值影像矩阵;显示索引影像使用imshow(X,map),X为索引影像矩阵,map为色彩图示;imshow(RGB):显示RGB影像,RGB为RGB影像矩阵;对影像灰阶进行部分显示使用imshow(I,[low high]),其中[low high]用于定义待显示灰阶的范围。

Matlab还提供了若干函数,用于影像类型的转换。gray2ind灰度影像或二值影像向索引影像转换;im2bw设定阈值将灰度、索引、RGB影像转换为二值影像;im2double将影像数组转换为double型;im2uint8将影像数组转换为uint8型;ind2gray将索引影像转换为灰度影像等。

Matlab针对影像的各种处理函数有数百种之多,并且还在不断丰富。我们可以通过了解函数的M文件来详细学习和掌握各种影像处理函数的使用,同时还应在不断的处理实践中熟练应用。下例是调用函数对影像进行读取、点运算、精度转换并最终显示的Matlab程序示例,Matlab更详细的影像处理实现将在以后各章中给出。而本书实验示例的编写,也主要基于Matlab。

对于逐步趋于标准化的医学影像,Matlab也可以进行直接读入、读出和各种处理,并且针对医学图像信息增强和三维可视化的Matlab程序也层出不穷。以7.1版本为例,针对数字医学成像通信标准(digital imaging and communication of medicine,DICOM)影像的处理语句有:Dicomread、Dicomwrite、Dicominfo、Dicomanon等,对DICOM图像的读取、信息获取都实现了一条函数完成。如:

可将DICOM文件的影像数据读出并赋给I。

二、常用影像处理软件

随着断层成像技术的发展,医学影像呈现出海量化的趋势。如现有256排螺旋CT扫描肺部组织,采用最小的层厚可能会得到多达几百幅断层影像。磁共振的fMRI和DTI成像,也往往一个序列有几十幅甚至上百幅影像。这种情况下,再对医学图像进行单幅的Matlab编程或函数调用处理,显然已经不太可能。一些可以批量或自动进行图像处理的软件平台应运而生,如EZDICOM、Osiris、MITK等,这些平台可以快捷地实现医学图像的读取、增强和融合等。

同时,海量的小层间隔断层图像序列,甚至无间隔断层图像序列,使得三维图像可视化和重建更加清晰和准确。在计算机硬件对图形图像的显示能力提高的前提下,医生对很多影像的观察已经由二维跨入三维,部分CT系统甚至可以在扫描过程中实时进行三维显示。这也促使大量的能快速读取断层序列,并进行三维定量分析和处理的软件产生,如MIMICS、3D Doctor、3D slices、Amira等。

上述软件虽然很多处理是后台进行的,用户仅能在有限程度上调整处理的具体参数;但基于实用目的,我们也会介绍部分上述软件,并提供几个利用软件进行序列影像处理的实验示例,主要集中于三维重建和建模。

(一)MIMICS

MIMICS是Materialise公司推出的一套高度整合、快捷易用的三维重建和处理软件。它可以快捷导入CT、MRI等断层序列图像数据,对序列图像进行基于阈值和形态学算法的组织分割,进行面绘制为主的三维重建,还可进行大规模数据的转换处理。

MIMICS对影像技师和医师最直接的帮助就是可以通过简单的阈值分割设定后,快速获得直观的三维影像,并进行定量测量和分析。即使是上百幅的DICOM图像序列,用户也可以在PC上通过简单操作,获得三维信息。这种方式等同于将成像系统的工作站功能转移到了PC上,用户携带断层图像,就可以在软件中实现三维浏览。

MIMICS还有一个重要功能就是建模和模型分析。对于生成的三维组织影像,如果需要进行力学仿真计算研究,在MIMICS中可以将三维影像转化为实体模型,便于进行有限元分析(一种力学仿真分析方法)和快速成型。这将医学影像延伸到了分析和治疗的领域,我们可以将MIMICS生成的骨骼或器官实体模型,导入有限元分析软件,仿真模型受力后的变化,并将结果应用于人体治疗和康复。

MIMICS还具有手术模拟模块,它是手术模拟应用的平台,可用人体测量分析模板进行细部的数据分析,对骨切开术及分离手术以及植入手术进行模拟,或解释手术的过程。

(二)3D Doctor

3D Doctor是Ablesw公司的3D处理软件。MRI、CT、PET、显微镜等医学影像可以被该软件识别,同时也可应用于科学和工业成像测量。对于医学影像处理应用,3D Doctor的主要功能同MIMICS类似,此外还具有融合、配准和三维内镜重建等序列图像处理功能。3D Doctor的基于向量的编辑工具,可以方便地完成对影像的处理、测量以及定量分析。3D Doctor提供了类似于Basic的脚本语言,图像处理专家也能用它们编制自己的程序,充分利用软件所具有的先进功能。