三维CT数据任意切片的交互式获取技术

时间:2022-10-15 06:30:07

三维CT数据任意切片的交互式获取技术

摘要:基于VTK开发包提出了一种交互式获取三维CT数据任意切片的方法。首先由CT图像序列构造出三维体数据,并实现了体数据切片的显示,然后利用VTK的交互功能实现体数据任意切片信息的获取和显示。结果表明该方法有助于医生从不同截面对同一组织进行观察和诊治。

关键词:三维CT数据;切片;交互式控制;VTK

中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)23-1012-02

A Method of Interactively Obtaining Arbitrary CT Slice

FENG Wei-qian,HUANG Zhan-peng,HUANG Mao-sheng

(College of Medical Information Engineering, GuangDong Pharmaceutical University, Guangzhou 510006, China)

Abstract: A method that interactively obtains arbitrary CT slice based on VTK environment is presented. Firstly 3D volume-data is constructed from series of CT slices and CT slices is visualized. Then arbitrary slice of the volume-data is interactively obtained and rendered by using VTK. Experiments show that the interactively obtained slice of same tissue can assist the doctor to observe and diagnose.

Key words: 3D CT data; slice; interactive control; the visualization toolkit

1 引言

随着医学影像技术的发展,如CT和MRI等设备的研制成功并投入使用,给疾病的检查与诊断带来了革命性的变革,这些成像系统为医生提供了丰富的组织、器官的断层图像信息,帮助医生更加迅速、准确的诊断疾病。然而现在医生只能根据横断面进行观察,如何利用三维医学设备获取的信息,能够交互式地根据需要查看任意方位的切片信息,以更好地辅助医生的诊断,提高诊断的准确性[1]。本文基于VTK三维可视化开发包实现了三维CT数据的任意切片信息的获取技术。

2 VTK中三维物体的显示与切割

本文利用强大的三维可视化工具VTK实现三维医学CT数据的读取和显示,然后设计基于鼠标的交互式工具,用户可以根据需要用鼠标调节截面的位置,获取CT数据中任意切片的图片信息,并将结果显示出来。

2.1 三维可视化工具VTK

VTK(Visualization ToolKit)是一个用于计算机三维图形,可视化和图像处理的软件系统[2]。Visualization ToolKit是在面向对象原理的基础上设计和实现的,它的内核是用C++构建的,提供了300 多个类,还包含有几个转换界面,因此也可以自由的通过Java,Tcl/Tk和Python各种语言使用

Visualization ToolKit。 Visualization ToolKit 在实现上是比OpenGL 更高层次的抽象,这意味着它能够更方便的进行可视化工作。Visualization Toolkit 是给从事可视化应用程序开发工作的研究人员提供直接的技术支持的一个强大的可视化开发工具,其基本的绘制流程如图1所示。

2.2 任意切片平面的获取

切片P沿法向量n的方向在三维体内平移距离d到切片Q的位置。切片上相应点C1(C1x,C1y,C1z)与C2(C2x,C2y,C2z)坐标满足如下关系:

切片P、Q经过同一点C(Cx,Cy,Cz),射线L过点C且平行于Z轴正方向,切片P在三维体内沿L顺时针旋转一个角度0到切片Q的位置,则两切片法向量n1( n1x,n1y ,n1z)和 n2 (n2x,n2y, n2z)满足如下关系:

若将切片P沿过点C且平行于其它坐标轴正方向的射线旋转,只需改变矩阵T、R(0)即可得到新位置处切片的法向量[3]。通过对三维体中某个已获取切片的交互操作(如平移、旋转或二者结合等),由式(2)、(3)我们可得到新位置处切片经过的点坐标或者法向量,再根据点法式可得到相应的切片方程,运用图2所示的模型进行重绘,可获得三维体内其它方位的切片。

3 系统实现

本文利用VC 6.0开发工具结合VTK软件开发包实现任意切片的获取。

3.1 开发环境的设置

1)选择Tools->Options->Directories,选择Show Dirctories for 的Include files,添加vtk安装目录中的Include文件夹,就是.h后缀的文件。2)选择Tools->Options->Directories,选择Show Dirctories for 的Libraries files,添加vtk安装目录中的Lib文件夹和bin文件夹。3)打开 c:\vtk\bin\bin\debug 个文件夹选择其中所有的DLL 后缀的文件全部复制到c:\windows\system 下。

3.2 主要程序实现代码

//读取三维的CT数据,设置数据所在的路径及数据的长、宽和高

vtkVolume16Reader* volumeData;

volumeData ->SetFilePrefix("headsq/quarter");

volumeData ->SetDataDimensions(64, 64);

volumeData ->SetImageRange(1, 93);

//显示三维交互式工具,设定其交互式场景、插值方式、源数据集和切片的初始位置

vtkImagePlaneWidget* planeWidgetX;

planeWidgetX->SetInteractor(iren);

planeWidgetX->SetResliceInterpolateToNearestNeighbour();

planeWidgetX->SetInput(v16->GetOutput());

planeWidgetX->SetPlaneOrientationToXAxes();

//将获取的CT图片信息根据查找表的内容转换成图片

vtkImageMapToColors* colorMap;

colorMap->SetInput((vtkDataObject*)planeWidgetX->GetResliceOutput());

//设定图片的查找表,可以根据需要有选择的显示某部分的信息

colorMap->SetLookupTable(lookupTable);

colorMap->SetActiveComponent(0);

colorMap->SetOutputFormatToLuminance();

//将获取的切片进行显示

vtkImageActor* imageActor;

imageActor->SetInput(colorMap->GetOutput());

显示效果如图3所示。图3(a)为程序的运行界面,鼠标右键实现窗位和窗宽的控制,按住鼠标右键向下和向右移动鼠标分布提高了下界和上界的值,可以根据需要选择感兴趣的数据范围。通过点按鼠标左键旋转体数据中的切割面,可以实现交互式地获取任意切片的数据,图3(b)和图3 (c)分别是横截面和 矢状面,而图3(d)是交互式选择任意切片的效果图片。

4 结束语

VTK是一个用于可视化应用程序构造与运行的支撑环境,它是在三维函数库OpenGL的基础上采用面向对象的设计方法发展起来的。它将我们在可视化开发过程中会经常遇到的细节屏蔽起来并将一些常用的算法封装起来,以类的形式给以支持,可以高效的建立起各种的可视化流程。基于VTK强大的开发包设计出可以获取任意切片的系统,能够改变当前只依据横截面进行诊断的现状,从各个方位进行查看,能够有效地提高诊断的准确率。

参考文献:

[1] 管伟光.体视化技术及其应用[M].北京:电子工业出版社,1998.

[2] Will S,Martin K,Lorensen B.The Visualization Toolkit-An Object―Oriented Approach To 3D Graphics[M].Kitware: Third Edition,2002.

[3] Hearn D,Pauline puter Graphics(C VERSION,SECOND EDITION)[M].Prentice Hall,1998:409-422.

上一篇:基于MSP430F1101的智能学习型红外遥控器的设计 下一篇:一种武器装备稳态可用度仿真计算的方法与程序...