当前位置:首页 > 作文大全 >

基于GPU加速的虚拟内窥镜漫游技术研究

发布时间: 2022-08-24 18:10:03 浏览:

zoޛ)j馑QT?3}]L5N7u^M9N?^r'*^,rrx-ygZ ɶy'?9-xF!4faz|Rr(ȝ+bq')zz(
%'+ryM!h Z.^4@vr检查需要耗费高昂的费用。随着计算机技术、虚拟现实技术、医学影像技术的发展,虚拟内窥镜技术[1]应用而生。

虚拟内窥镜是指通过计算机图形学方法对CT,MR设备产生的病人影像数据进行重建而生成的能反映空腔器官立体结构和内部表面形态的图像。而传统基于CPU的虚拟内窥镜技术绘制速度慢,交互响应时间长,影响医生的实时观察诊断。随着计算机技术的发展,图形处理器(Graphics Processing Unit,GPU)越来越强大,在图形图像处理能力上已超越通用CPU。GPU是图形处理单元,它的强大浮点运算能力使光线投射算法被改进并在GPU上运行。基于GPU的光线投射算法使得虚拟内窥镜即可以加快体数据的绘制速度,也可以实现虚拟内窥镜的实时交互漫游,并通过调整视角、变动视距来根据用户的意愿对空腔内表面进行检查,以帮助医疗工作者诊断。

1 交互式虚拟内窥镜系统组成

虚拟内窥镜系统[2]的实现需要经过以下几个过程:获取原始医学图像数据;对原始图像数据进行图像分割,获得所需的图像目标区域;利用分割后目标区域求空腔器官中心线;对处理后的图像数据进行三维面绘制或者对原始数据进行三维体绘制;设置虚拟相机,沿着中心线对三维空腔进行自动漫游观察;设计交互漫游方式,对特殊地方进行交互控制检查。

1.1 图像分割

对原始图像数据的分割可以得到所需要的目标器官区域的图像,同时提高器官组织的面绘制速度,便于提取空腔器官中心路径。本文使用的是阈值分割算法[3],首先选定目标种子点,将与种子点具有相似灰度值的像素集归并到种子点所在区域。设原始图像灰度值函数为f(i,j),分割后图像像素灰度函数为g(i,j),给定与种子点灰度值相似的合适灰度值范围(T1,T2),并作为图像分割的阈值,然后进行二值化处理:将图像中所有像素点的灰度值与种子点的灰度值比较,在阈值范围内的像素点的灰度值置为255,在阈值范围外的像素点的灰度值置为0,即:

通过上式对原始图像数据进行分割,结果如图1、图2所示。 [ 图1 原始图像 图2 单种子点分割]

1.2 中心路径提取

虚拟内窥镜自动漫游需要事先提取虚拟相机的漫游路径。而当漫游路径为空腔管道的中心线时,虚拟相机视角最大化,漫游效果最佳,并且可以避免漫游过程中出现穿壁、视角不好等问题。

虚拟内窥镜系统应用研究中常用的中心路径提取算法[4]有以下几种:

(1) 手工标定法,即人工手动对二维切片序列中有目标器官的切片标定空腔的中心点,然后通过插值方法将这些中心点连接成中心路径。虽然这种方法不需要对原始图像进行分割处理,但是因为所要处理的结肠图像数据较大,切片较多,所以此方法会非常耗时,较难实行。

(2) 拓扑细化法,需要在保证不改变器官拓扑结构前提下,对所有体素进行扫描,检测并剔除物体最外层体素,然后重复这一过程,直到物体只剩单体素宽为止。在重复剔除体素过程中,需要对每个体素进行检测,判断其是否为最外层体素,并且检测算法较为复杂,造成拓扑细化法计算量较为庞大,需要后续的修正算法。

(3) 距离变换法,是虚拟内窥镜研究中比较常用的路径提取方法,本文便是采用基于距离变换的改进算法[5]提取的中心线。该方法原理是先对空腔器官内所有点赋一个到边界的最小距离值为该点的边界距离值,所以中心路径上的点都具有最大的边界距离值。

距离变换法首先需要对分割后的二值图像建立边界距离场,对如图3所示的图像体素结构采用简单距离方法计算所有空腔内点到边界的最小距离值;然后通过求出空腔内所有点到用户指定源点的距离值,建立源距离场,最后在源距离场中值相同的体素点中,求出边界距离值最大的点,此点便是中心路径上的点。

1.3 三维重建

三维重建是虚拟内窥镜的基础,目的是绘制出尽可能接近现实的虚拟环境效果。常用到的绘制方法包括面绘制和体绘制,而两者最大的区别在于面绘制重建过程中需要产生中间模型,而体绘制直接对三维体数据进行重建显示,所以面绘制方法绘制效果不如体绘制更真实,但基于传统体绘制的虚拟内窥镜在实时相应较差。考虑GPU的内部管线是专门为图形处理而设计的,在处理图像上它比CPU具有更多的优势,本文三维重建借助于基于GPU的光线投射算法,提高三维重建的速度,以满足交互式虚拟内窥镜在实时性和逼真性两方面的要求。图4即为采用基于GPU的光线投射体绘制算法[6]对410张512×512的结肠部位图像的绘制效果。

1.4 虛拟相机漫游

虚拟内窥镜[7]通过设置虚拟相机并置在空腔中,模拟传统内窥镜头来实现漫游。虚拟相机漫游方式分为手动漫游、自动漫游、交互漫游。交互漫游结合了介于前两种漫游方式之间,避免了手动漫游的复杂操作和自动漫游缺乏交互性,它可以由用户控制自动漫游的起始,并在局部位置进行交互式漫游,以便更仔细地观察诊断。交互漫游虽然需要在事先提取的中心路径上移动,然而它能避免迷失方向并保持交互特性。

2 交互式内窥镜漫游实现

本系统需要借助于可视化处理工具包(Visualization Toolkit,VTK)[8]来实现,并且需要和Visual Studio 2008配置C++语言开发环境。

2.1 基于GPU的光线投射算法

VTK是开源工具包,主要应用于计算机图形学、图像处理和可视化等方面。并且VTK支持跨平台运行。现在大部分版本的VTK支持GPU运算,且具有多种着色器,方便提高绘制速度和实时交互以及实现基于GPU的光线投射体绘制算法[9]。

(1) 读取医学结肠部位图像数据和设置颜色传输函数和不透明度传输函数。进行读入数据需要使用通过DICOM图像读取类vtkDICOMImageReader创建的对象reader来读入:

vtkDICOMImageReader*reader=vtkDICOMImageReader::New();

reader⁃>SetDirectoryName(dirname);

其中,dirname为数据存放位置;体数据场中的数据属性应与光线投射算法中光线成像参数相对应,在用户关心的区域,对不同灰度值体素赋予不同颜色值和不透明度值。颜色值通过VTK中颜色传输函数类vtkColorTransferFunction创建的对象colorFun设置,如:colorFun⁃>AddRGBPoint (22.82,0.88,0.60,0.29,0.33,0.45);不透明度值需要通过不透明度传输函数类vtkPiecewiseFunction创建的对象opacityFun设置,如:opacityFun⁃> AddPoint(22.82,0.42,0.33,0.45)。

(2) 设置映射函数及其属性函数。为了提高绘制效率,此处使用基于GPU加速的绘制函数类vtkGPUVolumeRayCastMapper创建的对象mapper,并加载上一过程读入的数据mapper⁃>SetInputConnection (reader⁃> GetOutputPort())。然后对绘制过程的一些属性进行设置,建立体数据属性类vtkVolumeProperty的对象property。加载颜色传输函数property⁃>SetColor(colorFun)和不透明度传输函数property⁃>SetScalarOpacity (opacityFun)。并对光线系数、插值方式和反射系数等进行设置:

volumeProperty⁃>ShadeOn();

volumeProperty⁃>SetInterpolationTypeToLinear();

volumeProperty⁃>SetAmbient(0.1);

volumeProperty⁃>SetDiffuse(0.9);

volumeProperty⁃>SetSpecular(0.2);

volumeProperty⁃>SetSpecularPower(10);

volumeProperty⁃>SetScalarOpacityUnitDistance(0.891 9);

(3) 建立体数据vtkVolume类的对象volume,并将数据映射函数和设置好的体数据属性加载进来:

volume⁃>SetMapper(mapper);

volume⁃>SetProperty(property);

(4) 设置绘制器和绘制窗口。首先通过建立vtkRenderer类的对象renderer加载绘制体数据renderer ⁃>AddVolume(volume);然后建立绘制窗口vtkRenderWindow类对象renWin,并加载绘制对象renWin⁃>AddRenderer (renderer),以及设置窗口大小renWin⁃>SetSize(width, height);最后开始窗口绘制renWin⁃>Render()。

2.2 交互式漫游方式的设计与实现

虚拟内窥镜漫游[10]的实现是通过定义一个虚拟相机即vtkCamera类对象camera,并通过对其位置和焦点进行设置以观察空腔内表面。自动漫游便是将camera设置在已提取的中心路径上自动移动来实现的。交互式漫游既需要设计较为人性化的手动漫游操作方式,也需要与自动漫游相结合,是一种可以快速自动漫游检查空腔内壁,并且在用户感兴趣的局部可以进行人性化的交互操作以便详细检查的漫游方式。

本系统采用VTK中的观察者/命令(Observer/Command)设计模式。首先实例化交互响应类vtkRenderWindowInteractor的对象iRen和交互方式类vtkInteractorStyleTrackballActor的对象style,并通过iRen⁃>SetInteractorStyle(style)加载进来并开始交互iRen⁃>Initialize(),iRen⁃>Start()。其次要通过vtkCommand类派生的自己需要的回调函数类vtkKeyPress,并在其函数Execute()中添加自己的交互方法,接着在主函数中实例化vtkKeyPress类对象keypress。然后在交互事件中添加观察者iRen⁃>AddObserver(vtkCommand::KeyPressEvent, keypress),也就是键盘事件按下发生时程序调用keypress中的Execute()事件。

在Execute()中需要有人性化的手动交互方式和自动漫游方式,以及两者灵活的结合切换。首先需要提取当前相机的位置点(position)、焦点(focal)和视平面法向量(normal):

camera⁃>GetPosition(position);

camera⁃>GetFocalPoint (focal);

camera⁃> GetViewPlaneNormal (normal);

然后通过对位置点和焦点的修改来控制相机前进后退、左移右移、上移下移和上下左右的旋转,并使用switch case语句进行选择,如:

position[i]±=coe*normal[i];

focal[i]±coe*normal[i] (i=1,2,3);

选择i中任意两个进行加或减运算,并通过coe来控制相机移动距离的倍数大小,然后将改变过的位置和焦点重新赋给相机:

camera⁃>SetPosition(position);

camera⁃>SetFocalPoint(focal);

而通过camera⁃>Yaw(±coe), camera⁃>Pitch(±coe),分别控制物体沿相机位置点左右和上下旋转的正负角度。最后将变化的相机重新绘制renWin⁃>Render()。在交互操作的过程中通过case选择自动漫游[11]后,相机便开始沿着已提取的中心线移动,此过程中需要头文件conio.h包含的函数kbhit()检测控制台是否有键盘输入。在自动漫游至感兴趣区域时,用户在控制台输入键盘命令,退出自动漫游,切换为手动交互操作。在检查控制台是否有键盘输入时,需要检测键盘输入的字符个数然后将此次所有的键盘输入都清空或提取出来,以免之前的键盘输入对下一次从自动漫游切换手动交互造成影响,此时程序为while(kbhit()){getch();},即如果控制台有键盘输入,便将输入字符提取出来,直到清空了键盘缓冲区,然后退出自动漫游。

2.3 實验运行结果

本实验的数据为512×512×410,实验环境:Windows 7 32位系统,Visual Studio 2008,VTK,计算机配置:Intel Core(TM) i7⁃3770 CPU @3.40 GHz,3.49 GB内存,GPU AMD HD7470,实验对比基于CPU和基于GPU加速的光线投射算法的绘制时间,以及本文交互操作响应的时间,时间取5次结果的平均值,实验具体时间如表1所示。

s

从表1中可看出基于GPU的光线投射算法的绘制时间。基于CPU的耗时比本文设计的交互操作绘制耗时多了5~7倍,在进行交互式漫游切换时的耗时与自动漫游距离相关,也是本系统更能灵活自如切换漫游方式。系统还比较了基于CPU的虚拟内窥镜和基于GPU的虚拟内窥镜的漫游时的绘制效果,如图5所示,图5(b)列为本课题使用GPU的虚拟内窥镜漫游效果。从图中可以看出基于GPU的虚拟内窥镜漫游时效果更清晰,并且交互时所需要的响应时间更短,所以本系统能够实现实时性的交互绘制、人性化易操作的交互方式并且绘制效果逼真等要求,以实现辅助医生临床诊断的要求。

3 结 语

由于虚拟内窥镜技术在辅助医生检查和诊断空腔器官疾病中的重要作用,以及现代医学成像设备所获取的庞大的图像数据集,迫切需要快速实时、灵活易操作的虚拟内窥镜交互漫游技术。对于较大医学体数据集,本文对其进行分割处理后采取快速的中心路径提取,并且利用GPU加速的光线投射体绘制算法来解决绘制和交互速度慢的缺点。然后利用本文设计的交互漫游方式实现了人性化的手动交互操作方式以及自动漫游和手动交互灵活切换的操作方式,满足了临床诊断所要求的绘制效果真实、快速实时交互、易操作等特点。

参考文献

[1] BELINA S, CUK V, KLAPAN I. Virtual endoscopy and 3D volume rendering in the management of frontal sinus fractures [J]. Collegium antropologicum, 2009, 33 Suppl (2): 43⁃51.

[2] 高向军,田联房,王立非,等.虚拟内窥镜系统的关键技术分析[J].计算机应用研究,2008,25(7):1956⁃1959.

[3] 付云凤.基于阈值的图像分割研究[D].重庆:重庆大学,2013.

[4] 刘大鹏,孟晓林,张煜,等.虚拟结肠镜的快速中心路径提取算法[J].中国医学物理学杂志,2010,27(6):2254⁃2257.

[5] 胡明.基于距离变换的虚拟内窥镜路径规划研究[D].天津:河北工业大学,2014.

[6] BOZORGI M, LINDSETH F. GPU⁃based multi⁃volume ray casting within VTK for medical applications [J]. International journal of computer assisted radiology & surgery, 2014, 10(3): 293⁃300.

[7] 杜阿安,杨新,薛海紅,等.心脏三维虚拟内窥镜系统[J].生物医学工程学杂志,2012(5):974⁃982.

[8] 孟晓林.基于VTK的虚拟内窥镜系统的研究[D].广州:南方医科大学,2010.

[9] 吕晓琪,张传亭,任国印,等.基于图形处理器的肺部及病灶区域四维可视化技术[J].中国医学影像技术,2013(11):1901⁃1905.

[10] STRAUSS M, WITTMANN W, STRAUSS G, et al. Virtual endoscopy on a portable navigation system for ENT surgery [J]. Studies in health technology & informatics, 2008, 132(1): 490⁃492.

[11] HONG W, PALADINI G. Image⁃based path planning for automated virtual colonoscopy navigation: US8514218 [P]. 2013⁃08⁃22.

相关热词搜索: 内窥镜 技术研究 漫游 加速 虚拟

版权所有:无忧范文网 2010-2024 未经授权禁止复制或建立镜像[无忧范文网]所有资源完全免费共享

Powered by 无忧范文网 © All Rights Reserved.。冀ICP备19022856号