2
2
2
2
2
基于 MC算法的 CT图像三维重建
李 金 ,胡战利
(哈尔滨工程大学 自动化学院 ,黑龙江 哈尔滨 150001)
摘 要 : 医学图像三维重建利用二维医学图像序列重建出三维模型 ,为医生提供直观 、全面 、准确的病灶和正
常组织信息. 采用 VTK库进行医学数据可视化 ,分析了 VTK可视化工具包的机制 ,介绍了 MC算法的机理与实
现过程. 基于 MC算法 ,使用三维可视化工具包 VTK结合 VC + + 6. 0对基于 D ICOM 格式的 CT图像序列进行
三维重建 ,并给出了实验结果. 重建结果表明 ,采用 VTK进行医学图像三维重建可以帮助医生明确诊断和制定
正确的手术方案.
关键词 : 三维重建 ; VTK;MC算法 ; CT图像
中图分类号 : R319 文献标识码 : B
第 35卷第 4期
2008年 4月
应
技
App lied Science and Technology
科
用
Vol. 35, №. 4
Ap r. 2008
文章编号 : 1009 - 671X (2008) 04 - 0030 - 04
3
D reconstruction of CT image based on MC algor ithm
(College of Automation, Harbin Engineering University, Harbin 150001, China)
L I J in, HU Zhan
li
D reconstruction of medical images from 2
Abstract: 3
D medical image sequence can p rovide the useful and p re
cise information about focus and body tissues for doctors. The medical data visualization is comp leted with VTK li
brary. The mechanism of VTK visualization tool package was analyzed. The mechanism and the realization p rocess
of the MC A lgorithm were described.
D reconstruction for CT im
age sequence in D ICOM format was performed by using VC + + 6. 0 software and VTK tool package. Experimental
results show that VTK
D reconstruction of medical images can help doctors diagnose patients and determ ine
an app rop riate surgical p lan.
Keywords: 3
D reconstruction; VTK; MC algorithm; CT image
In this paper, on the basis ofMC algorithm , a 3
based 3
在目前的影像医疗诊断中 ,主要是通过观察一
组 CT、MR I的二维切片图像发现病变体 ,但这只能
依赖于医生丰富的读片经验. 利用医学可视化技术
从一系列连续的二维切片重建出三维人体器官 ,可
以真实再现物体的本来面貌 ,辅助医务人员对病变
体或感兴趣的区域进行定量直至定性分析 ,从而可
以大大提高医疗诊断的准确性 [ 1 ]. 我国学者自 20世
纪 90年代初开始进行这方面的研究 ,其技术水平正
在从后处理向实时跟踪和交互控制发展 ,但目前国
内尚无成熟的商用系统 [ 2 ]. 因此 ,开展这方面的研
究具有重要意义. 文中基于 VTK ( visualization tool
kit) ,运用 VC + + 6. 0设计和实现了医学图像的三
维重建与可视化. 通过人机交互 ,临床医生可以对图
像进行旋转 、缩放 、移动等操作 ,使图像能直观地显
示人体组织内部的复杂结构 ,从而帮助医生明确诊
断并指导手术.
1 三维可视化工具 VTK
目前国内比较常用的三维可视化工具或多或少
都存在一些如代码执行效率低 ,计算能力差等缺点.
而文中所使用的三维可视化工具 VTK是一种基于
OpenGL 的用于 3D 图形学 、图像处理及可视化的一
种工具.
VTK的全称为 V isualization Toolkit[ 3 ] ,是一个用
收稿日期 : 2007
作者简介 :李 金 (1962
11.
09
) ,女 ,教授 ,主要研究方向 :图像处理 , E
mail: lijin999@ hotmail. com.
2
第 4期
李 金 ,等 :基于 MC算法的 CT图像三维重建
·13·
于科学计算可视化的工具包 ,最新版本为 VTK5. 0.
VTK是 Kitware公司推出的一个支持多平台 (Unix,
L inux和 W in32 )的软件系统. VTK开放所有源码 ,
支持三维计算机图形学 、图像处理和可视化等. VTK
包括一个 C + +类库和一个解释性接口层. 类库的
设计和实现都是基于面向对象原则. VTK不仅提供
可视化几何图形 ,而且还支持大量的可视化算法 ,包
括标量 、向量 、张量 、纹理和体元的算法 :网状三维物
体的平滑剪切 ,多边形减少等高级建模技术.
VTK程序的显著特点就是管道 (p ipeline)化 ,即
一个 VTK程序实际上就是一个完整的渲染管道. 渲
染管 道 的 前 段 称 为 可 视 化 模 型 ( the visualization
model)管道 ,由数据源 ( source) 、读取器 ( reader) 、过
滤器 ( filter)等节点组成. 渲染管道的后段为图形模
型管道 ( the graphic model) , 组成节点有演员 ( ac
tor) 、光线 ( light) 、照相机 ( camera) 、属性 (p roperty) 、
映射器 (mapper) 、绘制器 ( renderer) 、绘制窗口 ( ren
der w indow)等. 利用渲染管道 VTK可以完成对点 、
线 、面等数据的三维重建工作.
利用 VTK实现 CT图像的三维重建 ,从算法和
数据结构来看 ,就是一个读取数据和图形显示问题.
对已获取的 CT图像 ,因为它们符合 D ICOM3. 0 标
准 ,读取它们相对容易. 编程时只要指定必须的参
数 ,就可以实现对单张 CT图像乃至 CT图像序列的
读取.
VTK中 ,为了有效地管理庞大的类库 ,按照某
一个类在类库中的作用 ,将类分成以下几部分 :公共
部分 ( common) 、图形处理部分 ( graphics) 、图像处理
部分 ( imaging) 、文 件 读 写 部 分 ( I/O ) 、绘 制 部 分
( rendering) 、数据转换部分 ( filtering)等 ,每部分被
编译成相应的动态连接库. 各部分在类库中的层次
如图 1所示.
图 1 VTK各部分在类库中的层次
2 Marching Cubes算法
Marching Cubes算法 [ 4 ]是 W. Lorensen等人于
1987年提出来的一种三维重建方法. 因为其原理简
单 ,容易实现 ,因此得到了广泛的应用 ,被认为是至
今为止最流行的面显示算法之一.
MC算法的基本原理是 :在三维数据场中构造
等值面 ,找出经过该等值面的体元 ( cubes)
,求出该
体元内的等值面并计算出相关参数 ,便于使用常用
的软件包或图形硬件绘制出等值面. 在医学应用上 ,
采用 MC 算法可重建人体外轮廓 、内部组织器官 ,使
医生直接在 3D 图像上就可以观察感兴趣的器官与
周围组织之间的空间关系. MC 算法充分利用图形
显示的硬件加速功能 ,重建的图像质量较高.
Marching Cubes算法的过程可以描述如下 :
1) 每次读出 2张切片 ,形成一层 ( layer).
2) 2张切片上下相对应的 4 个点构成一个立
方体 ( cube) ,如图 2所示.
图 2 Cubes示意图
3) 从左至右 、从前到后的顺序处理一层中的立
方体 (抽取每个立方体中的等值面 ) ,然后从下到上
顺序处理到 n - 1 层 ,算法就结束 ,故名为 Marching
Cubes.
对于每一个立方体而言 ,它的 8个顶点的灰度
值可以直接从输入数据中得到 ,要抽取的等值面的
阈值由用户指定 ,也就是所希望提取出来的物质的
密度值 ,比如要提取出骨骼 ,阈值就要相对大一些 ,
然后根据体数据的信息就可以提取出等值面的三角
网格表达.
如果一个顶点的灰度值大于阈值 ,则将它标记
为黑色 (marked vertex) , 而 小 于 阈 值 的 不 标 ( un
marked vertex) ,如图 3所示.
2
应 用 科 技 第 35卷
·23·
7) 用 vtkCamera类来设置视角位置 ,观察对象
位置和焦点.
8) 用 vtkRenderW indow Interactor对绘制结果进
行交互.
3. 3 VTK与 W indows窗口的绑定
由于 VTK是一个跨平台的系统 ,不是专门针对
MFC平台设计的 ,因此 ,要将 VTK的渲染窗口嵌入
MFC的单文档框架 ,还需要进行额外的工作.
VTK与 W indow s窗口绑定代码如下 :
vtkRenderer
aRenderer = vtkRenderer: : New ( ) ;
vtkRenderW indow
renW in = vtkRenderW indow: : New ( ) ;
renW in
>AddRenderer( aRenderer) ;
vtkRenderW indow Interactor
iren = vtkRenderW indow Interactor: : New ( ) ;
iren
> SetRenderW indow ( renW in) ;
>m _hW nd) ;
> SetParentId ( this
renW in
通过以上的绑定设置 ,即将 VTK渲染窗口对应
的可视化输出嵌入 MFC的单文档框架对应的输出
窗口.
图 3 M arked Vertex与 Unmarked Vertex
3 CT图像三维重建的实现
3. 1 CT图像来源
读取的数据为基于 D ICOM 标准的人体头部 CT
图像 ( 512 ×512 ×175) ,其中空间分辨率为 512 ×
512,扫描间隔 1mm ,共 175张连续的 CT图片.
D ICOM ( digital
imaging and communication in
medicine)是美国放射学会 (ACR )和美国国家电器
制造协会 (NEMA )在参考了其他相关国际标准的基
础上 ,于 20世纪 90年代中期指定的医学数字元影
像存盘和传输标准 [ 5 ]. D ICOM 为不同厂家生产的各
种医疗影像设备 (如 CT、MR I、超声波等 )提供了接
口标准和交互协议 ,它已经逐渐发展成为医学影像
学领域的国际通用标准 [ 6 ].
3. 2 应用 VTK编程实现 CT图像三维重建
3. 4 三维体的动态显示控制
在三维重建的实现中 ,采用移动立方体 (marc
hing cube)算法 ,在 VTK中 , vtkMarchingCubes类实
现了这一算法. 关键步骤如下 :
1) 用 vtkRenderer类创建一个绘制对象.
2) 用 vtkRenderW indow类创建一个绘制窗口 ,
函数 AddRenderer( )将绘制对象加入绘制窗口.
3) 用 vtkD ICOM ImageReader读取 CT图像序列 ,
函数 SetD irectoryName ( )设置读取图像序列的路径.
4) 用 vtkMarchingCubes类抽取等值面 ,根据灰
度的不同 ,分别从切片数据中提取出皮肤和骨骼. 函
数 SetInputConnection ( ) 设 置输 入图 像序 列数据 ;
SetValue ( )设置抽取的组织轮廓线灰度值.
5) 用 vtkStripper类和 vtkPolyDataMapper类来
建立三角带对象和数据映射对象.
在 VTK中 , 应用 vtkRenderW indow Interactor可
以实现对重建后三维体的动态显示 :如平移 、缩放 、
旋转等. V tkRenderW indow Interactor响应预先定义的
一系列行为动作. 它允许你控制相机和角色 ,并提供
2种交互风格 :位置敏感型以及动作敏感型. 可以通
过键盘上的 J (位置敏感 )键和 K (动作敏感 )键进
行风格转换. 在位置敏感模式下 ,只要鼠标被按下 ,
那么动作就会连续发生. 而在动作敏感模式下 ,只有
当鼠标按钮被按下并且指针移动时 ,才会发生相应
的动作.
另外按键 C与按键 A 会产生相机 ( camera)模
式和角色 ( actor)模式的转换. 在相机模式下 ,鼠标
行为影响相机的位置和焦点的位置 ;在角色模式下 ,
鼠标行为影响处在鼠标指针下的角色.
6) 用 vtkActor类来实现图形的绘制 ,函数 set
Mapper( )接收几何数据的属性 ,并分别对骨骼和皮
肤设置不同的颜色和透明度.
鼠标左键一按下时 ,则在相机模式下会发生相
机围绕者它的焦点旋转 ;如果是角色模式 ,角色绕其
坐标原点进行旋转.
2
2
2
·33·
第 4期
李 金 ,等 :基于 MC算法的 CT图像三维重建
< shift > +左键一按下时 ,如果是相机模式 ,则
平移相机 ;如果是角色模式则移动角色.
鼠标右键一按下时 ,如果是相机模式则是前后
移动相机 ,如果是角色模式 ,则角色按比例进行缩
放. 当鼠标位置在视口的上半部分 ,则对物体进行放
大 ,反之 ,则缩小.
3 三维重建结果
运行程序的电脑配置如下 :
处理器 : AMD A thlon ( tm ) 64 Processor 3500 + ,
CPU: 2. 21 GHz,
内存 : 512 MB
显示卡 : MSI NX7600 GS的.
基于 Marching Cubes算法 ,使用三维可视化工
具 VTK,运用 VC + + 6. 0对基于 dicom 格式的一系
列连续 CT图像进行三维重建. 图 4~7展示了三维
重建的结果.
图 6 骨组织重建 :俯视
图 7 皮肤 、骨骼二重重建
4 结束语
设计程序实现了从一系列连续的二维切片重建
出三维人体器官 ,可以真实再现物体的三维面貌 ,通
过人机交互 ,临床医生可以对图像进行旋转 、缩放 、
移动等操作 ,使图像能直观地显示人体组织的复杂
结构 ,从而帮助医生明确诊断并指导手术.
图 4 表皮重建
参考文献 :
[ 1 ] 田 捷 ,包尚联 ,周明全. 医学影像处理与分析 [M ]. 北
京 :电子工业出版社 , 2003.
[ 2 ] 罗述谦 ,周果宏. 医学图像处理与分析 [M ]. 北京 :科学
出版社 , 2003.
[ 3 ] SCHROEDER W J. The VTK U ser’s Guide: 4 th ed [M ].
New York: Kitware, Inc, 2001.
[ 4 ] LORENSEN W E, CL INE H E. Marching Cubes: a high
resolution 3D surface construction algorithm [ J ]. ACM
Computer Graphics, 1987, 21 (4) : 163
170.
[ 5 ] 谢长生 ,熊华明 ,陈 颉. D ICOM 图象显示的研究与实现
图 5 骨组织重建 :正面
[ J ]. 计算机工程与科学 , 2002 (6) : 38
41.
[ 6 ] 陈贤志. 医学数字图像通讯 (D ICOM )标准的介绍 [ J ].
中国医学影像学杂志 , 1995 (4) : 204
207.
[责任编辑 :李玲珠 ]