利用VTK的DICOM图像的显示与信息读取
Displaying the DICOM Image and Reading Information from DICOM Image by VTK
ZHANG Xiang1,2, CHEN Sheng-yong1
(1puter Science and Technology Campus of Zhejiang University of Technology, Hangzhou 310014, China; 2rmation and Engineering Campus Jinhua College of Vocation and Technology, Jinhua 321017, China)
: DICOM file is special use for medical image. It's the element task to pick out data from DICOM file in image processing. VTK is strong in image processing, visualization and so on. There are more classes and functions for DICOM in the version after 5.0. It appears easy to read the information from DICOM file. DICOM标准(digital imaging and communications in medicine)由美国放射学院(American College of Radiology,ACR)和国家电气制造商协会(National Electrical Manufacturers Association,NEMA)共同制定,包含医学的数字成像和通信两方面,该标准的制定统一了各种数字化影像设备的图像数据格式,有效解决了不同成像设备间的数据传输中存在的障碍。DICOM格式可以包含大量有用的医疗相关信息, 因此
也造成了其文件格式的复杂性,DICOM图像读取和显示比其他格式的图像难度大,通用的图像处理软件和图像浏览器无法读取DICOM图像。大型医学成像设备公司均设计了与设备相配的专用软件进行DICOM图像的读取和显示,应用上对DICOM格式转换及附加信息接口设计进行了研究,更多的建立局限在DICOM格式上,读取过程复杂繁琐,不利于软件的复用和封装。VTK5.0以上提供了类和函数来读取DICOM文件,避免了许多前置操作,即可提取相关图像和数据信息,使工作重点放在图像处理和可视化等后续过程中。 1 DICOM文件格式
图像文件格式通常由两部分组成:存参数的 header 和图点数据(pixel data)。BMP、 JPEG、TIFF 类格式, header 只描述图像基本参数,包括几行、几列、每点用了几位、有否压缩、调色板等,Header 通常固定长度。而医疗影像需要许多其它参数,包括病人基本资料、检验基本资料、系列资料、位置资料等。而且每种模态(modality)和每种图像(image)所需内容不一样。因此,一般的图像格式不能使用,DICOM格式为医学图像专用存储格式,编程首要明确的是DICOM文件格式,如图1与图2所示。
文件结构中各段说明如下:
tag:标签。4字节无符号整数。DICOM所有数据元素都用标签来唯一表示。标签分为两部分,用“(组号,元素号)”的方式
表示,组号高2位,元素号低2位。
vr:数据类型。长度为2的字符串。例如,数据元素的vr为“da”,表示该数据元素中存储的数据为日期型数据。其次,vr为可选项,取决于协商的传输数据格式。
valuelength:数据长度。数据元素的数据域中数据的长度(字节数)。
valuefiled:数据域中包含的数据元素的数值。 文件头说明:
(1) 除了128字节的文件前言和4字节的DICOM前缀外,所有其它的文件头元素都必须采用上面介绍的格式编码,各数据元素排列的顺序按照标签数值从小到大的传输格式编码。 (2) 每个文件头元素的长度必须为偶数,否则应该按照规定补充一个字节。 数据集说明:
数据集是由一系列数据元素按照tag从小到大的顺序排列而成,数据包括医学图像,与医学图像相关的信息,如病人姓名、图像大小等。
2 vtk可视化工具包
VTK (visualization Toolkit)是一套进行数据可视化的通用开发工具包,提供了一个用于三维计算机图形、图像处理及可视化的开放源码的软件类库。它吸收了上百种图像处理和图形生成算法,采用面向对象技术开发,可在C++、Tcl,Java和Python
语言环境下使用。它可在多平台下运行、图像处理功能强大、使用方便,因此在医学图像处理领域得到了广泛的应用。 3 利用vtk访问DICOM文件 1) vtk图像可视化基本流程
vtk图像可视化基本流程采用流水线(pipeline)机制,如图3所示。
Source:数据源。可从外部读入或根据参数生成。 Filter:过滤器。对数据的预处理,可含多个输入,产生多个输出。是个独立计算模块。
Mapper:映射器。将图像数据转换为图形数据。 Actor:演员。表示要绘制的对象。
Renderer:绘制器。控制演员等在绘制窗口的绘制过程,一个Renderer可以演示多个Actor。
Renderer Window:绘制窗口。实现绘制输出的计算机窗口。 Renderer Window Interactor:绘制窗口交互器。管理对演员的交互操作。 2) DICOM图像显示
根据vtk图像可视化的流水线机制,图像读取显示的流程上依次为数据源、映射器、演员、绘制、交互几个基本环节。在可视化开发环境下建立工程,定义流水线pipeline上各个点即对象,包括vtkDICOMImageReader、vtkImageMapper、vtkActor2D、vtkRenderer、vtkRenderWindow 和
vtkRenderWindowInteractor,通过系列流程(图4)读取显示DICOM图像。
3) 相关医疗信息提取
DICOMImage中包含了图像相关的医疗信息,可以通过vtkDICOMImageReader类封装的函数来提取DICOM文件中的医患等信息。相关函数如表1所示。 4 结束语
综上,本文分析了医学图像的专用格式DICOM数据的读取及编程中面临的问题,分析了其存储结构,介绍了图像处理功能强大的可视化三维工具vtk,包括5.0以上版本新增的处理DICOM格式的类及相关方法及可视化机制,对可视化编程初学者熟悉vtk的使用具有积极的作用。不过vtk本身的DICOM数据的读取功能还是有限的,实际使用中可以与其它工具结合,取长补短,简化编程,提高编程效率。